如果你已经会用 Docker,却不想每次上线都手写 Compose、配置反向代理和证书,Dokploy 是一个值得部署到 VPS 的自托管 PaaS。它把代码仓库、构建、容器、域名、HTTPS、数据库、日志和备份放进同一个面板,适合个人开发者、小团队和需要掌控服务器成本的 SaaS 项目。
这篇教程不只给出一条安装命令,还会说明 VPS 配置怎么选、安装前为什么必须检查端口、怎样连接 Git 仓库、如何配置域名和 HTTPS,以及备份与升级时最容易遗漏什么。
Dokploy 可以把 Git 仓库或 Docker Compose 项目部署到自己的服务器。你仍然拥有 VPS、数据库和容器,只是把重复的部署操作交给面板管理。
它更适合这些场景:
- 想用 VPS 自建 Vercel、Heroku、Railway 替代方案;
- 需要从 GitHub、GitLab、Gitea 或 Bitbucket 持续部署;
- 一台服务器上运行多个网站、API、Worker 和数据库;
- 希望统一查看构建日志、容器状态、域名和证书;
- 不想一开始就维护 Kubernetes。
如果你只运行一个长期不变的容器,Docker Compose 生产环境配置通常更简单。Dokploy 的价值在于多项目、频繁发布和团队协作。
Dokploy 官方当前建议至少 2GB 内存和 30GB 磁盘。这只是能顺利安装和构建的起点,不代表所有应用都能塞进 2GB。
| 使用规模 | 建议配置 | 适合场景 |
|---|---|---|
| 体验和轻量应用 | 2 核 2GB、30GB SSD | 静态站、小型 Node/Python API,不在本机跑重型数据库 |
| 常规生产环境 | 2–4 核 4GB、60GB SSD | 2–5 个应用,加一个 PostgreSQL 或 Redis |
| 多项目或本机构建 | 4 核 8GB、100GB NVMe | 多个服务、频繁构建、数据库、监控和备份 |
构建 Next.js、Java、Rust 镜像时,瞬时内存和磁盘占用会明显增加。预算有限时,宁可从 4GB 起步,也不要让构建进程和数据库争抢最后几百 MB 内存。更细的选择方法可参考 VPS 配置怎么选。
官方文档列出的测试系统包括 Ubuntu 20.04/22.04/24.04 LTS、Debian 10/11/12、Fedora 40 和 CentOS 8/9。新部署建议优先选择仍在维护期内的 Ubuntu LTS 或 Debian 12。
准备一个干净的公网 VPS,并确认:
- 你能通过 SSH 登录并取得 root 权限;
- 域名的 A 记录指向 VPS 公网 IPv4;
- TCP 80、443、3000 没有被 Nginx、Caddy、Apache 或其他面板占用;
- 云厂商安全组和系统防火墙允许安装阶段访问这些端口;
- 磁盘至少有 30GB 可用空间。
先检查端口:
sudo ss -lntp | grep -E ':(80|443|3000)\b' || true
如果有输出,先判断现有服务能否迁移。Dokploy 使用 Traefik 接管 80 和 443,直接安装到已经运行网站的机器上,很容易出现端口冲突。生产迁移应先准备新机或维护窗口。
在 root Shell 中运行官方安装脚本:
curl -sSL https://dokploy.com/install.sh | sh
如果服务器还没有 Docker,安装脚本会自动安装。完成后浏览器访问:
http://你的服务器IP:3000
立即创建管理员账号。不要把 3000 端口长期暴露给所有来源;先完成面板域名和 HTTPS,再关闭公网 IP 加端口入口。
若安装失败,先检查:
docker version
docker info
docker service ls
docker ps
sudo ss -lntp | grep -E ':(80|443|3000)\b'
Dokploy 使用 Docker Swarm。云服务器有多张网卡或自动识别错误时,可以显式指定广播地址:
curl -sSL https://dokploy.com/install.sh | sudo ADVERTISE_ADDR=你的服务器IP sh
先为面板准备一个独立子域名,例如 deploy.example.com,并把 A 记录指向 VPS。进入 Dokploy 的 Domains 设置,添加域名并启用证书。
确认 https://deploy.example.com 可以正常登录后,再按官方建议移除 IP:3000 的公开映射:
docker service update \
--publish-rm "published=3000,target=3000,mode=host" \
dokploy
顺序不能反。如果域名或证书还没生效就移除 3000 端口,你可能会把自己锁在面板外。
防火墙最终只需要对公网开放必要端口:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
更完整的 SSH、Fail2Ban 和防火墙策略可结合 VPS 安全加固指南。
在 Dokploy 中创建 Project,再添加 Application。常见流程是:
- 连接 GitHub、GitLab、Gitea 或 Bitbucket;
- 选择仓库和生产分支;
- 选择构建方式,例如 Dockerfile、Nixpacks 或静态站点;
- 填写应用监听的容器端口;
- 添加环境变量;
- 点击 Deploy,观察构建和运行日志;
- 添加应用域名并启用 HTTPS。
应用必须监听容器内的 0.0.0.0,不能只监听 127.0.0.1。例如 Node 应用应监听平台传入的 PORT,否则容器可能显示正在运行,但 Traefik 无法访问它。
不要把 .env、数据库密码或 API Key 提交到 Git。把生产变量放进 Dokploy 的环境变量设置,并区分构建期变量和运行期变量。修改变量后重新部署,确认新容器确实加载了新值。
Dokploy 的 Application 域名会通过 Traefik 动态配置;Docker Compose 项目修改域名后通常需要重新部署,让 Traefik 重新读取标签。
排查顺序:
dig +short app.example.com
curl -I http://app.example.com
docker service ls
docker service ps 服务名
docker service logs 服务名 --tail 100
重点确认四件事:
- DNS 是否真的指向当前 VPS;
- 80/443 是否被安全组或 UFW 拦截;
- 容器端口是否填成应用实际监听端口;
- 应用进程是否监听
0.0.0.0。
如果你需要理解自动证书和反向代理链路,可以继续看 Caddy 自动 HTTPS 指南。两者实现方式不同,但 DNS、端口和上游监听的诊断思路相同。
面板里“容器正在运行”不等于数据安全。至少要分别保护三类数据:
- Dokploy 自身的 PostgreSQL 和
/etc/dokploy; - 业务数据库;
- Docker named volumes 中的上传文件或 SQLite 数据。
Dokploy 的系统备份需要先配置 S3 兼容目的地。系统备份会打包 Dokploy PostgreSQL 与 /etc/dokploy,再上传到对象存储。业务数据库应另外配置定时备份;使用 named volume 的应用,还应启用 Volume Backups。
备份目的地不要和 VPS 在同一块磁盘上,否则服务器损坏时备份会一起丢失。至少每季度做一次恢复演练,验证凭据、归档和恢复步骤。可以直接套用 VPS 备份恢复演练清单。
更新到最新版的官方命令是:
curl -sSL https://dokploy.com/install.sh | sh -s update
生产环境不要看到更新就立刻执行。先完成系统备份和数据库备份,阅读发布说明,再选择低流量窗口更新。应用发布则应配置健康检查;健康检查失败时,Docker Swarm 才有可靠依据停止错误版本或执行回滚。
还要做到:
- SSH 只用密钥登录,关闭密码和 root 远程密码登录;
- 面板域名开启 HTTPS,不长期暴露 3000;
- 限制团队成员权限,不共享管理员账号;
- 数据库不直接映射到公网;
- 定期清理无用镜像和构建缓存,但不要误删仍被 Volume 使用的数据;
- 为磁盘、内存、证书和备份失败设置告警。
| 方案 | 核心定位 | 更适合 |
|---|---|---|
| Dokploy | 自托管 PaaS、Git 部署、Traefik、Swarm | 多项目、持续部署、远程服务器 |
| Coolify | 自托管 PaaS、应用与数据库管理 | 想要成熟的一体化部署面板 |
| Portainer | Docker/Swarm 管理界面 | 已有容器,需要可视化运维 |
| Docker Compose | 声明式容器编排 | 服务少、变更少、希望保持简单 |
Portainer 更像容器管理器,Dokploy 和 Coolify 更像部署平台。若你想直接管理 Stack、容器、网络和日志,可阅读 Portainer Docker 管理面板教程。
不建议。官方建议至少 2GB 内存和 30GB 磁盘,1GB 在 Docker 构建时很容易卡死或触发 OOM。
不一定覆盖配置,但 80、443、3000 被占用会导致安装失败或路由冲突。已有生产网站时优先使用新 VPS。
当前官方安装流程使用 Docker Swarm,因此排障时应查看 docker service,不能只看 docker compose ps。
可以,但先用 DNS only 验证源站证书和路由,再开启代理更容易定位问题。不要用 Cloudflare 掩盖源站端口或证书错误。
没有绝对答案。已经稳定使用其中一个时,迁移收益通常不如完善备份、监控和回滚。新项目可以先比较 Git 集成、远程服务器、备份方式和团队权限,再用测试 VPS 验证。
Dokploy 最吸引人的地方不是“一键安装”,而是把 Git、构建、容器、域名、证书、数据库和备份放进一条可重复的发布流程。真正适合生产的做法是:从至少 2GB/30GB 的干净 VPS 开始,先解决端口和 DNS,再部署应用,最后补齐外部备份、健康检查和访问控制。
如果你准备长期运行多个项目,建议直接选择 4GB 内存和 NVMe 磁盘,并在第一个业务上线前完成一次从 S3 备份恢复 Dokploy 的演练。
