- 后端
- 前端
- 云原生
- DevOps
- 容器编排
- 运维
【免费下载链接】dokploy
Open Source Alternative to Vercel, Netlify and Heroku.
Dokploy 是一个免费、可自托管(Self-Hosted)的 Platform as a Service(PaaS)开源项目,目标是成为 Vercel、Netlify 与 Heroku 的开源替代品,让你在自己的 VPS 上拥有一套完整的应用与数据库部署管理平台。本文将以项目 README.md 为核心骨架,结合仓库源码与构建配置,系统讲解 Dokploy 的核心功能特性、快速安装方式、底层实现机制与实战要点。
项目定位:自托管的 PaaS,掌控部署全流程
Dokploy 的核心价值在于"自托管 + 全流程托管":你不需要把应用托管给第三方商业平台,而是通过一条命令在自有 VPS 上安装 Dokploy,随后通过 Web 界面完成从代码拉取、构建、部署、域名绑定、TLS 证书到数据库备份的全生命周期管理。
从仓库结构看,这是一个 pnpm workspace 多包项目(见 package.json),包含三个核心应用:
apps/dokploy:主应用(Next.js 前端 + Node.js 后端服务,版本 v0.30.6,见 apps/dokploy/package.json);packages/server:共享服务层,集中了应用、数据库、备份、监控等业务逻辑(见 packages/server/src/services);apps/api:面向 CLI/API 的独立服务,例如对接 Inngest 事件队列的部署任务接口(见 apps/api/src/service.ts)。
核心功能特性全景
README 中列出的 13 项特性构成了 Dokploy 的能力骨架,每一条都能在仓库源码中找到对应的实现模块:
1. 应用部署(Applications)
Dokploy 支持部署任意类型的应用:Node.js、PHP、Python、Go、Ruby 等。底层依赖三大构建系统:
- Nixpacks:默认的零配置构建方案,自动检测语言并生成镜像(Dockerfile 中通过
https://nixpacks.com/install.sh安装); - Railpack:新一代通用构建工具(
https://railpack.com/install.sh); - Buildpacks:CNCF 生态的标准构建包(
packCLI)。
相关实现集中在 packages/server/src/services/application.ts 与 deployment.ts。
2. 数据库管理(Databases)
内置 MySQL、PostgreSQL、MongoDB、MariaDB、libsql 与 Redis 六类数据库的创建与管理,每一类都有独立服务模块:postgres.ts、mysql.ts、mongo.ts、mariadb.ts、libsql.ts、redis.ts。你可以在 UI 中一键拉起数据库实例,并通过 update-database-password.tsx 等组件直接管理密码等运行参数。
3. 备份(Backups)
支持将数据库备份自动化投递到外部存储目标(external storage destination)。核心逻辑位于 backup.ts 与 volume-backups.ts。值得注意的是,仓库中还有大量备份相关测试,例如 db-backup-restore-injection.test.ts 与 redact-credentials.test.ts,验证备份命令注入防护与凭据脱敏等安全行为。
4. Docker Compose 原生支持
用于管理复杂多容器应用的 Docker Compose 能力由 compose.ts 支撑。测试目录 apps/dokploy/test/compose 覆盖了 compose 命令注入防护(compose-command-injection.test.ts)、项目目录处理(compose-project-directory.test.ts)与镜像拉取(compose-pull-images.test.ts)等关键场景。
5. 多节点集群(Multi Node / Docker Swarm)
通过 Docker Swarm 将应用扩展到多个节点,实现集群化部署与横向扩展。集群管理入口见 apps/dokploy/server/api/routers/swarm.ts 与 apps/dokploy/components/dashboard/swarm。测试 swarm-nodeid-injection.test.ts 验证了集群节点标识的注入防护。
6. 一键模板(Templates)
Plausible、Pocketbase、Calcom 等开源项目模板可以一键部署。模板清单定义在 apps/dokploy/templates/templates.ts,并配套 config.template.test.ts 等测试保证模板配置的正确性。
7. Traefik 集成
自动与 Traefik 集成,负责路由与负载均衡,实现域名解析、反向代理与自动 TLS。路由配置相关测试集中在 apps/dokploy/test/traefik,例如 traefik.test.ts 与 write-app-traefik-config.test.ts。
8. 实时监控(Real-time Monitoring)
对每个资源的 CPU、内存、存储与网络使用情况进行实时监控。监控采集端由独立的 Go 服务实现,位于 apps/monitoring(含 containers/monitor.go 等),前端展示组件见 apps/dokploy/components/dashboard/monitoring。
9. Docker 管理
可直接在界面中部署和管理 Docker 容器。服务实现见 packages/server/src/services/docker.ts,前端 UI 见 apps/dokploy/components/dashboard/docker,容器机械化管理逻辑有独立测试 mechanizeDockerContainer.test.ts。
10. CLI / API
可通过命令行或 API 管理应用与数据库。仓库中的 apps/api 即为独立 API 服务,它对接 Inngest 事件系统读取部署任务。以 apps/api/src/service.ts 的fetchDeploymentJobs为例:它会拉取deployment/requested事件(过滤出指定serverId),再查询每个事件的 runs,最终组装成部署任务列表返回给 UI 层。OpenAPI 文档由 scripts/generate-openapi.ts 脚本生成,并支持 tRPC OpenAPI 规范(依赖@dokploy/trpc-openapi)。
11. 通知(Notifications)
部署成功或失败时,通过 Slack、Discord、Telegram、Email 等方式推送通知。通知服务实现见 packages/server/src/services/notification.ts。
12. 多服务器(Multi Server)
支持将应用远程部署到外部服务器,实现分布式管理。相关能力由 packages/server/src/services/server.ts 与 ssh-key.ts 支撑(SSH 密钥管理是远程连接的基础),服务健康检查见 server-health.ts。
13. 自托管(Self-Hosted)
Dokploy 本身就是为自托管而设计的,安装与运行均依赖 Docker 环境,具体见下文快速开始。
快速开始:一条命令完成安装
在 VPS 上安装 Dokploy,只需执行 README 中给出的安装命令:
curl -sSL https://dokploy.com/install.sh | bash安装脚本会自动完成环境检测、依赖准备与容器启动。生产环境要求 VPS 上具备 Docker 能力——官方 GUIDES.md 详细给出了 Ubuntu(apt 安装 docker-ce/docker-buildx-plugin/docker-compose-plugin)、macOS 与 Windows(WSL2 + Docker Desktop)三种环境的 Docker 安装步骤,建议先按文档准备好 Docker 再执行安装命令。
生产容器架构:Dokploy 镜像里装了什么
从仓库根目录的 Dockerfile 可以完整还原生产镜像的组成,帮助你理解自托管时 Dokploy 实际依赖哪些运行时:
- 基础运行时:
node:24.4.0-slim+corepack激活的pnpm@10.22.0(项目根 package.json 的engines亦声明 Node^24.4.0、pnpm>=9.12.0); - 构建阶段:通过
pnpm --filter=@dokploy/server build与pnpm --filter=./apps/dokploy run build完成服务端与前端构建,再以pnpm --filter=./apps/dokploy --prod deploy收集生产依赖; - 运行时组件:镜像内安装了 Docker CLI(
get.docker.com,版本 28.5.2)与 rclone,用于在容器中调用宿主 Docker 与外部存储备份;同时内置 Nixpacks、Railpack 与 Buildpacks 三种构建工具,使 Dokploy 自身即可驱动应用构建; - 进程管理:使用
tini作为 PID 1(ENTRYPOINT ["/usr/bin/tini", "--"]),回收健康检查产生的僵尸进程; - 健康检查:
HEALTHCHECK每 30 秒探测http://localhost:3000/api/trpc/settings.health(见 Dockerfile); - 启动序列:
CMD依次执行等待 PostgreSQL、运行迁移(dist/migration.mjs)、再启动主服务(dist/server.mjs),对应 apps/dokploy/package.json 中的migration:run与start脚本逻辑。
镜像对外暴露3000端口(EXPOSE 3000),这是 Dokploy Web 界面的默认访问端口。
本地开发与构建环境
若你想基于源码本地运行或二次开发,可参考 CONTRIBUTING.md 与根 package.json 的脚本约定。仓库采用 pnpm workspace,核心流程为:
git clone https://gitcode.com/GitHub_Trending/do/dokploy.git cd dokploy pnpm install cp apps/dokploy/.env.example apps/dokploy/.env pnpm run dokploy:setup # 启动所需服务并执行数据库迁移 pnpm run server:script # 切换 server 包指向 src pnpm run dokploy:dev # 启动开发服务器,访问 http://localhost:3000常用命令一览(均来自根 package.json):
| 命令 | 作用 |
|---|---|
pnpm run dokploy:setup | 初始化环境并运行数据库迁移 |
pnpm run dokploy:dev | 启动开发服务器 |
pnpm run dokploy:build | 生产构建 |
pnpm run dokploy:start | 生产启动(先迁移后启动) |
pnpm run test | 运行 vitest 测试套件(配置见 apps/dokploy/test/vitest.config.ts) |
pnpm --filter=dokploy run reset-password [邮箱] | 重置用户密码(不传邮箱则重置 owner,新密码输出到控制台) |
pnpm --filter=dokploy run reset-2fa | 重置两步验证 |
pnpm --filter=dokploy run generate:openapi | 生成 OpenAPI 文档 |
开发时项目使用 Biome 作为格式化与 lint 工具(format-and-lint/check脚本),贡献 PR 时需遵循 Conventional Commits 提交规范,并以canary分支为开发基线、main分支为稳定发布源。
部署任务的底层执行模型:从事件到任务行
了解部署的底层机制有助于排障。Dokploy 的部署请求通过 Inngest 事件系统流转(参考 apps/api/src/service.ts 与 apps/api/src/schema.ts):
- 事件定义:部署任务由
deployJobSchema描述,按applicationType区分为application、compose与application-preview三类(见 schema.ts),每类均包含serverId、type(deploy/redeploy)等字段; - 事件拉取:
fetchInngestEvents分页调用 Inngest 的/v1/events接口(每页 100 条,上限 500 条),使用INNGEST_SIGNING_KEY鉴权; - 任务组装:
fetchDeploymentJobs过滤出与目标serverId匹配的deployment/requested事件,最多取 50 个事件查询其 runs,再按运行状态(queued→pending、running→active、completed、failed、cancelled)组装为 BullMQ 风格的队列行,供 UI 展示部署队列。
结语
Dokploy 以"自托管 PaaS"为核心定位,把 Vercel/Netlify/Heroku 的托管体验搬回你自己的服务器:一条命令完成安装,Web 界面统一管理应用、数据库、备份、域名与监控,同时通过 Docker Swarm 与多服务器支持横向扩展。对于希望掌控部署全链路、规避商业平台锁定或数据合规约束的团队,Dokploy 提供了一条可落地的开源路径。想要深入了解某个模块(如备份恢复、Traefik 配置或权限体系),可以直接在仓库 apps/dokploy/test目录找到对应的端到端测试,这些测试本身就是最好的使用说明书。
- 后端
- 前端
- 云原生
- DevOps
- 容器编排
- 运维
【免费下载链接】dokploy
Open Source Alternative to Vercel, Netlify and Heroku.
相关推荐
从0到1:用Gausian Native Editor制作AI生成视频的详细教程
从0到1:用Gausian Native Editor制作AI生成视频的详细教程 Gausian Native Editor是一款基于Rust开发的本地视频编辑
如何快速部署应用:Dokploy自托管PaaS平台的完整使用指南
如何快速部署应用:Dokploy自托管PaaS平台的完整使用指南 在现代Web开发中,快速、安全的部署策略是成功的关键。Dokploy是一个基于Docker和T
后端前端云原生DevOps容器编排运维终极Dokploy指南:自托管PaaS平台完整解决方案
终极Dokploy指南:自托管PaaS平台完整解决方案 在现代Web开发中,快速、安全的部署策略是成功的关键。Dokploy是一个基于Docker和Traefi
后端前端云原生DevOps容器编排运维
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考