2026 年,Vercel 的 Hobby 计划已经把 Serverless Function 执行时间限制到了 100 小时/月,而 Pro 计划涨到了 $20/人/月——一个 5 人团队每月仅部署费用就要 $100。与此同时,一台 $4/月的 Hetzner VPS 就能跑起完整的全栈应用。Coolify 正是连接这两者的桥梁:它是一个开源自托管 PaaS 平台,让你用一台 VPS 就获得 Vercel 级别的部署体验——Git 推送自动部署、自动 HTTPS、一键回滚、多环境管理——而成本仅为云平台的 1/10。截至 2026 年 5 月,Coolify 在 GitHub 上已斩获 40,000+ Star,成为自托管部署领域最受欢迎的开源项目。
🚀 一、Coolify 架构解析与平台对比
1.1 Coolify 是什么
Coolify 的核心定位是 「自托管的 Vercel + Railway + Netlify」。它通过 Docker 容器化部署,支持几乎所有主流框架和语言,提供 Web GUI 管理界面,底层依赖 Docker Compose 进行服务编排。
与传统手动部署相比,Coolify 的核心价值在于:
- ✅ Git 集成:推送代码自动构建部署(支持 GitHub、GitLab、Gitea)
- ✅ 自动 HTTPS:基于 Let’s Encrypt 自动申请和续期 SSL 证书
- ✅ 零停机部署:Health Check 通过后才切换流量
- ✅ 一键回滚:保留历史版本,秒级回退
- ✅ 多服务器管理:支持将应用部署到多台服务器
- ✅ 内置数据库:一键部署 PostgreSQL、MySQL、Redis、MongoDB 等
1.2 成本对比:Coolify vs 云平台
这是开发者最关心的问题。以下是一个典型的全栈应用(Next.js + PostgreSQL + Redis)的月度成本对比:
| 对比维度 | Vercel Pro | Railway | Fly.io | Coolify + Hetzner |
|---|---|---|---|---|
| 计算资源 | 按量计费 | $5-20/月 | $5-15/月 | $4.5/月(CX22) |
| 数据库 | Neon $19/月 | $5-10/月 | $3-10/月 | 自建,$0 |
| Redis | Upstash $10/月 | $5/月 | $3/月 | 自建,$0 |
| 带宽 | 1TB 免费 | 100GB | 160GB | 20TB(Hetzner) |
| 团队协作 | $20/人/月 | 按量 | 免费 | 免费(无限制) |
| 月总成本 | $60-100 | $20-50 | $15-40 | $4.5 |
⚡ **关键结论:**对于个人项目和小团队,Coolify + Hetzner VPS 的组合成本仅为 Vercel Pro 的 1/15,且资源上限更高(20TB 带宽 vs 1TB)。但需要注意,自托管意味着你需要自己负责服务器安全、备份和监控。
1.3 适用场景与不适用场景
✅ 推荐使用 Coolify 的场景:
- 个人项目、Side Project、博客、工具站
- 中小团队的内部工具和 MVP
- 对成本敏感的创业项目
- 需要自定义基础设施的项目(如内网部署)
- 需要部署非 Web 应用(如 Telegram Bot、定时任务)
❌ 不推荐使用 Coolify 的场景:
- 需要全球边缘节点(CDN)的应用——Vercel/Cloudflare 更合适
- 日 PV 超过 100 万的高流量站点——需要专业运维团队
- 团队没有 Linux 基础知识——自托管需要基本的服务器管理能力
💡 **提示:**如果你的项目需要全球边缘部署,Coolify 也支持多服务器集群模式——你可以在亚洲、欧洲、美洲各部署一台 VPS,Coolify 会自动管理。但这需要更复杂的配置和更高的运维成本。
🔧 二、Coolify 安装与基础配置
2.1 一键安装
Coolify 的安装极其简单,一条命令搞定。它会自动安装 Docker、Docker Compose 和 Coolify 本身:
# Coolify 一键安装脚本(支持 Ubuntu/Debian/CentOS/RHEL)
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
安装完成后,访问 http://your-server-ip:8000 即可打开 Coolify 管理界面。首次访问需要注册管理员账号。
⚠️ **警告:**安装完成后,务必第一时间配置域名和 HTTPS。直接用 IP 访问存在安全风险,且 Git Webhook 回调需要 HTTPS 域名。
2.2 服务器推荐配置
根据应用规模选择合适的 VPS:
| 场景 | CPU | 内存 | 存储 | 月成本(Hetzner) |
|---|---|---|---|---|
| 个人项目(1-3 个应用) | 2 核 | 2GB | 40GB | €3.29 |
| 小团队(5-10 个应用) | 4 核 | 8GB | 80GB | €7.49 |
| 中型项目(10-20 个应用) | 8 核 | 16GB | 160GB | €15.49 |
📌 **记住:**Coolify 本身占用约 500MB 内存。2GB 内存的服务器在运行 Coolify 后只剩 1.5GB 给应用,建议至少 4GB 内存。
2.3 配置域名与自动 HTTPS
将域名(如 coolify.example.com)的 A 记录指向服务器 IP,然后在 Coolify 设置中配置:
# 在 Coolify 的 Settings 页面配置
# Instance Domain: coolify.example.com
# 自动生成 Let's Encrypt SSL 证书
如果你使用 Cloudflare 作为 DNS 代理,需要注意:
# 如果使用 Cloudflare 代理,需要在 Cloudflare 控制台:
# 1. SSL/TLS 模式设为 "Full (Strict)"
# 2. 确保 Coolify 服务器上也有有效证书
# 3. 或者关闭 Cloudflare 代理(DNS Only 模式)
⚠️ **警告:**Coolify 的 Let’s Encrypt 证书申请需要 80 端口可达。如果你的服务器防火墙阻止了 80 端口,证书申请会失败。确保开放 80 和 443 端口。
🎯 三、部署全栈应用实战
3.1 部署 Next.js 应用
以一个 Next.js 应用为例,展示完整的部署流程:
第一步:连接 Git 仓库
在 Coolify 中创建新项目(Project),然后添加新服务(Service)。选择 “Public Repository” 或通过 GitHub App 接入私有仓库。
Repository URL: https://github.com/your-username/your-nextjs-app
Branch: main
Build Pack: nixpacks(自动检测框架)
第二步:配置环境变量
在 Coolify 的 Environment Variables 中添加:
# .env 示例
DATABASE_URL=postgresql://user:password@postgres:5432/mydb
REDIS_URL=redis://redis:6379
NEXT_PUBLIC_API_URL=https://api.example.com
NODE_ENV=production
第三步:配置构建命令
Coolify 使用 Nixpacks 自动检测框架,但你也可以自定义:
# nixpacks.toml(可选,放在项目根目录)
[phases.build]
cmds = ["npm run build"]
[phases.start]
cmd = "npm start"
[variables]
NODE_ENV = "production"
PORT = "3000"
第四步:配置域名与端口
在 Coolify 的 Domains 配置中设置:
Domain: https://your-app.example.com
Port: 3000
Coolify 会自动配置 Caddy 反向代理,申请 SSL 证书,并将流量转发到容器的 3000 端口。
3.2 一键部署 PostgreSQL + Redis
Coolify 的一大优势是内置了常用数据库的一键部署。在同一个 Project 中,添加 Database 服务:
# PostgreSQL 配置
Type: PostgreSQL
Version: 16
Database: mydb
Username: myuser
Password: auto-generated(或自定义)
# Redis 配置
Type: Redis
Version: 7
Password: auto-generated
部署后,Coolify 会自动创建内部网络,应用可以通过容器名直接访问数据库:
# 应用内连接(同一 Project 内)
DATABASE_URL=postgresql://myuser:password@postgres:5432/mydb
REDIS_URL=redis://:password@redis:6379
# 外部连接(需要开启 Public Port)
Host: your-server-ip
Port: 5432(PostgreSQL)/ 6379(Redis)
⚠️ **警告:**数据库默认只在内部网络可达。如果需要外部访问(如本地开发工具连接),需要在数据库设置中开启 Public Port,并配置防火墙规则限制访问 IP。永远不要将数据库端口直接暴露到公网。
3.3 Docker Compose 自定义部署
对于复杂的应用栈,Coolify 支持直接使用 Docker Compose 配置:
# docker-compose.yml — 一个完整的全栈应用示例
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/app
- REDIS_URL=redis://cache:6379
depends_on:
db:
condition: service_healthy
cache:
condition: service_started
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
worker:
build:
context: .
dockerfile: Dockerfile.worker
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/app
- REDIS_URL=redis://cache:6379
command: ["node", "dist/worker.js"]
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: app
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user -d app"]
interval: 10s
timeout: 5s
retries: 5
cache:
image: redis:7-alpine
command: redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru
volumes:
pgdata:
在 Coolify 中选择 “Docker Compose” 作为构建方式,直接粘贴上述配置即可。
💡 四、CI/CD 与生产优化
4.1 Git 推送自动部署
Coolify 通过 GitHub/GitLab Webhook 实现自动部署。配置步骤:
- 在 Coolify 中连接 GitHub(推荐使用 GitHub App,而非 Personal Access Token)
- 选择要部署的仓库和分支
- Coolify 自动配置 Webhook
每次推送到指定分支,Coolify 会自动触发构建和部署。部署过程如下:
Git Push → Webhook 触发 → 拉取代码 → Nixpacks 检测框架
→ 构建 Docker 镜像 → 启动新容器 → Health Check → 切换流量
📌 **记住:**Coolify 默认使用 Nixpacks 进行构建。如果你的项目有自定义 Dockerfile,Coolify 会优先使用它。在高级设置中可以切换构建方式。
4.2 零停机部署与回滚
Coolify 的零停机部署依赖 Health Check 机制:
# 在 Coolify 的 Health Check 配置中
Health Check URL: /api/health
Health Check Port: 3000
Health Check Interval: 30s
Health Check Timeout: 10s
Health Check Retries: 3
部署流程:
- 构建新版本镜像
- 启动新容器
- 等待 Health Check 通过
- 切换流量到新容器
- 停止旧容器
如果 Health Check 失败,Coolify 不会切换流量,旧版本继续运行。你可以在部署历史中一键回滚到任意历史版本。
4.3 Webhook 自定义部署
除了 Git Webhook,Coolify 还支持自定义 Webhook 触发部署:
# 手动触发部署(通过 API)
curl -X POST "https://coolify.example.com/api/v1/deploy" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"application_uuid": "your-app-uuid",
"force": true,
"rollback_uuid": "optional-rollback-version-uuid"
}'
4.4 备份策略
Coolify 内置了数据库备份功能,支持多种备份目标:
# Coolify 备份配置
# 支持的存储后端:S3、MinIO、本地磁盘、SFTP
# S3 备份配置示例
S3_ENDPOINT=https://s3.amazonaws.com
S3_BUCKET=my-coolify-backups
S3_ACCESS_KEY=your-access-key
S3_SECRET_KEY=your-secret-key
BACKUP_FREQUENCY=daily
BACKUP_RETENTION=7 # 保留 7 天
⚠️ **警告:**Coolify 的备份功能只覆盖数据库,不包含应用代码和上传的文件。应用代码在 Git 中,但用户上传的文件需要额外备份策略——建议挂载 Docker Volume 并定期同步到 S3。
⚠️ 五、常见坑点与避坑指南
5.1 内存不足
问题:服务器内存不足导致应用 OOM(Out of Memory)被杀。
解决方案:
# 配置 Swap 空间(推荐 2-4GB)
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
# 限制 Docker 容器内存
# 在 Coolify 的服务配置中设置 Memory Limit: 512m
5.2 磁盘空间清理
Docker 镜像和构建缓存会逐渐占用磁盘空间:
# 定期清理 Docker 资源
docker system prune -af --volumes
# 或在 Coolify 的 Server 设置中启用自动清理
# Settings → Server → Docker Cleanup → 启用
5.3 SSL 证书续期失败
Let’s Encrypt 证书每 90 天续期一次。如果续期失败,网站会显示证书过期警告:
# 检查证书状态
docker exec coolify caddy list-certs
# 手动触发续期
docker exec coolify caddy renew-certs
# 确保 80 端口可达(Let's Encrypt HTTP-01 验证需要)
sudo ufw allow 80/tcp
5.4 数据库连接数耗尽
当多个应用共享同一个 PostgreSQL 实例时,容易出现连接数耗尽:
-- 检查当前连接数
SELECT count(*) FROM pg_stat_activity;
-- 设置最大连接数(postgresql.conf)
-- max_connections = 100
-- 推荐:在应用层使用连接池
-- Node.js: pg-pool(默认 10 个连接)
-- Python: SQLAlchemy pool_size=5
💡 **提示:**如果应用数量超过 5 个,建议为每个应用部署独立的数据库实例,而不是共享一个。Coolify 支持在同一台服务器上运行多个 PostgreSQL 实例(不同端口)。
📊 六、监控与运维
6.1 内置监控
Coolify 提供了基础的服务器和应用监控:
- CPU、内存、磁盘使用率
- 容器状态和资源消耗
- 部署历史和日志
6.2 外部监控集成
建议配合 Uptime Kuma(同样是自托管工具)进行外部可用性监控:
# docker-compose.yml — Uptime Kuma
services:
uptime-kuma:
image: louislam/uptime-kuma:1
volumes:
- uptime-data:/app/data
ports:
- "3001:3001"
volumes:
uptime-data:
6.3 日志管理
Coolify 的日志查看功能比较基础。对于生产环境,建议集成 Loki:
# 在 Coolify 的 Docker Compose 中添加 Loki
services:
loki:
image: grafana/loki:3.1.0
ports:
- "3100:3100"
volumes:
- loki-data:/loki
grafana:
image: grafana/grafana:11.1.0
ports:
- "3002:3000"
volumes:
- grafana-data:/var/lib/grafana
🎯 总结与建议
Coolify 不是万能的,但对于大多数中小型项目来说,它是目前性价比最高的自托管部署方案。
我的建议:
- ✅ 个人项目和 Side Project:直接用 Coolify + $4/月 VPS,省钱省心
- ✅ 小团队内部工具:Coolify 的多用户和权限管理完全够用
- ✅ MVP 和快速验证:从想法到上线只需 10 分钟
- ⚠️ 生产级商业项目:需要额外配置监控、备份、告警,建议有专人维护
- ❌ 高流量站点(日 PV > 100 万):考虑专业的 Kubernetes 集群或云平台
关键要点:
- 🔧 选对 VPS:Hetzner CX22(€3.29/月)或 Contabo VPS(€4.99/月)性价比最高
- 🔐 安全第一:配置 UFW 防火墙、禁用密码登录、启用自动更新
- 💾 备份不止数据库:用户上传文件需要额外备份策略
- 📊 监控不能少:至少配置 Uptime Kuma 进行可用性监控
- 🔄 定期维护:每月清理 Docker 资源、检查磁盘空间、更新系统
相关工具推荐:
- 🔧 Coolify 官方文档 — 最权威的参考手册
- 🔧 Uptime Kuma — 自托管的可用性监控工具
- 🔧 Hetzner Cloud — 性价比最高的欧洲 VPS 提供商
- 🔧 Nixpacks — Coolify 使用的应用构建工具
- 🔧 Caddy — Coolify 底层使用的 Web 服务器