从零到一:Dokploy 自托管部署平台搭建实战

8 阅读8分钟

从零到一:Dokploy 自托管部署平台搭建实战

什么是 Dokploy?

Dokploy 是一个现代化的应用部署平台,简单来说就是你可以自己搭建的 "私人版 Vercel"。想象一下,你有了自己的服务器,却还要为每个项目的部署而头疼?

传统项目部署通常面临以下挑战:

  • 🔧 环境配置繁琐:需要手动安装和配置 Node.js、Nginx、Docker 等各种环境,版本兼容性问题常常让人头疼
  • 🔄 部署流程复杂:从代码提交到最终上线,需要手动执行多个步骤,包括拉取代码、安装依赖、构建、配置反向代理等
  • 🐞 调试困难:出现问题时需要登录服务器查看日志,排查过程耗时费力
  • 📦 多项目管理混乱:每个项目都需要单独配置和管理,容易造成端口冲突和资源浪费
  • 🔒 SSL 证书配置:手动申请和更新 SSL 证书,配置 HTTPS 访问繁琐且容易出错
  • 🚨 缺乏监控和告警:无法实时掌握应用运行状态,故障发现和处理不及时
  • 🔄 回滚困难:版本更新出现问题时,回滚操作复杂,容易影响线上服务
  • 📦 多环境支持:开发、测试、生产环境需要分别配置和管理

Dokploy 就是来拯救你的!它提供了简洁友好的 Web 界面,让你轻松管理应用的部署、监控和扩展,支持从静态网站到 Docker 容器的各种应用类型。

为什么选择 Dokploy?

虽然是自托管,但用户体验一点也不含糊。Git 推送自动部署、实时日志查看、一键回滚,该有的功能一个不少。想在哪个地区部署就在哪个地区部署,国内服务器也能享受丝滑的部署体验。

核心特性一览

  • 🚀 一键部署:Git 推送即部署,比点外卖还简单
  • 🐳 Docker 原生:容器化部署,环境一致性有保障
  • 📊 实时监控:CPU、内存、流量一目了然,再也不用盲猜
  • 🔒 SSL 自动化:Let's Encrypt 证书自动申请续期,HTTPS 不再是难题
  • 🌐 域名管理:多域名绑定,子域名随便玩
  • 📝 日志实时:错误日志实时查看,调试效率翻倍
  • 🔄 故障自愈:应用挂了自动重启,半夜不用爬起来救火
  • 🎯 零停机部署:更新应用不影响用户访问
  • 📦 环境变量:敏感配置安全管理
  • 🔄 版本回滚:部署出问题?一键回到上个版本

Dokploy vs 其他平台对比

特性DokployVercelNetlifyRailway
💵 费用只需服务器成本免费额度有限免费额度有限按使用量计费
🔧 自定义程度完全可控受限受限中等
📊 流量限制无限制有限制有限制有限制
🌐 地域选择任意固定节点固定节点固定节点
🐳 Docker 支持✅ 原生支持❌ 不支持❌ 不支持✅ 支持
🛠️ 学习成本中等
📈 扩展性极高中等中等中等

系统要求

尽管dokploy功能强大,但是它的系统要求也不高。Dokploy 对服务器的要求并不苛刻,大部分 VPS 都能轻松胜任:

  • CPU: 1 核心就够用,当然2 核心更舒服,毕竟谁不喜欢快一点呢
  • 内存: 1GB 起步(2GB 推荐,让你的应用跑得更欢快)
  • 存储: 10GB 可用空间(主要存镜像和日志,不算多)

Dokploy 安装步骤

一键安装脚本(懒人福音)

最简单的方式,一行命令直接搞定一切,比泡面还快:

# 下载并运行安装脚本(相信我,就这么简单)
curl -sSL https://dokploy.com/install.sh | sh

这个神奇的脚本会帮你搞定所有脏活累活:

  • 📦 下载 Dokploy Docker 镜像
  • 📝 创建必要的配置文件
  • 🚀 启动 Dokploy 服务
  • 🔄 配置反向代理

稍等片刻,就能够安装完成。当然对于国内某些特殊的原因,往往会出现下面的情况,安装进程一直卡在 Installation is stuck at [1/1: preparing] 这里。

Installation-is-stuck-at-1-1-preparing-·-Issue-308-·-Dokploy-dokploy.png

出现这种情况,往往是因为docker镜像的拉取网络不通出现的,这个时候就需要配置docker镜像加速了

使用阿里云服务器

阿里云贴心的给我们准备了镜像加速器地址,在这里可以查看到具体的地址 容器镜像服务控制台

获取了镜像加速器地址之后,我们可以按照文章中的提示对服务进行切源操作。

其他国产服务器

对于其他国产服务器,我们也可以通过 目前国内可用Docker镜像源汇总 获取到docker镜像源,再通过文中操作进行切换docker源操作。

在完成切源操作之后,静候等待,看到下面的安装成功提示,就表示我们安装成功,在访问之前,我们需要对我们的服务器的安全组进行配置,开放 3000/80/443的网络端口,这样我们的服务才能够被外部访问。

172-27-172-117-iZwz9a1pk2f3wy9h1ub4whZ-ECS-Workbench.png

访问

通过http://{服务器公网ip}:3000 地址访问我们的admin页面,接下来就是到了喜闻乐见的注册管理员、配置后台环节。然后使用ip+端口的访问形式略显不雅,这个时候我们就需要在admin后台进行https域名绑定配置。

Dokploy.png

绑定域名
  • Dokploy后台系统左边边栏选择Server,Server Domain中的Domain中填入你想用来当Dokploy后台页面的域名,记住需要选择https。
  • 在服务器上新增一条域名dns记录,类型是A记录,记录名是dokploy,值是公网IP访问。

进行如上操作,我们就能愉快的使用https域名进行安全访问了。

部署第一个应用

1. 连接 Git 仓库

现在到了最激动人心的环节 - 部署你的第一个应用!

  1. 🆕 点击「新建应用」(就像开启一段新的冒险)
  2. 🔗 选择「从 Git 仓库部署」(支持 GitHub、GitLab、Gitee 等)
  3. 📝 输入 Git 仓库 URL(公开仓库直接填,私有仓库需要配置访问权限)
  4. 🌿 配置部署分支(通常是 mainmaster,看你的仓库设置)
  5. ⚙️ 设置构建类型,Dokploy 支持docs.dokploy.com/docs/core/1… 这些类型的前端构建。

2. 配置环境变量

如果应用存在环境变量,比如数据库密码、API 密钥等等,那可以在 Environment 中填入:

NODE_ENV=production        # 告诉应用这是生产环境
PORT=3000                 # 应用运行端口
DATABASE_URL=your-database-url  # 数据库连接地址
API_SECRET=your-secret-key      # API 密钥(记得保密哦)

3. 设置域名

有了域名,你的应用就有了正式的"门牌号":

  1. 🌐 在应用设置中点击「域名」
  2. ➕ 添加你的域名(比如 my-awesome-app.com
  3. 🔗 确保域名 DNS 记录指向你的服务器 IP(A 记录)
  4. 🔒 启用 SSL 证书(Let's Encrypt 会自动帮你搞定)

4. 部署应用

一切准备就绪,是时候按下那个神奇的按钮了:

  1. 🚀 点击「部署」按钮
  2. 👀 查看构建日志
  3. ⏳ 等待部署完成
  4. 🎉 访问你的应用

故障排除

常见问题(踩坑指南)

1. 无法访问 Dokploy 界面(最常见的问题)

别慌,按照下面的步骤一步步排查:

先检查服务是否在运行

docker ps | grep dokploy  # 看看 Dokploy 容器是否在运行

检查端口是否被占用

sudo netstat -tlnp | grep :3000  # 看看 3000 端口有没有被其他程序占用

检查防火墙设置

sudo ufw status  # 确认防火墙是否放行了 3000 端口
2. SSL 证书申请失败

证书申请失败通常是这几个原因:

检查域名解析是否正确

nslookup your-domain.com  # 看看域名是否正确指向你的服务器

Let's Encrypt 的一些"小脾气"

  • 🎯 确保域名正确指向服务器(A 记录配置对了吗?)
  • ⏰ 检查是否超过申请频率限制(一小时内不要申请太多次)
  • 🔍 确保 80 端口可以访问(Let's Encrypt 需要验证域名所有权)
3. 应用部署失败

遇到部署不要慌,大多数情况下都能通过以下的步骤来修复

先看构建日志找线索

  1. 📋 在 Dokploy 界面查看详细构建日志、错误信息通常很明确
  2. 📦 检查依赖项是否正确安装(package.json 有没有问题)
  3. ⚙️ 验证环境变量配置(数据库连接、API 密钥等)
  4. 🔧 确认构建命令是否正确(npm run build 还是 yarn build?)

到这里,我们的教程就接近尾声了,而我们就可以:

  1. ✅ 轻松安装和配置 Dokploy
  2. ✅ 部署你的第一个应用
  3. ✅ 配置域名和 SSL 证书
  4. ✅ 排查常见问题

有用的资源


这篇指南会持续更新,毕竟技术在进步,我们也要跟上节奏。有问题或建议?欢迎随时反馈!

最后的最后:记住,部署只是开始,运维才是真正的考验。但有了 Dokploy,至少部署这一关你已经轻松过了!🎉