使用 Coolify 在 Hetzner VPS 上自动化应用部署
利用 Coolify 的 Git 集成、Docker Compose 编排和 Traefik 反向代理,在 Hetzner VPS 上实现成本有效的自托管应用部署与一键扩展。
在云计算成本不断上涨的今天,自托管解决方案已成为开发者追求控制力和经济性的首选。Coolify 作为一个开源 PaaS 平台,结合 Hetzner VPS 的低价高性能硬件,能完美实现自动化应用部署。本文聚焦 Coolify 在 Hetzner 上的 Git-based Docker Compose 编排、Traefik 反向代理以及一键服务扩展的工程实践,提供可操作的参数和清单,帮助你快速搭建高效的自托管环境。
Coolify 的核心价值在于简化自托管流程,避免传统 Docker 管理的复杂性。它支持从 Git 仓库直接拉取代码,通过 Docker Compose 自动构建和部署容器,同时集成 Traefik 作为动态反向代理,实现零配置的负载均衡和 HTTPS 证书管理。在 Hetzner VPS 上,这种组合特别高效:Hetzner 的 CX11 实例(1 vCPU、2GB RAM、20GB SSD)每月仅 €3.29,就能运行小型应用,而扩展时可无缝升级到 CPX31(4 vCPU、8GB RAM)以支持更高负载。根据官方文档,Coolify 推荐的最低配置为 2 vCPU 和 2GB RAM,这与 Hetzner 的入门级 VPS 高度匹配,确保部署稳定。
要落地这一方案,首先创建 Hetzner VPS。登录 Hetzner Cloud 控制台,选择 Nuremberg 或 Falkenstein 数据中心(延迟低),部署 Ubuntu 22.04 LTS 镜像。添加 SSH 公钥(生成命令:ssh-keygen -t ed25519 -C "your_email@example.com"),并启用防火墙规则:允许入站 TCP 22(SSH)、80(HTTP)、443(HTTPS)。实例规格参数:对于开发环境,选 CX11(€3.29/月);生产环境用 CPX21(2 vCPU、4GB RAM、€6.49/月),监控 CPU 使用率阈值设为 80% 以触发扩展警报。部署后,SSH 登录(ssh root@your-ip),更新系统:apt update && apt upgrade -y。
接下来安装 Coolify。执行官方一键脚本:curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash。该脚本自动安装 Docker、Docker Compose 和 Traefik,Coolify 服务将在端口 8000 启动。访问 http://your-ip:8000 完成初始设置:创建管理员账户(密码强度至少 12 位,包含大小写、数字、符号),启用 2FA(使用 Authy 或 Google Authenticator)。配置域名:在 DNS 提供商添加 A 记录(your-domain.com → your-ip)和通配符记录(*.your-domain.com → your-ip)。在 Coolify 仪表板 > 设置 > 通用,设置实例域名 https://coolify.your-domain.com,启用 Traefik 代理(默认集成,支持自动 Let's Encrypt 证书,续期阈值 30 天)。保存后,重启服务:systemctl restart coolify。安全参数:限制 root 登录为密钥认证,设置 UFW 防火墙(ufw allow 22,80,443 && ufw enable),并配置 fail2ban 监控 SSH 失败登录(阈值 3 次/5 分钟)。
部署应用的核心是 Git 集成和 Docker Compose 编排。在 Coolify 仪表板创建项目(例如 "my-app"),选择生产环境。添加资源 > Git 仓库,输入 GitHub URL(需授权 Coolify GitHub App:设置 webhook URL https://coolify.your-domain.com/api/v1/github/webhook)。构建设置:选择 Docker Compose 模式,上传 docker-compose.yml 文件(示例:version: '3' services: app: image: node:18 build: . ports: - "3000:3000" environment: - NODE_ENV=production traefik: image: traefik:v2.10 labels: - "traefik.enable=true" - "traefik.http.routers.app.rule=Host(app.your-domain.com
)" - "traefik.http.routers.app.entrypoints=websecure" - "traefik.http.routers.app.tls.certresolver=letsencrypt")。设置域名 app.your-domain.com,环境变量(如 DATABASE_URL=postgres://user:pass@db:5432/mydb)。点击部署,Coolify 将克隆仓库、构建镜像、启动容器,并通过 Traefik 路由流量。自动部署参数:启用 Git push webhook,分支主干(main),构建超时 10 分钟,健康检查间隔 30 秒(路径 /health,状态码 200)。
对于一键服务扩展,Coolify 支持动态 scaling。通过添加资源 > 服务,选择预置模板如 PostgreSQL(端口 5432,持久卷 10GB),或自定义 Docker Compose 多实例(replicas: 3)。Traefik 自动发现服务标签,实现负载均衡:标签示例 - "traefik.http.services.app.loadbalancer.server.port=3000"。监控扩展阈值:使用 Coolify 内置仪表板跟踪 CPU >70%、内存 >80% 时警报;集成 Prometheus(添加服务:prom/prometheus),设置告警规则(expr: rate(container_cpu_usage_seconds_total[5m]) > 0.7)。回滚策略:保留 5 个部署版本,手动回滚 via 仪表板;备份参数:启用 S3 兼容存储(MinIO,一键部署),cron 备份数据库(0 2 * * * 每日凌晨 2 点),保留 7 天本地 + 30 天云端。
在实际落地中,以一个 Node.js + PostgreSQL 应用为例:先部署数据库(资源 > 数据库 > PostgreSQL,设置 max_connections=100,shared_buffers=256MB),然后应用 Compose 文件链接(depends_on: [db]),环境变量注入 DB 凭证。测试 scaling:模拟负载(ab -n 1000 -c 50 http://app.your-domain.com/),观察 Traefik 日志(docker logs traefik),调整 replicas=2。成本优化:Hetzner 按小时计费,闲置时 snapshot 备份并停止实例(节省 90%);Coolify 无额外费用,总月费 <€10。风险控制:定期更新 Coolify(git pull && docker-compose up -d),扫描漏洞(trivy image --exit-code 1 --no-progress your-image);如果资源不足,回滚到单实例,阈值监控邮件通知(集成 SendGrid,限额 100/天)。
这一方案的 checklists:
VPS 准备清单:
-
[ ] Hetzner 账户 + 支付(信用卡/银行)
-
[ ] 创建 CX11/CPX21 实例,Ubuntu 22.04
-
[ ] SSH 密钥上传,防火墙 22/80/443
-
[ ] DNS A/* 记录指向 IP
Coolify 安装清单:
-
[ ] SSH 登录,系统更新
-
[ ] 执行 install.sh 脚本
-
[ ] 浏览器访问 8000 端口,设管理员 + 2FA
-
[ ] 配置域名 + Traefik,测试 HTTPS
部署 & 扩展清单:
-
[ ] 创建项目,添加 Git 仓库 + webhook
-
[ ] 上传/编辑 docker-compose.yml,设标签
-
[ ] 部署应用,验证域名访问
-
[ ] 添加数据库/服务,配置 scaling replicas=1-5
-
[ ] 设置监控(Prometheus),备份 cron
通过这些参数和清单,你能在 Hetzner VPS 上用 Coolify 实现可靠的自托管。相比云 PaaS,它节省 80% 成本,同时提供完整控制。未来,可扩展到多 VPS 集群,进一步提升可用性。
(字数:1025)