
一个让你在 $5 VPS 上跑出 Heroku 体验的开源 PaaS。
git push部署、Heroku buildpacks 兼容、Postgres/MySQL/Redis 一键装。13 年迭代、32K stars、MIT 协议、Shell + Go 双栈,2026 年仍然是 ” 自托管最简 PaaS” 的标杆。
写在前面
2022 年 11 月,Heroku 宣布停止免费 dyno。
一时间, 无数小项目、独立开发者、PoC 团队 一夜之间失去部署平台——他们的应用被绑死在 Heroku 的 git push 体验上, 迁移到 AWS/GCP 又是天堑。
Dokku 在那之后迎来了一波回流: 它做的事情 13 年没变过——给你一台 VPS, 让你 git push 上去, 自动 build、运行、暴露公网。它 就是单机版的 Heroku, 没有集群、没有 K8s、没有企业级特性, 但这正是它的卖点:
一个人、一台 $5 VPS,30 分钟搞定从代码到公网的全链路。
跟 Coolify / Dokploy 相比,Dokku 是“ 命令行流 ”, 不是 ”Web UI 流 ”——你用 SSH 跟它交互, 而不是打开浏览器拖拽。这是一种取舍:Dokku 学习成本更低(懂 Heroku 就懂 Dokku), 但日常操作没有 Coolify 那么直观。
一、它解决什么问题
一句话卖点 : 最小的 PaaS 实现——单机 VPS 上的 Heroku,Heroku buildpacks 兼容,git push 部署。
| 维度 | 信息 |
|---|---|
| 项目名 | Dokku |
| 创始人 | Jeff Lindsay(@progrium),2013 年起 |
| Stars | 32,104 |
| Forks | 2,069 |
| License | MIT |
| 主语言 | Shell 49% + Go 49% + Makefile + Python |
| 创建时间 | 2013-06-08(13 年常青树, 比 Coolify 早 4 年) |
| 最近 Push | 2026-08-12(昨天, 极度活跃) |
| Open Issues | 25(极其健康的 issue 率) |
| Subscribers | 336 |
| 支持平台 | Ubuntu 22.04/24.04 / Debian 12 / RHEL 9 / macOS |
| 官方插件数 | 30+ officially supported |
| 在线 Demo | https://dokku.com/ |
二、核心能力 1:Heroku 体验零迁移成本
2.1 git push 部署
# 1. 准备一个简单的 Node.js 应用
mkdir myapp && cd myapp
cat > app.js <<EOF
const http = require('http');
http.createServer((req, res) => res.end('Hello from Dokku!')).listen(3000);
EOF
echo '{}' > package.json
# 2. 加 Dokku 为 git remote
git init && git add . && git commit -m "init"
git remote add dokku dokku@your-vps-ip:myapp
# 3. push 即部署
git push dokku main
# → 自动检测 Node.js(buildpack)
# → 自动 npm install
# → 自动分配端口 + 反代 + 暴露公网
# → 应用在 http://myapp.your-vps-ip 可访问
核心体验: 跟 Heroku 完全一样 —— 同样的 buildpack 协议, 同样的 Procfile 配置, 同样的环境变量注入。
2.2 Heroku buildpacks 兼容
支持的 buildpack 涵盖几乎所有主流语言:
| 语言 | Buildpack |
|---|---|
| Node.js | heroku-buildpack-nodejs |
| Python | heroku-buildpack-python |
| Ruby | heroku-buildpack-ruby |
| Go | heroku-buildpack-go |
| Java | heroku-buildpack-java |
| PHP | heroku-buildpack-php |
| Scala | heroku-buildpack-scala |
| Clojure | heroku-buildpack-clojure |
Heroku 迁移场景 : 把 Heroku 上的应用 git remote set-url 改一下, 直接 push 到 Dokku, 代码、Procfile、buildpack、环境变量格式完全不动。
2.3 Procfile 工作流
# 项目根目录 Procfile
web: node app.js
worker: node worker.js
Dokku 会把 web 进程通过 nginx 暴露公网,worker 跑在后台。
2.4 一键 Heroku 命令兼容
| Heroku 命令 | Dokku 等价 |
|---|---|
heroku config:set KEY=value |
dokku config:set KEY=value |
heroku ps:scale web=2 |
dokku ps:scale web=2 |
heroku logs --tail |
dokku logs myapp |
heroku run bash |
dokku run myapp bash |
heroku addons:create heroku-postgresql |
dokku postgres:create myapp-db |
对 Heroku 用户的迁移成本: 接近零。
三、核心能力 2: 单机完整 PaaS 能力
3.1 内置服务(30+ 插件)
Dokku 通过插件机制扩展,officially supported 30+:
| 类别 | 插件 |
|---|---|
| 数据库 | postgres / mariadb / mysql / mongodb / redis / elasticsearch |
| 存储 | persistent_storage / s3 |
| Web 服务器 | nginx |
| 进程管理 | supervisord / systemd |
| 域名 /SSL | letsencrypt / domains |
| 日志 / 监控 | logstash / prometheus |
| CI/CD | git (push deploy) / github-actions |
| 多语言运行时 | herokuish(buildpack 容器化) |
| 备份 | backup |
3.2 一条命令起 PostgreSQL
dokku postgres:create myapp-db
dokku postgres:link myapp-db myapp
# 自动注入 DATABASE_URL 到 myapp 环境变量
# → myapp 重启, 连接可用
对比 Heroku:Heroku Postgres 收费 ($9/ 月起),Dokku Postgres 零成本。
3.3 域名 + 自动 SSL
dokku domains:set myapp example.com
dokku letsencrypt:set myapp email you@example.com
# 自动申请 Let's Encrypt 证书 + nginx 配置
# → https://example.com 自动就绪
3.4 进程管理 + 零停机
dokku ps:scale myapp web=2 worker=1
dokku ps:restart myapp
dokku deploy:retry myapp # 重新部署最近一次 push
3.5 单机 + Docker Swarm 两种模式
| 模式 | 适用 |
|---|---|
| 单机模式(默认) | 单 VPS, 所有 app 跑在一台机器 |
| Swarm 模式(实验性) | 多节点 Docker Swarm, 横向扩展 |
⚠️ 注:Dokku 主线仍是单机, 不像 Coolify v4 加了 Swarm/K8s 路线。这是它的 ” 小而美 ” 定位。
四、Go 重构进行中(2024+)
Dokku 老版本几乎全是 Shell 脚本(2013-2023),2024 年起大规模引入 Go 重写:
Shell 1,630,696 lines ← 老插件 /plugin 系统
Go 1,610,344 lines ← 新核心:scheduler / networking / storage
重构动机:Shell 在并发、错误处理、跨平台上有天然劣势。Go 重写后:
- 安装速度提升(从 5-10 分钟 → 1-2 分钟)
- 错误处理更鲁棒
- 未来支持 K8s / 多节点更容易
现状(2026-08): 核心命令仍依赖 Shell, 但新功能逐渐用 Go 实现。Shell 完全替换还需要 2-3 年。
五、对比 Coolify / Dokploy / CapRover / Heroku
| 维度 | Dokku | Coolify | Dokploy | CapRover | Heroku |
|---|---|---|---|---|---|
| Stars | 32K | 6 万 + | 36K | 13K | 闭源 |
| License | MIT | Apache-2.0 | Apache-2.0 | Apache-2.0 | 商业 |
| 诞生 | 2013 | 2017 | 2023 | 2017 | 2007 |
| 操作方式 | SSH + 命令行 | Web UI | Web UI | Web UI | Web UI |
| 核心定位 | 单机 Heroku 替代 | 自托管 PaaS 全家桶 | Vercel 替代 | Dokku 现代化 | 商业 PaaS |
| 构建方式 | Heroku buildpacks | Docker + Buildpacks | Docker + Nixpacks | Docker Swarm | Heroku buildpacks |
| 数据库插件 | 30+ | 内置 + 280+ 模板 | 内置 | 17 一键应用 | 商业 add-ons |
| 多节点 | 实验性 Swarm | Swarm + K8s coming | Swarm + K8s | Docker Swarm | 商业 dyno |
| 学习曲线 | ⭐⭐(Heroku 用户 0 成本) | ⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐ |
| Heroku 兼容 | ✅ 原生 | ❌ | ❌ | ❌ | ✅ 母版 |
| Web UI 美观 | ❌(无 UI) | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| AI/LLM 集成 | ❌ | ❌ | ❌ | ❌ | ✅ |
| 价格 | 你的 VPS | 你的 VPS | 你的 VPS | 你的 VPS | $7+/dyno/ 月 |
结论:
- 选 Dokku: 你是 Heroku 老用户、要 git push 体验、不想要 Web UI、不想碰 K8s
- 选 Coolify: 你想要 Web UI + 多服务编排 + 280+ 一键应用模板
- 选 Dokploy: 你想要 Coolify 体验但更现代、想要 Vercel 风格
- 选 CapRover: 你想要 Dokku 风格但带 Web UI
- 选 Heroku: 你不差钱, 要 SLA、企业支持、AI 集成
六、实战:3 步跑通
6.1 一行脚本装 Dokku(5-10 分钟)
# 在 Ubuntu 22.04/24.04 VPS 上
wget -qO- https://dokku.com/install.sh | bash
# 自动装 Docker + Dokku + 依赖
# 完成后会提示设 SSH key, 把你的公钥加进去
6.2 装 PostgreSQL 插件
dokku plugin:install https://github.com/dokku/dokku-postgres.git
dokku postgres:create myapp-db
dokku postgres:link myapp-db myapp
# DATABASE_URL 自动注入
6.3 部署第一个 App(Node.js)
# 本地
mkdir myapp && cd myapp
cat > app.js <<EOF
const http = require('http');
http.createServer((req, res) => {res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello from Dokku!\n');
}).listen(process.env.PORT || 3000);
EOF
cat > package.json <<EOF
{"name": "myapp", "version": "1.0.0", "scripts": { "start": "node app.js"} }
EOF
git init && git add . && git commit -m "init"
git remote add dokku dokku@your-vps-ip:myapp
git push dokku main
# → 看 buildpack 检测、build、部署日志
# → 完成后会提示 http://myapp 可访问
整套流程从空白 VPS 到公网可访问 Node.js 应用:30 分钟以内。
七、风险与坑
| 风险 | 说明 | 缓解 |
|---|---|---|
| Go 重构未完成 | 核心命令仍依赖 Shell, 部分场景表现不一致 | 关注 release notes, 生产前先跑 1 周 |
| 单机架构 | 所有 app 跑一台 VPS, 扩容只能垂直 | 单 VPS 能撑 10-30 个小 app; 大型需要 K8s/Coolify Swarm |
| 无 Web UI | 全部靠 SSH + 命令行, 运维要熟悉 Linux | 新人不友好, 但运维老手觉得高效 |
| 域名 /SSL 配置繁琐 | 多域名 + 通配符证书需要手动 | 装 letsencrypt 插件, 日常域名 OK |
| 无内置监控 / 告警 | 第三方 grafana/prometheus 插件, 体验一般 | 配合外部 Prometheus 监控 |
| 数据库备份需手动 | postgres 插件无自动备份 | 写 cron 跑 pg_dump 到 S3 |
| 插件兼容性 | 30+ officially supported, 但社区插件质量参差 | 只用 officially supported 列表里的 |
八、总结
Dokku 最适合的三个场景:
- Heroku 难民 —— 2022 年 Heroku 关停免费层后, 大量小项目 / 独立开发者迁移到 Dokku, 体验零成本
- 个人 / 小团队 SaaS —— $5-10 VPS, 跑 5-10 个小 app, 完全够用
- PoC / Side Project —— 一个人 + 一台 VPS + 30 分钟, 搞定从代码到公网
一句话建议:
如果你是 Heroku 老用户、要 git push 体验、不想要 Web UI、不需要 K8s——Dokku 仍是 2026 年最稳的 ” 最小 PaaS”; 如果想要 Web UI 或多节点, 看 Coolify/Dokploy。
先试一周:DigitalOcean/Hetzner $5 VPS → 一行脚本装 Dokku → push 一个 demo Node.js app → 装 postgres 插件。这周你会决定 Dokku 是不是你 ” 独立开发者的标准部署平台 ”。
参考
- dokku/dokku — GitHub 仓库(32K stars,13 年)
- Dokku 官网 — 官方主页
- Dokku 文档 — 完整文档
- Dokku 插件列表 — 30+ officially supported
- Coolify 调研(266) — Coolify vs Dokku 路线对比
- Dokploy 调研(268) — Dokploy vs Coolify 对比
- Jeff Lindsay Twitter — 创始人推特
- Awesome Dokku — 生态资源汇总
研究文档(引用来源参考)
(no reference document available)