痛点
Heroku 免费层取消后,小团队和个人开发者的部署选择变得尴尬:要么付费用 Render/Railway,要么手搓 Docker Compose + Nginx + Let's Encrypt。前者按量计费容易超预算,后者维护成本高、配置分散。
更大的问题在企业内部:开发团队想要"Git Push 即部署"的体验,但 Kubernetes 太重、CI/CD 管道配置复杂,运维被迫在便利性和可控性之间反复权衡。
Coolify 正是为解决这个痛点而生——一个开源自托管 PaaS,提供类 Heroku/Vercel 的部署体验,同时数据和基础设施完全在你自己手里。
方案概览
Coolify 是基于 Docker 的自托管应用平台,核心特性:
| 能力 | 说明 |
|---|---|
| Git 集成 | 支持 GitHub/GitLab/Bitbucket,Push 自动触发构建部署 |
| 多语言支持 | Nixpacks 自动检测(Node.js、Python、Go、Rust、PHP 等)或自定义 Dockerfile |
| 一键数据库 | PostgreSQL、MySQL、Redis、MongoDB 等一键部署,自动备份 |
| 自动 HTTPS | 集成 Traefik,自动申请 Let's Encrypt 证书 |
| 多服务器管理 | 单面板管理多台远程服务器,通过 SSH 远程部署 |
| 资源监控 | 内置 CPU/内存/磁盘监控,支持告警通知 |
对比其他方案:
| 方案 | 优势 | 劣势 |
|---|---|---|
| Heroku/Render | 零运维 | 贵、数据不在手、供应商锁定 |
| 纯 Docker Compose | 灵活 | 无 UI、无自动 HTTPS、无 Git 集成 |
| Kubernetes | 生产级编排 | 复杂、学习曲线陡 |
| Coolify | 类 PaaS 体验 + 完全自控 | 需自己维护服务器 |
实操步骤
Step 1:安装 Coolify(单机模式)
最低要求:2C4G VPS(推荐 Ubuntu 22.04+)。
# 一键安装脚本(官方提供)
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
安装完成后访问 http://<你的IP>:8000,完成初始化设置(创建管理员账号)。
安装脚本做了什么: - 安装 Docker Engine - 拉取 Coolify 相关容器(coolify, coolify-db, coolify-redis, coolify-realtime) - 配置 Traefik 反向代理 - 设置 systemd 服务实现开机自启
Step 2:配置域名与 HTTPS
# DNS 解析:将 coolify.yourdomain.com 指向服务器 IP
# 在 Coolify 设置页面填入域名
# 验证 Traefik 自动签发证书
curl -I https://coolify.yourdomain.com
# 应返回有效的 Let's Encrypt 证书
在 Settings → General 中设置:
- Instance's Domain: https://coolify.yourdomain.com
- Coolify 会自动通过 Traefik 申请 SSL 证书
Step 3:部署第一个应用(Git 仓库)
- 进入 Projects → 创建新项目 → 添加资源 → Public Repository
- 填入 Git 仓库地址,如:
https://github.com/yourname/fastapi-app.git - Coolify 使用 Nixpacks 自动检测语言和构建步骤
- 配置环境变量(如
DATABASE_URL) - 设置域名(如
app.yourdomain.com) - 点击 Deploy
也支持 Docker Compose 部署:
# docker-compose.yaml(放在仓库根目录)
services:
web:
build: .
ports:
- "8080:8080"
environment:
- DATABASE_URL=${DATABASE_URL}
db:
image: postgres:16
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
Coolify 会自动识别 docker-compose.yaml 并按此编排部署。
Step 4:配置自动部署 Webhook
# 在 GitHub 仓库 Settings → Webhooks 添加:
# Payload URL: https://coolify.yourdomain.com/webhooks/source/github/events
# Content type: application/json
# Secret: 从 Coolify 面板获取
# 验证:push 一次代码,观察 Coolify 是否自动触发构建
git add . && git commit -m "trigger deploy" && git push
Coolify 也支持在 UI 中直接关联 GitHub App,免去手动配置 Webhook。
避坑指南
1. 内存不足导致构建失败
Coolify + Traefik + 应用构建同时运行时,2GB 内存可能不够。
# 检查内存使用
free -h
docker stats --no-stream
# 解决:添加 swap
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
建议最低 4GB 内存用于生产环境。
2. Traefik 证书申请失败
常见原因:DNS 未生效、端口 80/443 被占用。
# 确认 DNS 解析
dig +short coolify.yourdomain.com
# 确认端口未被占用
sudo ss -tulnp | grep -E ':80|:443'
# 查看 Traefik 日志
docker logs coolify-proxy 2>&1 | grep -i "acme\|certificate"
3. 数据备份策略
Coolify 数据存储在 /data/coolify/,务必定期备份:
# 备份 Coolify 数据库和配置
tar -czf /backup/coolify-$(date +%Y%m%d).tar.gz /data/coolify/
# 或使用 Coolify 内置的 S3 备份功能
# Settings → Backup → 配置 S3 兼容存储(MinIO/AWS S3)
进阶:多服务器管理
Coolify 最强大的能力之一是从单面板管理多台服务器:
# 在远程服务器上准备 SSH 密钥访问
# Coolify 通过 SSH 连接远程服务器执行 Docker 命令
# 在 Coolify UI: Servers → Add Server
# 填入 IP、SSH 端口、私钥
# Coolify 会自动在远程服务器安装 Docker
部署应用时可选择目标服务器,实现简单的多节点分布式部署。
总结
| 维度 | 评价 |
|---|---|
| 适合场景 | 小团队内部平台、个人项目、替代 Heroku/Render |
| 不适合场景 | 大规模微服务集群(此时该用 K8s) |
| 学习成本 | 极低,有 Docker 基础即可上手 |
| 维护成本 | 低,自动更新 + 内置监控 |
| 社区活跃度 | GitHub 35k+ Star,更新频繁 |
核心建议:
- 4C8G 起步用于生产,预留构建资源
- 必须配置备份——S3 备份或 cron + tar 定期归档
- 善用环境变量管理配置,不要硬编码
- 流量大时,Coolify 前面再加一层 CDN(Cloudflare)降低源站压力
Coolify 填补了"Docker Compose 太原始、Kubernetes 太复杂"之间的空白。对于日常管理 5-20 个服务的运维团队,它是当前性价比最高的自托管 PaaS 方案。