Coolify 自托管 PaaS 完全指南¶
为什么要学 Coolify¶
开源的 Heroku/Vercel 替代品:Coolify 让你在自己的服务器上获得与 Heroku、Vercel、Netlify 相同的一键部署体验。推送代码 → 自动构建 → 自动部署 → 自动 SSL,全程无需手动 SSH。
完全控制数据和基础设施:所有数据都在你自己的服务器上。没有供应商锁定,没有月账单惊喜,没有冷启动。适合对数据主权有要求的企业和个人开发者。
不只是应用部署:Coolify 同时管理数据库(PostgreSQL、MySQL、Redis、MongoDB)、服务(MinIO、Plausible Analytics 等),支持一键安装 100+ 预配置服务。
自动 SSL 和反向代理:内置 Traefik 反向代理,自动为每个部署的应用配置 Let's Encrypt SSL 证书。不需要手动配置 Nginx 或 Caddy。
多服务器管理:可以从一个 Coolify 实例管理多台服务器。开发、测试、生产环境可以分布在不同服务器上,统一在一个面板管理。
核心概念详解¶
Coolify 是什么(白话解释)¶
你租了一台云服务器(VPS),想部署几个网站和 API。传统方式是 SSH 进去、装 Docker、配 Nginx、申请 SSL 证书、写 docker-compose、配置 CI/CD。每次更新都要手动操作。
Coolify 就是帮你把这些全自动化了。装好 Coolify 后,你在 Web 界面上: - 连接 GitHub 仓库 → 自动构建部署 - 点击"新建数据库" → PostgreSQL 立刻就绪 - 域名绑定 → SSL 自动配置 - 代码推送 → 自动重新部署
架构组件¶
| 组件 | 作用 |
|---|---|
| Coolify Server | 管理面板,运行在主服务器上 |
| Traefik | 反向代理 + SSL 终止 |
| Docker | 容器运行时 |
| SSH | 与远程服务器通信 |
| Git Webhooks | 监听代码推送触发部署 |
| Let's Encrypt | 自动 SSL 证书 |
支持的部署方式¶
| 方式 | 说明 |
|---|---|
| Git 仓库 | 从 GitHub/GitLab/Bitbucket/Gitea 自动部署 |
| Docker Compose | 上传 docker-compose.yml |
| Docker Image | 从任意 Registry 拉取镜像 |
| Dockerfile | 使用项目中的 Dockerfile 构建 |
| Buildpack | 自动检测语言和框架(Nixpacks) |
| 静态站点 | HTML/JS/CSS 直接部署 |
Coolify vs Dokploy vs CapRover 对比¶
| 特性 | Coolify | Dokploy | CapRover |
|---|---|---|---|
| 开源 | 完全开源 | 完全开源 | 完全开源 |
| UI | 现代化(最好) | 现代化 | 功能性 |
| 部署方式 | Git/Docker/Compose | Git/Docker/Compose | Git/Docker |
| 数据库管理 | 内置(一键部署) | 内置 | 需手动 |
| SSL | 自动(Let's Encrypt) | 自动 | 自动 |
| 多服务器 | 支持 | 支持 | 集群模式 |
| 一键应用 | 100+ 预配置 | 有限 | 有限 |
| 监控 | 内置 | 基础 | 需额外配置 |
| 构建方式 | Nixpacks/Docker | Docker | Docker |
| Webhook 部署 | 支持 | 支持 | 支持 |
| 社区 | 最活跃 | 增长中 | 成熟 |
| 维护状态 | 非常活跃 | 活跃 | 稳定 |
| 最低配置 | 2GB RAM | 1GB RAM | 1GB RAM |
安装与配置¶
系统要求¶
- Linux 服务器(Ubuntu 22.04+ 推荐)
- 最少 2 CPU + 2GB RAM(推荐 4GB+)
- SSH 访问
- 域名(可选但推荐)
一键安装¶
# SSH 到你的服务器
ssh root@your-server-ip
# 一键安装脚本
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
# 安装完成后
# 打开 http://your-server-ip:8000
# 注册管理员账号
Docker Compose 安装(高级)¶
# 创建目录
mkdir -p /data/coolify/{source,ssh,applications,databases,backups,services,proxy,webhooks-during-maintenance}
# 下载 docker-compose
curl -fsSL https://cdn.coollabs.io/coolify/docker-compose.yml -o /data/coolify/source/docker-compose.yml
curl -fsSL https://cdn.coollabs.io/coolify/.env.production -o /data/coolify/source/.env
# 生成密钥
sed -i "s|APP_ID=.*|APP_ID=$(openssl rand -hex 16)|g" /data/coolify/source/.env
sed -i "s|APP_KEY=.*|APP_KEY=base64:$(openssl rand -base64 32)|g" /data/coolify/source/.env
sed -i "s|DB_PASSWORD=.*|DB_PASSWORD=$(openssl rand -base64 32)|g" /data/coolify/source/.env
# 启动
cd /data/coolify/source
docker compose up -d
域名配置¶
- 在 DNS 中添加 A 记录:
coolify.yourdomain.com→ 服务器 IP - 在 Coolify Settings 中配置域名
- SSL 证书自动签发
添加远程服务器¶
- 在 Coolify UI 中点击 "Servers" → "Add New"
- 输入远程服务器 IP 和 SSH 端口
- 将 Coolify 的公钥添加到远程服务器的
~/.ssh/authorized_keys - 验证连接
快速上手:5 分钟最小示例¶
部署一个 Next.js 应用¶
- 新建项目:点击 "New Resource" → "Application"
- 连接 Git:选择 GitHub → 授权 → 选择仓库
- 配置:
- Build Pack: Nixpacks(自动检测)
- Branch: main
- Port: 3000
- Domain: app.yourdomain.com
- 部署:点击 "Deploy"
- 等待构建完成,访问 https://app.yourdomain.com
部署一个 Python FastAPI¶
项目中有 requirements.txt:
main.py:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello from Coolify!"}
Coolify 自动检测 Python 项目并使用 Nixpacks 构建。设置启动命令为:
进阶用法¶
场景一:一键部署数据库¶
Coolify UI → New Resource → Database → 选择类型:
PostgreSQL 16 ✓
MySQL 8 ✓
MariaDB ✓
MongoDB ✓
Redis ✓
ClickHouse ✓
DragonFly ✓
KeyDB ✓
配置选项: - 数据库名称 - 用户名/密码(自动生成) - 端口映射 - 数据持久化目录 - 备份计划
连接字符串自动生成,可直接在应用环境变量中引用。
场景二:Docker Compose 部署¶
# docker-compose.yml
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/mydb
depends_on:
- db
db:
image: postgres:16
volumes:
- pgdata:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: secretpass
redis:
image: redis:7-alpine
volumes:
pgdata:
在 Coolify 中选择 "Docker Compose" 类型,上传或链接 Git 仓库中的 compose 文件。
场景三:环境变量和密钥管理¶
Coolify UI → Application → Environment Variables
# 支持:
- 构建时变量 (Build)
- 运行时变量 (Runtime)
- Preview 环境变量 (PR Preview)
# 共享变量:
可以在 Team 级别设置共享环境变量,多个应用引用
场景四:自动部署(CI/CD)¶
1. Git Push 触发:
- 在 Coolify 中启用 "Auto Deploy"
- Coolify 自动在 GitHub 上设置 Webhook
- 每次 push 到指定分支自动部署
2. API 触发:
curl -X POST https://coolify.yourdomain.com/api/v1/deploy \
-H "Authorization: Bearer $COOLIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"uuid": "app-uuid"}'
3. PR Preview:
- 每个 PR 自动创建预览环境
- PR 合并后自动清理
场景五:一键安装流行服务¶
Coolify 预配置了 100+ 开源服务:
| 类别 | 服务 |
|---|---|
| 分析 | Plausible, Umami, Matomo |
| CMS | WordPress, Ghost, Strapi |
| 存储 | MinIO, Nextcloud |
| 监控 | Grafana, Uptime Kuma |
| CI/CD | Gitea, Drone |
| 数据库 | pgAdmin, Adminer, phpMyAdmin |
| 通讯 | Mattermost, Rocket.Chat |
| 其他 | Vaultwarden, Listmonk, n8n |
场景六:备份策略¶
Coolify UI → Database → Backups
- 计划备份:Cron 表达式(如每天凌晨3点)
- 备份保留:保留最近 N 份
- 备份存储:本地 / S3 / MinIO
- 手动备份:一键触发
- 恢复:从备份一键恢复
场景七:监控与日志¶
Coolify UI → Application → Logs
- 实时日志流
- 历史日志查看
- 容器资源使用(CPU/内存)
Coolify UI → Servers → 资源监控
- 服务器 CPU 使用率
- 内存使用
- 磁盘使用
- 网络流量
场景八:自定义 Nixpacks 构建¶
# nixpacks.toml(放在项目根目录)
[phases.setup]
nixPkgs = ["...", "ffmpeg"] # 额外系统包
[phases.install]
cmds = ["npm ci"]
[phases.build]
cmds = ["npm run build"]
[start]
cmd = "npm start"
[variables]
NODE_ENV = "production"
常见问题与排错¶
问题一:构建失败¶
# 查看构建日志
Coolify UI → Application → Deployments → 点击失败的部署
# 常见原因:
# 1. Dockerfile 错误
# 2. 依赖安装失败(网络问题)
# 3. 端口配置不匹配
# 4. 内存不足(增加 swap)
问题二:SSL 证书未签发¶
问题三:应用无法连接数据库¶
# 在 Coolify 中,同一服务器的应用和数据库通过 Docker 网络通信
# 使用 Docker 内部主机名,不要用 localhost
# 正确:
DATABASE_URL=postgresql://user:pass@db-container-name:5432/dbname
# 在 Coolify UI 中查看数据库的内部连接地址
问题四:磁盘空间不足¶
# Docker 镜像和构建缓存会占用大量空间
# 在服务器上清理
docker system prune -a --volumes
# 在 Coolify 中设置清理策略
# Settings → Cleanup 配置
问题五:如何更新 Coolify¶
# Coolify 支持自动更新
# Settings → 启用 Auto Update
# 或手动更新
cd /data/coolify/source
docker compose pull
docker compose up -d
参考资源¶
- 官方网站:https://coolify.io
- 官方文档:https://coolify.io/docs
- GitHub:https://github.com/coollabsio/coolify
- Discord 社区:https://coolify.io/discord
- Coolify Cloud(托管版):https://app.coolify.io
- 一键服务列表:https://coolify.io/docs/services
- YouTube 频道:https://www.youtube.com/@coollabsio