Skip to content

Dokploy 自托管部署指南

Dokploy 是一款开源的自托管 PaaS(平台即服务),可以在自己的服务器上搭建类似 Vercel/Heroku 的部署平台。支持 Git 自动部署、Docker 应用、数据库管理,是个人开发者和小团队的理想选择。

本文基于 Dokploy v0.8.x 编写。

为什么选择 Dokploy#

特性说明
完全开源MIT 协议,免费使用
自托管数据完全掌控,无供应商锁定
简单易用Web UI 管理,无需复杂命令
资源高效单机即可运行,低配服务器友好
功能完整应用、数据库、域名、SSL 一站式管理

服务器要求#

最低配置:

- 1 核 CPU
- 1 GB 内存
- 10 GB 磁盘
- Ubuntu 20.04+ / Debian 11+

推荐配置(生产环境):

- 2 核 CPU
- 4 GB 内存
- 40 GB SSD

安装 Dokploy#

一键安装#

SSH 登录服务器,执行:

Terminal window
curl -sSL https://dokploy.com/install.sh | sh

安装完成后,访问 http://服务器IP:3000 进入管理界面。

Docker 安装#

Terminal window
docker run -d \
--name dokploy \
-p 3000:3000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v dokploy-data:/app/data \
dokploy/dokploy:latest

初始设置#

  1. 访问管理界面
  2. 创建管理员账号
  3. 配置服务器信息

部署应用#

Git 仓库部署#

  1. 项目 → 新建应用 → Git
  2. 配置仓库地址和分支
  3. 设置构建命令和启动命令
  4. 部署

配置示例(Next.js)

构建命令: npm install && npm run build
启动命令: npm start
端口: 3000

Dockerfile 部署#

支持自定义 Dockerfile:

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]

Docker Compose 部署#

对于复杂应用,支持 Docker Compose:

version: '3.8'
services:
app:
build: .
ports:
- '3000:3000'
environment:
- DATABASE_URL=${DATABASE_URL}
depends_on:
- db
db:
image: postgres:15
environment:
- POSTGRES_PASSWORD=${DB_PASSWORD}
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:

预构建镜像#

直接部署 Docker Hub 镜像:

镜像: nginx:latest
端口: 80

数据库服务#

Dokploy 内置数据库管理:

PostgreSQL#

1. 数据库 → 新建 → PostgreSQL
2. 设置用户名、密码、数据库名
3. 创建并获取连接信息

连接字符串:

postgres://user:password@localhost:5432/dbname

MySQL#

1. 数据库 → 新建 → MySQL
2. 配置参数
3. 获取连接信息

Redis#

1. 数据库 → 新建 → Redis
2. 设置密码
3. 获取连接信息

MongoDB#

1. 数据库 → 新建 → MongoDB
2. 配置认证
3. 获取连接 URI

域名与 SSL#

配置域名#

  1. 应用设置 → 域名
  2. 添加自定义域名
  3. 配置 DNS 指向服务器 IP

DNS 记录:

类型: A
名称: @
值: 服务器IP

自动 SSL#

Dokploy 集成 Let’s Encrypt,自动申请和续期证书:

应用设置 → 域名 → 启用 HTTPS

通配符证书#

支持申请 *.example.com 通配符证书,需要配置 DNS 验证。

环境变量#

应用级变量#

应用设置 → 环境变量
DATABASE_URL=postgres://...
API_KEY=sk-xxxxx
NODE_ENV=production

全局变量#

可在多个应用间共享:

设置 → 全局变量

变量引用#

支持引用数据库连接信息:

DATABASE_URL={{postgres.url}}
REDIS_URL={{redis.url}}

持续部署#

Webhook 自动部署#

每个应用提供 Webhook URL:

应用设置 → 部署 → Webhook URL

在 GitHub 仓库设置中添加 Webhook。

分支自动部署#

可配置特定分支触发部署:

main → 生产环境
develop → 测试环境

监控与日志#

应用日志#

应用详情 → 日志

实时查看应用输出。

资源监控#

应用详情 → 监控

查看 CPU、内存、网络使用。

部署历史#

应用详情 → 部署记录

支持查看历史部署和回滚。

备份#

数据库备份#

数据库 → 备份 → 创建备份

支持定时自动备份。

导出配置#

设置 → 导出配置

备份所有应用和数据库配置。

高级配置#

资源限制#

为每个应用设置资源限制:

CPU: 1 核
内存: 512 MB

健康检查#

配置健康检查确保应用可用:

路径: /api/health
间隔: 30 秒
超时: 10 秒

自定义启动#

使用 Procfile 定义启动方式:

web: npm start
worker: npm run worker

Dokploy vs Coolify vs CapRover#

特性DokployCoolifyCapRover
安装难度简单中等中等
资源占用
UI 设计现代现代传统
数据库管理
Docker Compose
团队协作有限
社区活跃度增长中活跃活跃

选择建议

最佳实践#

1. 使用 Dockerfile#

明确定义构建过程,避免环境差异:

FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/index.js"]

2. 配置健康检查#

确保应用真正可用后再路由流量。

3. 定期备份#

配置自动备份,尤其是数据库。

4. 使用反向代理#

生产环境建议在前面加 Nginx/Caddy。

常见问题#

部署失败#

  1. 检查构建日志
  2. 确认 Dockerfile 语法正确
  3. 检查端口配置

无法访问应用#

  1. 确认服务器防火墙开放端口
  2. 检查域名 DNS 配置
  3. 查看应用日志

SSL 证书申请失败#

  1. 确认域名已正确解析
  2. 检查 80/443 端口可访问
  3. 查看 Let’s Encrypt 日志

参考资料#