将 Web Apps 部署到 VPS 应该如此简单

发布: (2026年5月3日 GMT+8 08:12)
6 分钟阅读
原文: Dev.to

I’m happy to translate the article for you, but I need the actual text of the post. Could you please paste the content you’d like translated (excluding the source line you already provided)? Once I have the text, I’ll keep the source link unchanged and translate the rest into Simplified Chinese while preserving the original formatting, markdown, and any code blocks or URLs.

为什么部署到 VPS 仍然感觉复杂

我喜欢服务器——不是那种“让我在周六手动调优 nginx”的方式,而是那种“这台 $6 的 VPS 可能就能跑掉我一半的副项目”的方式。
对于许多中小型 web 应用来说,应用本身并不是难点;难点在于周边的琐事:

  • 构建应用
  • 将其放到服务器上
  • 启动它而不丢失请求
  • 配置 HTTPS
  • 将机密信息从随意的 .env 文件中剥离
  • 在不通过 SSH 挖掘的情况下查看日志
  • 让本地开发环境更像生产环境,使得 cookie 和 OAuth 不再怪异

这些都不是不可能的事;它们只是一堆小任务的叠加。正是这堆任务促使我开始开发 Tako

介绍 Tako

Tako 旨在让部署感觉像这样简单:

tako init
tako deploy

这并不是因为这两个命令本身有魔力,而是因为大多数应用在提供 HTTP 服务之前并不需要自定义的基础设施方案。

Tako 是一个 CLI 加上一个小型服务器运行时。你只需在 VPS 上安装一次服务器,在本地添加该服务器,然后从项目目录进行部署。

Deploy flow

The flow is intentionally plain:

  1. Build locally
  2. Package the output
  3. Upload it over SSH/SFTP
  4. Unpack it on the server
  5. Start the new version
  6. Roll traffic over without dropping the old version first

No registry. No image push. No Kubernetes object graph. No “where did this container layer come from?” moment at 1 AM.

运行时和代理模型

Tako 将你的应用作为普通进程运行。对于 JavaScript 和 TypeScript 应用,提供了一个小型的 tako.sh SDK。你的应用通过报告它绑定的端口来告诉 Tako 已经准备就绪,随后服务器代理即可安全地将流量路由到它。

在生产环境中:

  • 应用实例绑定到分配的端口上的 127.0.0.1
  • Tako 的代理位于前端,处理公共路由,并仅将请求转发给健康的实例。

好处

  • 滚动部署可以在移除旧实例之前启动新实例。
  • 低流量应用可以选择零扩展。
  • 日志和状态附加到 Tako 实际启动的进程上。
  • 应用无需了解公共端口或主机名。

配置

The config is meant to stay boring too:

name = "my-app"
runtime = "bun"
preset = "tanstack-start"

[build]
run = "bun run build"

[envs.production]
route = "my-app.example.com"
servers = ["main"]

更多选项可在需要时使用(多个环境、服务器、构建阶段、发布命令、密钥、扩展设置),但基本结构就是“这里是我的应用,这里是它应该运行的地方”。

本地开发

大多数部署工具只停留在生产环境,留下了一堆端口:

  • http://localhost:3000
  • http://localhost:5173
  • http://localhost:8787

当你需要安全 Cookie、OAuth 回调、Service Worker、第二个应用或 webhook 隧道时,本地设置会突然拥有自己的“个性”。

tako dev 试图让本地应用感觉像真实的应用:

tako dev

它为你的应用提供一个带 HTTPS、DNS 和本地代理的 .test 域名。你不必记住端口,只需打开类似:

https://my-app.test/

目标并不是炫技,而是消除那些让本地开发与生产环境产生差距的细小“纸割”。

当 Docker 更合适时

  • 如果你的应用需要强大的操作系统级隔离,容器可能是更好的选择。
  • 如果你的团队已经有一套可用的容器流水线,最好不要为了好玩而丢弃它。
  • 如果你在运行一堆相互独立且依赖奇怪系统包的堆栈,Docker 是一个合理的边界。

Tako 更具主观性:它专注于常见的 Web 应用运行时,如 Bun、Node 和 Go,然后尝试让这条路径既快速又平稳。这个权衡正是其核心所在。

入门

该项目是开源的。文档在这里:

快速安装

curl -fsSL https://tako.sh/install.sh | sh
tako init
tako dev

部署到服务器

sudo sh -c "$(curl -fsSL https://tako.sh/install-server.sh)"
tako servers add 
tako deploy
0 浏览
Back to Blog

相关文章

阅读更多 »