Coolify vs Dokploy:哪个自托管PaaS适合你的VPS?
从资源消耗、安全记录、许可证分析到决策框架,全面对比Coolify和Dokploy,帮你根据VPS配置选择合适的自托管PaaS。
Coolify和Dokploy都承诺在你自己的服务器上提供类Heroku的体验。两者都支持git push部署、自动SSL和数据库配置。但它们在资源开销、安全历史、许可条款和架构上差异明显。本指南详细分析各自的适用场景,以及什么时候应该两者都不用。
自托管PaaS比Docker Compose多了什么?
自托管PaaS在Docker之上增加了Web管理面板、自动SSL证书管理、git push部署、通过界面配置数据库以及部署回滚功能。它取代了手动编写Compose文件、配置反向代理和设置Let's Encrypt的工作。
如果你已经有可用的docker-compose.yml和Traefik或Caddy等反向代理,PaaS可能只是增加开销而不增加价值。当你频繁部署多个应用、需要为非技术用户提供管理面板、或者需要一键安装市场应用时,PaaS工具才有意义。
代价始终是资源开销。Coolify和Dokploy都运行自己的容器(Web界面、数据库、代理、Worker),在你部署第一个应用之前就已经在消耗内存和CPU。
Traefik vs Caddy vs Nginx:Docker反向代理对比
Coolify和Dokploy在VPS上占用多少内存?
Coolify的平台开销在空闲状态下为500MB到1.2GB内存,取决于是否启用了监控。Dokploy空闲时约占350MB。在4GB的VPS上,这个差异决定了你实际能运行多少应用。
以下是各平台占用资源后,留给你应用的可用内存:
| VPS内存 | Coolify开销 | 应用可用 | Dokploy开销 | 应用可用 | 无PaaS(Compose + Traefik) |
|---|---|---|---|---|---|
| 4 GB | ~750MB-1.2GB | 2.8-3.2 GB | ~350MB | 3.6 GB | ~3.8 GB |
| 8 GB | ~750MB-1.2GB | 6.8-7.2 GB | ~350MB | 7.6 GB | ~7.8 GB |
| 16 GB | ~750MB-1.2GB | 14.8-15.2 GB | ~350MB | 15.6 GB | ~15.8 GB |
CPU使用情况也类似。Dokploy空闲时CPU占用0.8-1.5%。Coolify空闲时占5-7%,内置指标采集运行时飙升到25%。在4核VPS上,Coolify的基线负载相当于半个核心在空转。
这些数据来自多个独立基准测试。你的实际情况会因已部署服务数量、启用的功能以及是否运行Coolify监控栈而有所不同。
Coolify:功能与取舍
Coolify(截至2026年3月为v4.0.0-beta.468)是更成熟的项目,拥有51,000+个GitHub星标。它提供功能齐全的部署平台,包含大型一键应用市场(280+服务)。
Coolify的优势:
- 一键应用市场。 从目录中部署数据库、监控栈、CMS平台等。对于想要快速启动Plausible、Umami或Ghost的独立开发者非常实用。
- 多服务器管理。 将多个VPS实例连接到一个Coolify面板。每台服务器独立管理(无集群)。
- Cloudflare Tunnel集成。 内置支持通过Cloudflare暴露服务,无需开放端口。
- 通知渠道。 Discord、Telegram、Slack和邮件告警,用于部署事件通知。
- 完整Apache 2.0许可。 无功能限制。仓库中的所有代码都是开源的。
Coolify的不足:
- 资源消耗大。 500MB到1.2GB的内存开销在小型VPS实例上很可观。启用指标采集会更严重。
- 架构复杂。 Coolify运行多个容器(Laravel应用、PostgreSQL、Redis、Soketi WebSocket服务器、Worker)。组件越多,潜在故障点越多。
- 安全记录。 见下一节。
Coolify有过哪些安全漏洞?
2026年1月,研究人员披露了Coolify的11个安全漏洞。其中三个CVSS评分为10.0,即最高严重等级。这是自托管PaaS领域迄今为止最重大的安全事件。
漏洞来自两项独立的研究:
第一批(在v4.0.0-beta.374中修复):
- CVE-2025-22612(CVSS 10.0):任何经过身份验证的用户都能以明文形式获取私钥,从而在受管服务器上实现远程代码执行。
- CVE-2025-22609(CVSS 10.0):任何经过身份验证的用户都能将现有私钥关联到自己的服务器配置,然后通过终端功能在受害服务器上执行任意命令。
- CVE-2025-22611(CVSS 9.9):权限提升至完整管理员控制。
第二批(由Aikido Security发现,包含7个CVE):
- CVE-2025-64419:通过Docker Compose配置进行命令注入。
- CVE-2025-64424:通过Git配置进行命令注入。
- CVE-2025-64420:Root SSH密钥暴露给低权限用户。
Censys报告披露时约有52,000个暴露的Coolify实例。大部分位于德国(15,000)、美国(9,800)和法国(8,000)。
所有漏洞已修复。如果你在使用Coolify,请至少更新到v4.0.0-beta.374,并将面板访问限制在可信网络内。不要在没有IP白名单或VPN的情况下将Coolify界面暴露到公网。
这对你的决策意味着什么: Coolify的架构更复杂,攻击面更大。这些漏洞存在于核心功能中(数据库备份、SSH密钥管理、Docker Compose处理),而非边缘功能。Dokploy更简单的架构没有出现过类似的漏洞披露,但没有已知CVE并不等于没有漏洞。
Dokploy:功能与取舍
Dokploy(截至2026年3月为v0.28.8)是较新的项目,拥有31,000+个GitHub星标,是自托管PaaS领域增长最快的项目。
Dokploy的优势:
- 资源占用低。 空闲时约350MB内存,CPU不到1%。在4GB的VPS上,这为实际工作负载留出了明显更多的空间。
- Docker原生架构。 Dokploy原生支持Docker Compose。如果你已有Compose文件,Dokploy会直接部署,而不是用自己的抽象层包装。
- Docker Swarm多服务器。 原生Swarm集成,支持跨节点集群和自动负载均衡。这是真正的编排,不只是从一个面板管理独立的服务器。
- Traefik集成。 自带Traefik用于路由和自动SSL。从v0.25.0起支持Traefik v3.5.0。
- REST API和CLI。 一流的CI/CD集成,支持自动化部署。
Dokploy的不足:
- 应用市场较小。 相比Coolify 280+的目录,一键模板更少。
- 项目更年轻。 在生产环境中的验证较少。社区资源和教程也较少。
- 许可证复杂。 见下文。
Coolify和Dokploy的许可证有什么区别?
Coolify对其整个代码库使用简单的Apache 2.0许可证。你可以不受限制地商业使用、修改和分发。
Dokploy的许可更复杂。核心代码库使用Apache 2.0,但/proprietary目录下的内容适用单独的专有许可证。未经Dokploy Technology, Inc.的单独协议,不得商业分发Dokploy。
社区对此混合模式提出了质疑。Dokploy团队承认了混淆并宣布计划转向更清晰的开放核心或双重许可模式,即"Dokploy Source Available License"。
这对你意味着什么:
- 个人项目和内部工具: 两者都可以。如果你在自己的服务器上部署自己的应用,许可区别几乎无关紧要。
- 开展托管业务: Coolify的Apache 2.0给你明确的法律依据。Dokploy的条款禁止未经单独协议的商业分发。
- 贡献代码: 两者都接受贡献,但贡献到Dokploy专有目录的代码可能受不同条款约束。
如果许可证的明确性对你的组织很重要,Coolify是目前更安全的选择。
并排对比
| 特性 | Coolify | Dokploy |
|---|---|---|
| 空闲内存 | 500MB-1.2GB | ~350MB |
| 空闲CPU | 5-7% | 0.8-1.5% |
| 部署来源 | Git(GitHub、GitLab、Bitbucket)、Docker镜像、Compose | Git(GitHub、GitLab、Bitbucket、Gitea等)、Docker镜像、Compose |
| 一键应用 | 280+目录 | 较小目录 |
| SSL自动化 | Let's Encrypt via内置代理 | Let's Encrypt via Traefik |
| 数据库支持 | PostgreSQL、MySQL、MariaDB、MongoDB、Redis、ClickHouse、KeyDB | PostgreSQL、MySQL、MariaDB、MongoDB、Redis |
| 定时备份 | 支持,S3兼容目标 | 支持,外部存储 |
| 多服务器 | 面板管理独立服务器 | Docker Swarm集群含负载均衡 |
| 监控 | 内置(CPU开销高) | 内置,集成Gotify |
| 通知 | Discord、Telegram、Slack、邮件 | Discord、Telegram、Slack、邮件 |
| 许可证 | Apache 2.0(完整) | Apache 2.0 + 专有目录 |
| 已知CVE(2025-2026) | 11(3个CVSS 10.0) | 无公开披露 |
| GitHub星标 | 51,000+ | 31,000+ |
| 当前版本 | v4.0.0-beta.468 | v0.28.8 |
Dokploy支持多服务器部署吗?
支持。Dokploy原生使用Docker Swarm进行多服务器部署。你添加Worker节点到Swarm,Dokploy自动处理服务调度、负载均衡和跨节点网络。
Coolify也支持多服务器设置,但架构不同。Coolify从中央面板独立管理每台服务器。没有集群和服务器间自动负载均衡。你需要手动用Nginx或Traefik配置路由。
对于扩展到单台VPS之外的团队,Dokploy的Swarm集成在运维上更简单。你无需额外配置就能获得自动故障转移和负载分配。Coolify的方式给你更多控制权,但需要更多手动工作。
4GB小型VPS选哪个自托管PaaS更好?
在4GB的VPS上,Dokploy是更好的选择。约350MB的开销留下3.6GB给你的应用。Coolify 750MB到1.2GB的开销只留下2.8-3.2GB,一旦运行一个数据库和两三个应用容器就很紧张了。
以下是基于你具体情况的决策框架:
选择Dokploy当:
- 你的VPS有4-8GB内存,每个MB都很重要
- 你已经使用Docker Compose并想保持这个工作流
- 你需要Docker Swarm的真正多服务器集群
- 你要最低的空闲资源消耗
- 你部署自己的应用(不是做托管业务)
选择Coolify当:
- 你的VPS有8GB+内存,开销可以忽略
- 你想要280+一键应用市场
- 你需要Cloudflare Tunnel集成
- 你在意完整的Apache 2.0许可,没有专有组件
- 你的团队受益于组织模型(Teams > Projects > Environments)
两者都不用(Docker Compose + 反向代理)当:
- 你运行1-3个很少变更的应用
- 你已有可用的Compose文件
- 你熟悉终端,不需要Web界面
- 你要绝对最小的资源开销
- 你的VPS只有2-4GB内存,无法为平台层分配资源
什么时候该跳过PaaS直接用Docker Compose?
如果你的技术栈是一个docker-compose.yml,包含一个Web应用、一个数据库,可能再加一个缓存,你不需要PaaS。Traefik或Caddy等反向代理自动处理SSL。Watchtower或cron job处理镜像更新。这就是3个容器,而不是Coolify或Dokploy内部运行的6-10个。
PaaS的价值在以下情况体现:
- 你每周或更频繁地部署新服务
- 多人需要在没有SSH访问的情况下触发部署
- 你从一个界面管理多台服务器
- 你想通过界面进行数据库配置和备份调度
如果以上都不适用,PaaS只是增加了复杂性和资源开销,收益甚微。从Docker Compose开始,如果你超出了手动工作流的能力,再添加PaaS。
Traefik vs Caddy vs Nginx:Docker反向代理对比
CapRover、Dokku和Kamal怎么样?
它们值得一提,但服务于不同的细分场景:
- CapRover(14,000+星标)使用Docker Swarm,自2017年以来一直存在。开发速度已放缓。资源使用适中(约300-400MB内存)。有限的Docker Compose支持使其对复杂技术栈不够灵活。
- **Dokku**是最接近真正Heroku克隆的工具,支持buildpack。仅限单服务器。最适合只想要
git push部署而无其他需求的开发者。 - **Kamal**采用截然不同的方式:它在你的笔记本或CI Runner上运行,而不是在服务器上。服务器端零开销。需要熟悉YAML配置,且只处理部署(无数据库配置界面,无管理面板)。由37signals的Rails团队构建。
这些工具在Web界面、数据库管理和VPS上多应用部署的组合方面,都不如Coolify或Dokploy。
总结
Dokploy在资源效率、Docker原生工作流和多服务器集群方面胜出。Coolify在市场广度、许可清晰度和功能深度方面胜出。两者都有不可忽视的取舍。
如果安全在你的决策中分量很重,Coolify 2026年1月的11个CVE是一个数据点,不是否决项。漏洞已修复。但这种模式(核心功能中的命令注入、私钥暴露)反映了更简单工具所避免的架构复杂性。保持Coolify更新,永远不要将其面板暴露在公网上。
如果你在小型VPS上从零开始,选Dokploy。如果你需要应用市场或在意许可证纯度,选Coolify并用更大的实例。如果你的部署工作流已经用Compose和反向代理正常运行,两者都不需要。