Dokploy 完全指南:在你的 VPS 上复刻 Vercel 自动化部署体验
结论先行:手上有两个以上常驻运行的项目、且掌握基础 Linux 运维的独立开发者,在一台每月 5 至 10 美元的 VPS 上搭建 Dokploy 是替代 Vercel 的终极解法。它把 Git Push 自动构建、Traefik 全自动 HTTPS 证书、多域名路由、环境变量隔离与独立数据库全部复刻到自建环境,一台 2 核 4G 的机器承载十几个微服务依然成本恒定。生产部署记住三条红线:必须配置 4GB Swap 避免 Node 编译 OOM 崩溃、数据库密码与存储严格走内网隔离、每周定时通过 S3/R2 异地冷备
/etc/dokploy元数据。
0、写在前面
在出海开发或运营 SaaS 产品时,商业化验证期每一分服务器预算都应该花在刀刃上。
许多开发者在上线第一个项目时习惯使用 Vercel、Railway 或 Render:
- 初期体验顺畅:代码提交到 GitHub 仓库,平台自动完成打包并在几秒内上线;
- 后期成本失控:随着项目增加、背景常驻 Worker 增多,平台免费配额迅速告罄。多开几个 PostgreSQL 实例,每月账单立刻突破 50 至 100 美元;
- 运行机制限制:Serverless 存在冷启动延迟,难以支持长连接 WebSocket 或长耗时定时脚本。
纯手工在 VPS 上折腾 Docker Compose 和 Nginx 虽然便宜,但每次更新代码都要手动 SSH 进服务器拉取并重启,严重消耗专注力。
Dokploy 填补了这两者之间的鸿沟:在属于你自己的 VPS 上,搭建一套功能完备的自托管 PaaS。它整合了 Docker、Traefik 与 Nixpacks,让你拥有 Vercel 级别的自动化交付流水线,而每月的硬性支出仅有一台普通 VPS 的固定租金。
1、期望目标
阅读并实操本文后,你将达成以下目标:
- [ ] 完成 VPS 基础设施规范配置(系统基线、4GB Swap 分区创建与安全组放行);
- [ ] 掌握 Dokploy 生产级一键部署与 Traefik 自动化泛域名 SSL 证书配置;
- [ ] 深度打通 GitHub/GitLab 仓库,配置 Webhook 实现代码推送自动化静默构建;
- [ ] 掌握生产环境(
main分支)与预发布环境(staging分支)多环境隔离部署; - [ ] 在内网安全环境中一键创建持久化 PostgreSQL 与 Redis 实例;
- [ ] 建立基于对象存储(S3 / Cloudflare R2)的系统配置与数据库自动化异地备份。
2、生产架构设计与选型分析
Dokploy 核心架构
Dokploy 底层采用微内核模块化架构:
- 网关路由层 (Traefik):原生监听 80 与 443 端口,负责全自动申请/续期 Let’s Encrypt 证书,并依据域名与路径将外部流量反向代理到内部容器;
- 控制管理层 (Dokploy Core):Node.js 编写的管理面板,提供 Web 控制台、API 以及 Webhook 接收器;
- 通用构建引擎 (Nixpacks / Dockerfile):底层默认采用 Railway 开源的 Nixpacks,根据项目代码自动识别运行语言与依赖项,无需手写复杂 Dockerfile;
- 应用容器层:每一个部署的应用和自建的数据库都是标准的独立 Docker 容器,运行在内部自定义网桥上。
3、生产环境准备与安装基线
3.1 VPS 硬件配置与 Swap 优化
配置底线:
- 最低配置:1 核 CPU、2GB 内存(适合个人小规模测试);
- 生产推荐:2 核 CPU、4GB 内存、40GB+ NVMe 固态硬盘(跑 5 至 10 个项目)。
由于现代前端框架(Next.js、Nuxt.js)在打包构建时瞬间内存消耗极大,未设置虚拟内存的小服务器极易因触发 OOM Killer 而中途崩溃。
执行以下命令快速配置 4GB 物理 Swap 分区:
1 | # 1. 检查当前是否已启用 Swap |
3.2 域名与 DNS 泛解析配置
在域名解析商(如 Cloudflare)添加两条记录,直接指向你的服务器公网 IP:
1 | 类型 名称 目标内容 代理状态 用途说明 |
注意:初次申请 SSL 证书时,Cloudflare 必须关闭黄色小云朵代理,直接暴露出原始 IP,确保 Let’s Encrypt 的 HTTP 校验挑战能够直连服务器。
3.3 一键部署 Dokploy
确认服务器防火墙已放行 80、443 与 3000 端口后,运行安装指令:
1 | curl -sSL https://dokploy.com/install.sh | sh |
脚本会自动安装最新版 Docker 引擎,拉起 Dokploy 与 Traefik 容器,并将持久化数据存储在 /etc/dokploy。
4、全流程实操部署演练
4.1 初次访问与管理员绑定
在浏览器打开:
1 | http://<你的服务器IP>:3000 |
- 注册主管理员账户并登录;
- 点击左下角 Settings → Server;
- 将 Server Domain 填写为
dokploy.yourdomain.com,开启 Enable HTTPS (Let’s Encrypt) 并输入你的通知邮箱; - 保存后,Traefik 会在后台完成证书申请并自动跳转至加密 HTTPS 链接。
4.2 配置 GitHub Webhook 自动化流水线
以部署一个 Next.js 全栈应用为例:
- 进入 Dokploy 后台,点击 Projects → Create Project(命名为
saas-suite); - 点击 Create Service → 选择 Application;
- 在 Provider 选择 GitHub 或 Git:
- 填入仓库地址
https://github.com/yourname/my-saas-app; - 填入构建分支
main;
- 填入仓库地址
- Build Type 默认保持 Nixpacks;
- 点击 Domains → 添加二级域名
my-app.apps.yourdomain.com,容器内部端口指定为3000,勾选 HTTPS; - 在 Deployments 页面复制 Webhook URL,并将其粘贴至 GitHub 仓库的 Webhooks 配置中。
从此时起,本地每次提交代码运行:
1 | git push origin main |
Dokploy 会自动拉取最新源码,通过 Nixpacks 执行依赖安装与编译,平滑更新容器并接入生产流量。
4.3 多分支部署策略(生产 vs 预发布)
在团队协作或功能测试阶段,切忌将未经测试的代码直接发布到生产环境。
利用 Dokploy 可以极低成本搭建独立测试环境:
- 在同一项目中,新建一个名为
api-staging的应用; - 代码分支配置为
staging; - 域名配置为
staging-api.apps.yourdomain.com; - 环境变量中配置测试数据库连接。
这样,开发分支与生产分支完全隔离,测试通过后仅需在 GitHub 提 PR 合并至 main,即可触发正式站更新。
4.4 生产级数据库创建与内网通信
自建 PaaS 最吸引人的能力是「数据库免费无限开」:
- 点击 Create Service → 选择 Database;
- 选择 PostgreSQL,输入数据库名称、初始用户与高强度密码;
- 点击 Deploy。
Dokploy 会自动创建独立的数据卷用于保障持久化。容器成功拉起后,界面会生成内部主机名(例如 saas-suite-postgres:5432)。
在业务应用的环境变量配置中,直接注入内网连接串:
1 | DATABASE_URL=postgresql://postgres:MySecurePassword2026@saas-suite-postgres:5432/production_db |
此连接完全运行在 Docker 内部专用隔离网络中,外部公网无法扫描探测,免去任何端口暴露风险。
5、自动化灾备方案
5.1 Dokploy 元数据异地同步
Dokploy 的所有面板配置、域名映射规则以及 Traefik 的 SSL 证书都存放在宿主机的 /etc/dokploy 目录下。
编写一个简单的定时脚本,每天凌晨将该目录打包备份至 Cloudflare R2 或 AWS S3:
1 |
|
配合 crontab -e 设置每日执行,即可实现高枕无忧的灾难恢复能力。
6、生产排错与高频避坑清单
避坑 1:编译 Next.js 时容器报错 Exit 137
- 根因:内存不足触发了 Linux OOM Killer。
- 解法:检查是否未配置 Swap。严格按照本文 3.1 节开辟 4GB 的 Swap 分区。
避坑 2:域名已解析但 SSL 证书无法签发
- 排查步骤:
- 确认 Cloudflare 代理状态为 DNS Only(灰云),而非 Proxy(黄云);
- 确认服务器 80 端口可正常连通。Let’s Encrypt 的 HTTP-01 验证必须通过 80 端口校验;
- 确认未超出 Let’s Encrypt 每域名每周 50 次签发频次上限。
避坑 3:修改环境变量后应用不生效
- 原因:部分全栈框架(如 Next.js 带有
NEXT_PUBLIC_前缀的变量)是在**构建编译阶段(Build Time)**被静态固化进 JS 代码的,而非运行时读取。 - 解法:修改环境变量后,必须点击 Rebuild(重新完整构建打包),而不是单纯点击 Restart 重启容器。
7、FAQ
Q1:Dokploy 与 Coolify 相比,主要优势是什么?
Dokploy 最大的优势是极简与轻快。Coolify 功能虽然极度丰富,但本身容器体积庞大,底噪常驻内存接近 2GB,在小机器上运行略显吃力。Dokploy 仅保留核心的 Git 自动化部署、Traefik 路由与数据库管理,常驻底噪仅 300MB - 500MB,单核 2G VPS 也能顺畅运作。
Q2:商业化项目使用 Dokploy 会有版权或收费风险吗?
没有。Dokploy 基于宽松的 Apache 2.0 协议开源,你可以完全自由地将其用于商业产品部署、自用服务托管或团队内部平台,无需向官方支付任何授权月费。