2026 年 CapRover 一键部署实战:5 美元 VPS 当 Heroku 用(避坑版)
2026-08-16 · DevCraft Studio
Heroku 免费档取消后,想找个省钱又稳定的自托管方案?本文手把手教你在入门级 VPS 上装好 CapRover,用 100+ 一键模板秒开 WordPress、数据库和监控,再配上自动 HTTPS 与 CLI 部署。重点把 Compose 支持弱、UI 偏旧这些坑一次性讲清,新手 10 分钟就能拥有自己的 PaaS。
如果你跟我一样,是个预算有限、又不想每天跟服务器较劲的站长,那 CapRover 大概率会让你眼前一亮。它就是一个跑在 Docker 上的免费开源 PaaS(Apache-2.0 协议),从 2017 年活到现在,到了 2026 年依旧是"自托管 PaaS"圈子里最成熟稳重的选择之一。把 Heroku 免费档取消之后那批想搬家的流量,很多最后都落在了它头上。
延伸阅读
更多相关攻略推荐:【知识库自托管 02】2026 实测:VPS 自托管 Anythin、二手 VPS / 账号转让市场实录:LowEndTalk trans、2026 VPS 选购决策树与白皮书:一张图看懂怎么买、如何给 VPS 厂商做"信用评估":跑路、超售与售后风险排查手册、【知识库自托管 01】2026 企业/个人私有文档 RAG 问答选型。
为什么是 CapRover,而不是自己拼 Docker Compose
说白了,CapRover 帮你把最烦的那几件事全包了:反向代理(Nginx)、免费证书(Let's Encrypt)、应用部署、扩容、日志、回滚。你只管把代码丢上去,剩下的它替你管。它底层用的是 Docker Swarm,但对你完全透明,不需要你去学 Swarm 那一堆概念。
- 零门槛 HTTPS:域名一填,勾一下,证书自动申请自动续期。
- 100+ 一键应用:WordPress、Ghost、MySQL、PostgreSQL、Redis、MongoDB、Grafana、Uptime Kuma、n8n 等等,点几下就开。
- CLI 部署:一条
caprover deploy把本地代码推上去构建。 - 免费:软件本身不要钱,你只付 VPS 的钱。
像 RackNerd、Cloudcone、Gigsgigscloud 这类常年打折的入门 VPS,配上 CapRover 正好,一年几十块人民币就能养一个自己的"小 Heroku"。我在 Gigsgigscloud 的香港特价机上跑过一整套 WordPress + PostgreSQL + Uptime Kuma,三个月下来稳得一笔,没掉过链子。
还有一点很关键:CapRover 是单机 Swarm 起步,但天生支持加节点。你今天用 Cloudcone 的一台小机器练手,明天预算宽裕了再买台 RackNerd 加进集群,平滑扩容,不用推倒重来。这种"先便宜后扩展"的路线,正好契合省钱玩家的成长曲线。
先准备一台合适的 VPS
官方给的最低要求是 Ubuntu 20.04+,1 vCPU、1 GB 内存就能跑起来,但说实话 1 GB 跑 WordPress 加数据库有点紧。我的建议是:
- 内存:至少 2 GB,跑数据库才不卡;预算够就 4 GB。
- 硬盘:20 GB 起步,数据库和镜像会慢慢吃空间,建议 30 GB 以上。
- CPU:1 核够玩,2 核体验明显更顺。
- 系统:Ubuntu 22.04 或 24.04 最稳,别用太冷门的发行版。
Cloudcone 和 Gigsgigscloud 经常有 1~2 GB 内存的特价机,RackNerd 的双十一/黑五套餐也很适合拿来练手。买完记得把 SSH 公钥配上,关掉密码登录,这步别省。
装 CapRover 只要一条命令
登录服务器后,先确保装了 Docker。没有的话一行搞定:
curl -fsSL https://get.docker.com | sh
然后启动 CapRover 容器。这是最核心的一步,把 80、443、3000 三个端口和 Docker socket 挂进去:
docker run -d -p 80:80 -p 443:443 -p 3000:3000 -e ACCEPTED_TERMS=true -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain --name caprover --restart always caprover/caprover
等个半分钟,浏览器打开 http://你的服务器IP:3000,就会看到初始化向导。它会让你设一个管理员密码、填一个"根域名"。这里就是第一个坑——
初始化时如果一直卡在"connecting to captain"或者提示无法绑定域名,十有八九是 80/443 端口被别的服务占了,或者防火墙没放行。先 sudo ufw status 看一眼,再确认没装过 Nginx、Apache 之类抢端口的软件。CapRover 自己会起 Nginx,冲突就起不来。另外首次访问请用 IP 而非域名,等向导走完、域名和证书都配好之后再用域名访问后台。
避坑一:必须先做好通配符 DNS
CapRover 的设计是每个应用占一个子域名,比如 wp.apps.example.com。所以它要求你先在域名解析里加一条通配符 A 记录,把 *.apps.example.com 全部指向你的服务器 IP。没有这条记录,后面应用都访问不了。
- 在域名控制台加一条 A 记录:主机名填
*,值填服务器 IP。 - CapRover 根域名建议用
apps.example.com这种三级域,别有冲突。 - DNS 全球生效要几分钟,可以用
dig apps.example.com验证一下再继续。
很多新手卡在这一步,以为装完就能用,结果应用死活打不开,其实就是通配符没生效。Gigsgigscloud 这种机器 IP 如果是共享的或会变动,更要提前把域名绑死。
一键开 WordPress、数据库和监控
进后台点 Apps → One-Click Apps/Databases,搜索框里输 WordPress,填一下应用名、MySQL 密码,点 Deploy,几十秒后 WordPress 和它的数据库两个容器就都起来了。同样地,PostgreSQL、Redis、MongoDB、Grafana、Uptime Kuma 全是这个套路。
- WordPress:建站神器,配好域名后去 HTTP Settings 开 HTTPS。
- PostgreSQL / MySQL:给自己的应用当数据库,内部用
srv-captain--应用名当主机名直连。 - Grafana + Prometheus:想看监控就一起开,数据面板很专业。
- Uptime Kuma:ping 一下自己的服务,挂了发通知,比裸跑省心。
别忘了 CapRover 自己还内置了 NetData 监控:后台点 Monitoring 就能看到 CPU、内存、磁盘实时曲线,不用额外装任何东西。预算紧的站长用 RackNerd 那类小机器时,盯着 NetData 看内存别爆,比啥都管用。
自动 HTTPS 与自定义域名
每个应用部署完,进到它的 HTTP Settings,填你的真实域名(比如 blog.example.com),点 Enable HTTPS,Let's Encrypt 证书几秒就发下来。再勾上 Force HTTPS,所有 HTTP 流量自动跳 HTTPS。这一步完全免费,也不用自己碰 Nginx 配置。
- 想要一次性给所有子域发通配符证书,去 Settings 开 Wildcard Certificate,用 DNS-01 挑战验证。
- 证书自动续期,你基本可以忘了它的存在。
- 如果域名没备案又想在国内访问,Cloudcone 的香港/海外线路会更稳一点。
用 CLI 部署你自己的代码
网页上传适合小项目,正经开发还是用命令行。先在项目根目录放一个 captain-definition 文件,告诉 CapRover 怎么构建:
{ "schemaVersion": 2, "dockerfilePath": "./Dockerfile" }
本地装好 CLI 后直接推:
npm install -g caprovercaprover logincaprover deploy
它会问你服务器地址、应用名、分支,然后自动打包、构建镜像、起容器、挂到 Nginx 后面。也可以走 GitHub Webhook:把后台给的 webhook URL 粘到仓库的 Webhooks 里,以后 git push 就自动部署。配合 GitHub Actions 做 CI/CD 也很顺,token 在后台 Settings → API Tokens 拿。
用 Docker Swarm 横向扩容
访问量上来了怎么办?CapRover 基于 Docker Swarm,扩容就是改个数字。在应用页的 Deployment 里把 Instance Count 调到 3,Nginx 会自动在多个容器之间做负载均衡。要更大规模,可以把别的机器加进 Swarm 集群:
docker swarm join --token <你的token> 主节点IP:2377
这样 CapRover 会把容器调度到不同节点上。不过要提醒一句:Swarm 不是 Kubernetes,功能够用但不花哨。真到了要上 K8s 的体量,就该考虑迁移了。对绝大多数个人站长和独立开发者来说,Swarm 这点能力绰绰有余。
避坑二:Compose 支持很弱,别硬刚
这是 CapRover 最被吐槽的一点。它本身用的是自家的 captain-definition 体系,对原生 docker-compose.yml 的支持非常有限,只有一小部分字段能用。如果你的工作流已经深度依赖 Compose,那 Coolify 或 Dokploy 可能更对胃口。
- 多容器、带 networks、depends_on 复杂的项目,在 CapRover 里要拆成一个个"应用"分别部署,再用内部主机名互联。
- 别指望直接丢一个完整的 compose 文件进去就全跑起来。
- 数据库这类有状态服务,一定要在 App Configs 里配 Persistent Directories(持久目录),否则容器一重建数据全没。
避坑三:UI 偏旧、更新慢,但胜在稳
CapRover 的界面是那种"能用但不好看"的风格,几年没大改,开发节奏也慢了下来。最新稳定版大概在 2026 年中是 v1.14.x,主要是修 Nginx 安全热修之类。慢不等于差——它意味着成熟、踩坑少。但你要接受:新特性不会频繁冒出来,安全补丁响应也没有那些融资的新锐快。
- 保持版本更新,尤其安全相关的 hotfix 别拖。
- 后台 3000 端口那个 dashboard 是整个服务器的命门,务必设强密码并开 HTTPS,最好用防火墙只放行必要端口。
- 用 UFW 只开 22、80、443:
sudo ufw allow 22,80,443/tcp && sudo ufw enable。
备份与灾难恢复,别等丢了才哭
CapRover 自己不带一键整机备份,这点得自己操心。但因为它所有有状态数据都在 Docker volume 里(默认挂在宿主机的 /var/lib/docker/volumes 下,名字形如 captain--应用名),备份思路就很清晰:定期把对应 volume 目录打包,或者进容器里用官方工具导出。
- 数据库:PostgreSQL 用
pg_dump、MySQL 用mysqldump,每天定时任务导出成 sql 文件,再传到对象存储或另一台机器。 - 站点文件:WordPress 的上传目录配了持久目录后,直接
tar打包那个 volume 即可。 - 整盘快照:RackNerd、Cloudcone 大多提供便宜的快照功能,上线前先拍一张,回滚比任何脚本都快。
- 配置:你的
captain-definition和 docker-compose 碎片都在代码仓库里,用 Git 管住,丢失也不慌。
我个人的习惯是:代码进 GitHub,数据每天凌晨 dump 一次同步到第二台机器,再每周做一次 VPS 快照。三重保险,睡得踏实。千万别信"小站不会出事",硬盘说挂就挂,Gigsgigscloud 再便宜也救不回没备份的数据。