SSD Nodes Learn
指南 Matt Connor作者: Matt Connor · 更新于 2026-07-19

在 VPS 上对比 Cloudron、CasaOS 与 Coolify

在 VPS 上对比 Cloudron、CasaOS 与 Coolify:安装命令、TLS、备份、费用与资源开销一并列出,帮您选对自托管面板。

您要搭建的是什么

您在选一个工具,而不仅仅是安装一个工具。有三个面板都承诺把一台裸 VPS 变成点几下就能用的应用主机:CloudronCasaOSCoolify。本指南把它们各自装到同一台全新的 Ubuntu 24.04 机器上,安装第一个应用,然后认真审视那些没人截图展示的部分:TLS(传输层安全协议)、备份、更新、内存开销,以及日后迁走有多难。读完之后,您会知道哪一个适合自己,或者诚实的答案其实是“一个都不用,直接上 Docker Compose”。

这三者都不是魔法。三者底层都是同一套 Docker Engine,您本可以手动驱动它。面板向您出售的,无论代价是现金、内存还是锁定,都是替您完成的四件杂活:一键安装应用、自动申请 TLS 证书、定时备份,以及用户管理。 如果这四件事值得您付出真金白银的开销,那么面板就物有所值。如果您只跑一两个服务,又喜欢清楚知道机器上到底装了什么,请先读“三个都别用”那一节,替自己省下这份麻烦。

共同的前提条件与实话实说的坑

这三者都假设您用的是 KVM 类型的 VPS,而不是容器虚拟化。Docker 需要一个真正的内核,而 Cloudron 干脆直接拒绝 OpenVZ 和 LXC。用 systemd-detect-virt 检查:输出 kvmqemu 就没问题,openvzlxc 就不行。在 KVM 套餐上该命令会打印 kvm,在裸金属服务器上会打印 none;两者之一都说明您可以继续。

除此之外各项数字就开始分化,而这正是第一件左右选择的事。

  • 内存。 CasaOS 在 1GB 上就能跑得很舒服;它出身于树莓派硬件,一直很轻。Coolify 的下限是 2GB 内存和两个 CPU 核心,其中约 600 MB 是 Coolify 自身。Cloudron 至少需要 2GB,而在 4GB 上才真正舒适,因为它在您安装任何一个应用之前,就已经跑起了一个邮件服务器和一个数据库。
  • 一个您掌控的域名和 DNS。 Cloudron 和 Coolify 都需要一个 DNS 可用的真实域名。Cloudron 最好能拿到您 DNS 提供商的 API 访问权限,这样它就能自己创建记录和通配符证书。CasaOS 可以直接用裸 IP 运行,但那样您就完全没有 TLS。
  • 端口。 三者都需要开放 80 和 443 以承载 HTTP 与 HTTPS。Coolify 还额外把它的仪表盘放在 8000 端口上,并用 6001 承载它的实时通道、6002 承载浏览器内终端。在每一个方案上都保持 22 端口开放以供 SSH。

开始之前先把 DNS 指向这台机器。一个连自己主机名都解析不了的面板无法申请证书,您会把头一个小时花在排查这个问题上,而不是花在软件本身。把一条 A 记录指向服务器 IP,对 Coolify 还要加一条通配符记录(*.apps.example.com),这样每个部署上去的应用都能拿到自己的子域名。

Cloudron:打磨精致、立场鲜明的一体机

它是什么。 Cloudron 是一个商业平台,把整台服务器变成一台受管的一体机。它自带反向代理、数据库和邮件栈,外加一个精选的应用商店,里面是打包好的应用(Nextcloud、WordPress、Gitea、Mattermost 等等)。它面向的是希望自己的应用被托管的人:自动更新、自动证书、自动备份,并且愿意为此付费。

安装。 它坚持要一台干净的机器,并且会完全接管它。在一台全新的 Ubuntu 24.04(Noble)服务器上运行下面这些,别装别的:

wget https://cloudron.io/cloudron-setup
chmod +x cloudron-setup
sudo ./cloudron-setup

脚本会装好 Docker、nginx、一个数据库和邮件栈,然后重启。机器回来之后,打开 https://<your-ip>,接受临时的自签名证书,在浏览器里完成设置:把它指向您的域名,选择您的 DNS 提供商,它就会在 my.example.com 上部署好自己的仪表盘。

添加第一个应用。 在仪表盘里打开应用商店,点一下(比如说)Nextcloud,选择子域名 files.example.com,按下安装。Cloudron 会创建 DNS 记录、申请 Let's Encrypt 证书、部署数据库、接好单点登录、并排定一次备份,全程您不用碰一个配置文件。这就是它全部的卖点,而它确实做到了。

TLS 与备份。 三者中最强的。每个应用子域名都会拿到一张自动申请的 Let's Encrypt 证书,并自动为您续期。备份是内置且定时的,可以指向本地目录、S3 或其他远程存储,支持按应用还原,甚至能一键把某个应用克隆到新的子域名上。

费用与授权,动手前先读这段。 Cloudron 是一款 带封顶免费额度的付费产品:免费方案允许 两个应用。装第三个应用您就会撞上付费墙;付费订阅(Pro 或 Max,可按月或按年计费,两者都是应用数不限)会解锁更多。这是关于 Cloudron 最重要的一个事实。它之所以打磨得精致,正因为它是一门生意,而免费额度更接近一次延长的试用,而不是一个能容纳不断增长的服务栈的家。

失败情形,干净机器规则。 想在一台已经跑着别的东西的服务器上安装 Cloudron,安装程序会在改动任何东西之前就中止:

Error: Some packages like nginx/docker/nodejs are already installed. Cloudron requires
specific versions of these packages and will install them as part of it's installation.
Please start with a fresh Ubuntu install and run this script again.

原因不是它无理取闹。Cloudron 固定使用特定版本的 nginx、Docker 和 Node,并把它们深度整合,所以它没法和您自己的那几份共存。解决办法是一个全新的 Ubuntu 24.04 镜像,别的什么都别装:没有 Web 服务器、没有 Docker,甚至没有您手动配置过的防火墙。如果您启动了错误的镜像,安装程序还会拒绝任何不是受支持的 Ubuntu LTS(22.04 或 24.04)、且不是 x86-64 架构的系统;ARM、LXC 和 OpenVZ 一律不支持。

第二种失败情形,通配符证书需要 DNS API。 如果在设置时选了“Manual(手动)”DNS 选项,而没有给 Cloudron 一个 API 令牌,它就没法替您创建记录或通配符证书。之后每个新应用都得让您先手动添加一条 DNS 记录,证书才能签发,而仪表盘会一直卡着等这条记录。给 Cloudron 一个受支持的 DNS 提供商(Cloudflare、Route 53、DigitalOcean 等)的 API 访问权限,整个流程就变成一键完成。

CasaOS:免费的家庭实验室仪表盘

它是什么。 CasaOS 来自 IceWhale,是一个免费开源的仪表盘,坐落在 Docker 之上,给您一个主屏幕、一个应用商店和一个文件管理器。它脱胎于家庭服务器的世界,所以它的本能是家庭实验室式的:搭建快、界面友好、少有繁文缛节。它面向的是想给 Docker 加一张更好看的脸、又不想给谁付钱的折腾党。

安装。 一行命令,而且它不要求一台干净的机器:

curl -fsSL https://get.casaos.io | sudo bash

安装程序会加入一组 systemd 服务(casaoscasaos-gatewaycasaos-app-management 等等)。在打开浏览器之前,先确认网关已经起来:

systemctl status casaos-gateway

它运行起来之后,仪表盘就在 http://<your-ip>(纯 HTTP,80 端口)。创建一个本地账号,您就进去了。

添加第一个应用。 打开应用商店,挑一个应用,点安装。CasaOS 会在幕后写一个 Docker Compose 项目,并把应用暴露在一个主机端口上,例如 http://<your-ip>:8080。它的商店里是常见的家庭服务器阵容,所以搭一个 在 VPS 上运行的 Jellyfin 媒体服务器 或一个 自托管的 Immich 照片库 都只需点几下。您也可以导入任意您喜欢的 docker-compose.yaml,这才是真正的强项:这些应用是普通容器,而不是某种专有格式。

TLS 与备份,短板所在。 这就是“免费”露出边角的地方。CasaOS 默认把一切都走纯 HTTP,连它自己的仪表盘也是。它没有内置的 Let's Encrypt,也没有内置的定时备份。您的数据存在 /DATA 下的 Docker 卷里,备份是您自己的事(一个 cron 定时的 restictar)。

失败情形,没有 TLS,而且是无声的。 什么错都不会报。您装好一个应用,打开 http://<your-ip>:8080,它能用,只不过走的是一条未加密的连接,浏览器把它标为 “不安全”。密码和会话 cookie 以明文形式穿过线路。更糟的是,CasaOS 的仪表盘曾出过真实的远程代码执行漏洞(CVE-2023-37265 和 CVE-2023-37266,一个身份验证绕过漏洞,可串联成对主机的完全控制),所以把那个 HTTP 端口直接暴露到互联网上是一个实实在在的风险,而不是风格上的挑剔。解决办法是永远不要直接暴露 CasaOS。在它前面放一个终结 TLS 的反向代理,比如 用 Certbot 申请 Let's Encrypt 证书的 nginx、Caddy 或 Cloudflare Tunnel,只在本地网络上把请求转发给 CasaOS。注意 CasaOS 已经占用了 80 端口,所以除非您先把 CasaOS 挪到别的端口上,否则您的代理会和 CasaOS 抢这个端口。

费用。 真正免费,永久免费,不限应用数量。您付出的是运维:TLS、备份和加固都得您自己来。

Coolify:自托管的 PaaS

它是什么。 Coolify 是一个开源、自托管的平台即服务(PaaS),走的是把 Heroku 或 Vercel 搬到自己机器上的路子。它天然的单位不是“安装这个打包好的应用”,而是“部署这个 Git 仓库”:接上一个仓库,Coolify 就会构建它(通过 Nixpacks 或您自己的 Dockerfile)并发布它,每次推送都重新部署。它也有一键数据库和服务。它面向的是部署自己代码、又想要推送即部署、还不想租一个 PaaS 的开发者。

安装。

curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash

脚本会安装 Docker 并拉起 Coolify 自己那一套容器。在往下走之前,先检查它们是否健康:

docker ps --format 'table {{.Names}}\t{{.Status}}'

您应该看到 coolifycoolify-dbcoolify-rediscoolify-realtimecoolify-proxy 全都报告 Up。仪表盘在 http://<your-ip>:8000立即创建您的管理员账号,因为在第一个账号建好之前注册页面是开放的,谁先到谁就控制这台服务器。然后设置您的实例域名,并把一条通配符 DNS 记录*.example.com*.apps.example.com)指向这台机器,这样 Coolify 就能给每个部署的应用发一个自己的子域名。

添加第一个应用。 接上一个 Git 源(GitHub、GitLab 或一个普通的仓库 URL),选一个分支,设好域名,然后部署。Coolify 内置的 Traefik 代理会为这个子域名路由并申请证书。对于现成的软件,服务目录点几下就能部署:同一个 您原本可能要手动搭起来的 n8n 工作流自动化栈 就是其中一项,用于状态页监控的 Uptime Kuma 也是。

TLS 与备份。 通过内置的 Traefik 为每个应用自动申请 Let's Encrypt,所以每个部署的子域名都能拿到证书。备份以数据库为先:您可以把 Postgres 和 MySQL 的转储定时导到兼容 S3 的存储上。整实例备份(Coolify 配置本身,位于 /data/coolify 下)就更靠手动了,所以那部分要您自己导出并存好。

费用与授权。 自托管版本 完全开源且免费,不限应用数量。另有一个可选的 Coolify Cloud(付费),替您托管控制平面,而您的应用仍然跑在您自己的服务器上,方便但并非必需。

失败情形,应用部署成功了,但它的域名打不开。 仪表盘在 http://<ip>:8000 上工作正常,构建变绿,但应用自己的 URL 返回连接错误或 Traefik 的 404 page not found。这指向的是代理或 DNS,而不是您的应用。两个常见原因。第一,代理试图启动时 80 或 443 端口已经被占用,于是它的容器带着一个 Docker 错误挂掉了:

Error response from daemon: driver failed programming external connectivity on endpoint coolify-proxy: Bind for 0.0.0.0:443 failed: port is already allocated

第二,通配符 DNS 记录缺失,所以 Traefik 从未收到过针对那个主机名的请求。如果反过来,Coolify 里整张服务器卡片显示 “Server is not reachable(服务器不可达)”,那是另一种故障:Coolify 根本连不上服务器的 Docker 套接字,通常是 Docker 守护进程停了或者一把 SSH 密钥坏了。在猜之前,先在日志里读到真正的原因:

docker logs coolify-proxy --tail 100

从 Proxy 页面修复它:按 Restart Proxy(重启代理),或者把代理配置重置为默认再启动一次,然后等大约两分钟让它稳定下来。让 8000 端口只对您自己的 IP 可达(或者在代理出问题时临时重新开放它),而不要把它一直开放给全世界——它以纯 HTTP 承载仪表盘,而 Coolify 自己的文档也说,一旦仪表盘通过它自己的域名对外提供,8000、6001 和 6002 端口就可以关闭。

同一台 VPS 上的资源开销

在同一台 4GB 机器上、部署任何真实工作负载之前的空闲状态下测得。用 free -mdocker stats --no-stream 检查您自己的数字,而不要相信任何单一数值,因为总量会随您的应用组合而变动。

  • CasaOS 最轻。这个面板是一小组 Go 服务;预计在您所跑的容器之外,大约有 150 到 300 MB 的开销。
  • Coolify 自己跑着好几个支撑容器(应用本身、一个 Postgres、一个 Redis、一个实时服务和 Traefik),所以在您部署任何东西之前,它空闲时就占到 600 MB 到 1 GB 左右。
  • Cloudron 静止时最重,因为不管您用不用,它都跑着自己的 nginx、数据库、邮件栈和监控;请预留 1 到 1.5 GB 的空闲开销。这就是它为什么要求至少 2GB,而在 4GB 上才喘得更轻松。

在一台小小的 2GB VPS 上,CasaOS 给真实应用留下的空间最多,Cloudron 留下的最少。如果您的套餐是 2GB,又想让 Cloudron 连同它的邮件服务器一起跑,那就打算升级这台机器吧。

更新、备份与锁定对比

更新。 Cloudron 按照它测试过的时间表替您更新平台和每一个应用:最省事,也最贴身照看。Coolify 从它自己的仪表盘上一键更新自身。CasaOS 通过它的安装脚本或 apt 更新面板,但您装的那些应用要您自己去拉取并重启。

锁定,这是第二年才会咬人的部分。 CasaOS 锁定最少:它的应用是普通的 Compose 项目,所以您可以把 docker-compose.yaml/DATA 下的卷复制到任何别的主机上继续跑。Coolify 处在中间:您的部署是您自己的 Dockerfile 和仓库,但它们的配置存在 Coolify 的数据库里,所以换主机意味着要在另一边重新创建这些项目。Cloudron 锁定最深:应用是 Cloudron 打包的,虽然您的数据能通过它出色的备份干净地离开,但打包本身不能,所以您得在目标平台上重新部署。数据可迁移,管道不可迁移。

您该选哪一个

先给简短版,再给退出通道。如果您想要三者中最不用动手的服务器、会跑好几个打包应用、并且愿意为受管的 TLS、备份和更新付一笔年费,就选 Cloudron。如果这是一个躲在您自己网络或反向代理之后的家庭实验室、您想给 Docker 一张友好的脸、又拒绝为任何东西付钱,就选 CasaOS。如果您从 Git 部署自己的代码、想要带自动 TLS 的推送即部署、又不想付托管 PaaS 的价钱,就选 Coolify。如果这三种都不像您,那么下一节就是那个诚实的答案。

如果符合以下情况,三个都别用……

对自己的规模诚实一点。如果您只跑一两个应用,或者您想理解并精确掌控机器上到底装了什么,就别用面板。 对一个小而稳定的服务栈来说,那份开销和锁定不值得。DIY 的路子是在您自己的 Compose 文件前面放一个反向代理:在多个 Docker Compose 应用前面放一个自动 TLS 的 Traefik 能给您等同于一键的 HTTPS,却没有面板那份分量,而备份则用一个您真正看得懂的 cron 定时 restic 任务来做。

一个最小的、带 Traefik 标签的服务,供对比
services:
  whoami:
    image: traefik/whoami
    labels:
      - traefik.enable=true
      - traefik.http.routers.whoami.rule=Host(`whoami.example.com`)
      - traefik.http.routers.whoami.tls.certresolver=le
    networks: [web]
networks:
  web:
    external: true

Traefik 读取这些标签,路由主机名,并去取证书:这正是面板做的同一件活,只不过是您能读懂的寥寥几行。

对于单个旗舰应用,情况更加清楚:一个 带 TLS 和自有备份流程、装在 Docker 上的 Nextcloud 就是一个 Compose 文件加一张证书。为了跑它而立起一整台一体机,只会全是代价、毫无好处。如果您在决定怎么跑之前还在决定跑什么,那么 2026 年有什么值得自托管的指南 是更好的起点。

FAQ

我到底需不需要一个自托管面板?

只有当您看重面板在多个应用上自动化的那四件事时才需要:一键安装、自动 TLS、定时备份和用户管理。对一两个服务来说,Traefik 后面的普通 Docker Compose 用远少的开销、零锁定就能做同样的 TLS 活。面板在您跑很多应用、且您的时间比它们耗掉的内存更值钱时才划算。

哪个面板最适合新手?

对于一个不向充满敌意的互联网暴露任何东西的家庭实验室,CasaOS 起步最温和:一条命令加一个友好的界面,还没有账单要付。但在暴露任何东西之前,您必须在前面放一个终结 TLS 的反向代理,因为它出厂就是纯 HTTP。如果您想要有人替您把 TLS 和备份都管好、并且愿意为此付钱,那么在它两个应用的免费上限之内,Cloudron 是最贴身照看的。

Cloudron 免费吗?

部分免费。免费额度允许 两个应用,用来试用或搭一套很小的东西够用了。超出之后 Cloudron 就是一份付费订阅,可按月或按年计费,付费档位上应用数量不限。它是一款带封顶免费方案的商业产品,而不是免费软件,所以如果您的服务栈会增长,就为它做好预算。

我能让这些面板和我现有的应用并存吗?

Cloudron:不能。它 要求一台干净的 Ubuntu 机器,如果 nginx、Docker 或 Node 已经装了就会中止,因为它管理整台机器。CasaOS 和 Coolify 友好一些,因为它们会安装自己的 Docker 栈,原则上能与别人共用一台机器,但两者都需要 80 和 443 端口,所以它们会和您已经在跑的任何 Web 服务器或代理相撞。在一台已经托管着别的东西的机器上,面板通常是错误的工具;改用 Traefik 加 Compose 吧。

以后我怎么从面板迁走?

在需要之前就规划好您的退出。从 CasaOS,把应用的 docker-compose.yaml 和它的 /DATA 卷复制到新主机上再启动一遍。从 Coolify,导出每个项目的配置,并让它在目标端指向同样的仓库。从 Cloudron,把数据从它的备份还原到新平台上全新安装的应用里,因为 Cloudron 的打包不能随行,只有数据能。无论哪种情况,都先在一台用完即弃的机器上测试还原,再拆掉旧的那台。

#cloudron#casaos#coolify#自托管#Docker