Dokku 调研:32K Stars 的”最小 PaaS”,13 年还在更新,Heroku 关停后的开源救星

53次阅读
Dokku 调研:32K Stars 的

一个让你在 $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 最适合的三个场景:

  1. Heroku 难民 —— 2022 年 Heroku 关停免费层后, 大量小项目 / 独立开发者迁移到 Dokku, 体验零成本
  2. 个人 / 小团队 SaaS —— $5-10 VPS, 跑 5-10 个小 app, 完全够用
  3. 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 是不是你 ” 独立开发者的标准部署平台 ”。

参考

研究文档(引用来源参考)

(no reference document available)

正文完