在当今云计算时代,自托管应用变得越来越受欢迎,而 Coolify 作为一个开源的自托管 PaaS (平台即服务) 解决方案,正在成为开发者的新宠。本教程将带你从零开始,一步步掌握 Coolify 的安装、配置和使用,让你能够在自己的服务器上部署各种应用。
目录
- 什么是 Coolify?
- 准备工作
- 创建服务器
- 安装 Coolify
- 初始设置与安全配置
- 部署你的第一个应用
- 使用 GitHub 集成
- 数据库设置与管理
- 高级配置:HTTP 重定向与基本认证
- 备份与恢复策略
- 监控与状态仪表板
- 常见问题排查
- Coolify 的优缺点
- 结语
1. 什么是 Coolify?
Coolify 是一个开源的自托管 PaaS 解决方案,旨在提供类似于 Netlify、Heroku 或 Vercel 的部署体验,但完全运行在你自己的服务器上。它的核心优势包括:
- 一键部署:从 GitHub 仓库直接部署应用
- 预配置服务:数据库、缓存、监控等服务的一键部署
- 自动 HTTPS:轻松配置 SSL 证书
- 自动更新:应用代码更新时自动重新部署
- 开源免费:不依赖第三方服务,完全自托管
Coolify 让你能够在自己的基础设施上获得类似商业 PaaS 平台的体验,非常适合希望自托管项目但又想减少运维复杂度的开发者。
2. 准备工作
在开始安装 Coolify 之前,你需要确保满足以下条件:
系统要求
- 至少 2 个 CPU 核心
- 至少 2GB 内存
- 至少 30GB 存储空间(推荐 40GB+)
- 带有公网 IP 的 VPS 或服务器
- 一个域名(用于设置 HTTPS)
推荐配置
根据实际使用情况,Coolify 团队建议的配置为:
- 4 个 CPU 核心
- 8GB 内存
- 50GB+ 存储空间
这样的配置足以运行 Coolify 本身以及多个中小型应用。
所需工具
- SSH 客户端(如终端、PuTTY 或 MobaXterm)
- 一个域名的 DNS 访问权限
3. 创建服务器
我们将使用 Hetzner 作为服务器提供商的例子,但你可以选择任何 VPS 提供商,如 DigitalOcean、Linode、Vultr 等。
在 AWS 创建 VPS
- 在 AWS Cloud 控制台创建一个新服务器
- 选择位置(建议选择离你最近的数据中心)
- 选择 Ubuntu 22.04 LTS 作为操作系统
- 选择符合要求的服务器类型(至少 2 核 2GB)
- 对于生产环境,推荐 4 核 8GB 配置
- 添加 SSH 密钥以便安全登录
4. 安装 Coolify
服务器创建好后,我们需要通过 SSH 连接到服务器并安装 Coolify。
SSH 连接到服务器
使用你配置的 SSH 密钥登录服务器:
ssh root@你的服务器IP
确认系统更新
首先确保系统已完全更新:
apt update
apt upgrade -y
安装 Coolify
使用官方安装脚本安装 Coolify:
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
安装完成后,你会看到一条消息,显示 Coolify 已在 8000 端口上运行。接下来,我们需要通过浏览器访问:
http://你的服务器IP:8000
5. 初始设置与安全配置
创建管理员账户
- 通过浏览器访问
http://你的服务器IP:8000
- 设置管理员名称、邮箱和密码
- 完成初始设置向导
配置 HTTPS
为了安全地使用 Coolify,我们需要配置 HTTPS:
-
在 DNS 提供商处添加 A 记录,将域名指向你的服务器 IP
- 例如:
coolify.你的域名.com
→你的服务器IP
- 添加通配符记录:
*.你的域名.com
→你的服务器IP
- 例如:
-
在 Coolify 仪表板中,转到设置 → 常规
-
设置实例域名为
https://coolify.你的域名.com
-
取消勾选"验证 DNS 设置"(如果遇到问题)
-
保存设置
配置代理服务器
Coolify 使用代理服务器来管理 HTTPS 和请求路由:
- 转到服务器设置 → 代理
- 选择 Caddy 作为代理(更简单的配置)
- 在通配符域名中设置
https://你的域名.com
- 保存设置并停止旧代理
- 启用 Caddy 代理
启用防火墙
为了保护服务器安全,我们需要配置防火墙,只开放必要的端口:
- 在 Hetzner (或你的提供商) 控制台创建新防火墙
- 允许以下入站端口:
- 22 (SSH)
- 80 (HTTP)
- 443 (HTTPS)
- 应用防火墙到你的服务器
这样,我们就锁定了所有非必要端口,包括 8000 端口,防止未授权访问。
增强账户安全
- 访问你的 Coolify 域名
https://coolify.你的域名.com
- 转到个人资料,修改密码为更安全的密码
- 启用双因素认证 (2FA)
6. 部署你的第一个应用
让我们从简单的静态网站开始,熟悉 Coolify 的部署流程。
部署静态网站
- 在 Coolify 仪表板中,创建新项目(例如"静态网站")
- 选择"生产"环境
- 添加资源 → 选择"公共仓库"
- 输入 GitHub 仓库 URL(例如一个包含 HTML, CSS 和 JavaScript 的简单仓库)
- 选择"静态"构建包
- 设置域名为
website.你的域名.com
- 点击部署
你的静态网站现在应该可以通过 https://website.你的域名.com
访问了。
配置 www 重定向
许多网站需要将 www
子域名重定向到主域名:
- 在项目设置中,为同一应用添加域名
www.website.你的域名.com
- 添加自定义 Caddy 配置,使用标签:
caddy.0.redir=https://website.你的域名.com
这会将 www.website.你的域名.com
重定向到 website.你的域名.com
。
部署 Node.js 应用
接下来让我们部署一个 Next.js 应用:
- 创建新项目(例如"Next.js App")
- 选择"生产"环境
- 添加资源 → 选择"公共仓库"
- 输入包含 Next.js 应用的 GitHub 仓库 URL
- 选择"nixpacks"构建包(它会自动检测 Next.js)
- 设置域名为
nextapp.你的域名.com
- 点击部署
Coolify 将自动检测这是一个 Node.js 应用,并使用适当的构建和启动命令。
7. 使用 GitHub 集成
为了实现自动部署和访问私有仓库,我们需要设置 GitHub 集成。
创建 GitHub 应用
- 在 Coolify 仪表板中,转到源 → 创建一个 GitHub 应用
- 为应用提供一个唯一名称(例如"coolify-你的名字")
- 确保 Webhook 端点使用你的 HTTPS URL
- 点击注册,这将带你到 GitHub
- 在 GitHub 上完成应用创建
- 选择你想授权的仓库,或授权所有仓库
使用 GitHub 集成部署应用
- 创建新项目
- 添加资源 → 选择"使用 GitHub 应用的私有仓库"
- 选择你的 GitHub 应用和你想部署的仓库
- 选择构建包(例如 nixpacks)
- 设置必要的环境变量和域名
- 点击部署
现在,每当你推送新代码到仓库时,Coolify 将自动检测变更并重新部署应用。
配置 Webhook 自动部署
GitHub 应用集成已经为你配置了 webhook,但对于现有项目,你可以在项目设置中查看 webhook 状态:
- 进入项目 → 配置 → Webhooks
- 确认 webhook 状态为"活跃"
- 推送更改到仓库来测试自动部署
8. 数据库设置与管理
Coolify 支持多种数据库的一键部署,让我们以 PostgreSQL 为例。
部署 PostgreSQL 数据库
- 在你的项目中,添加资源 → 选择"数据库" → PostgreSQL
- 设置数据库名称(例如"mydb")
- 保存并启动数据库
数据库会自动启动,并提供连接信息:
- 数据库主机(容器名)
- 数据库端口
- 用户名和密码
- 数据库连接 URL
部署带数据库的应用
以 T3 应用(Next.js + Prisma + PostgreSQL)为例:
- 创建一个新项目,并添加 PostgreSQL 数据库资源
- 添加应用资源,链接到 GitHub 仓库
- 配置环境变量,包括数据库连接 URL
DATABASE_URL=postgres://postgres:密码@数据库容器名:5432/postgres
- 对于 Prisma 应用,我们需要初始化数据库架构
我们可以创建一个 Docker 容器来推送数据库架构:
FROM node:16
WORKDIR /app
RUN git clone 你的仓库URL .
RUN npm install
ENV DATABASE_URL=postgres://postgres:密码@数据库容器名:5432/postgres
RUN npx prisma db push
CMD ["npx", "prisma", "studio"]
配置好 Docker 容器后,可以推送数据库架构,然后停止容器。
9. 高级配置:HTTP 重定向与基本认证
创建自定义 Caddy 配置
Coolify 使用 Caddy 作为代理服务器,我们可以通过 Docker 标签自定义 Caddy 配置:
- 在项目配置中,找到标签设置
- 添加标签来自定义 Caddy 行为
例如,添加 HTTP 基本认证:
caddy.0.basicauth=username hash密码
你可以使用 Docker 容器生成哈希密码:
sudo docker run --rm caddy caddy hash-password
创建动态代理配置
对于全局代理配置,可以使用 Coolify 的动态配置功能:
- 转到服务器 → 代理 → 动态配置
- 点击"创建",并为配置提供一个名称
- 添加配置,例如全局重定向:
www.你的域名.com {
redir https://你的域名.com
}
这将创建一个在所有项目之外生效的全局 Caddy 配置。
10. 备份与恢复策略
为了保护你的数据,设置适当的备份策略是至关重要的。
设置 MinIO (S3 兼容存储)
- 创建一个名为"存储"的新项目
- 添加资源 → 服务 → MinIO
- 设置域名为
storage.你的域名.com
- 设置控制台域名为
console.storage.你的域名.com
- 保存并部署
部署完成后,你会获得管理员用户名和密码。登录 MinIO 控制台:
- 创建一个存储桶(例如"db-backups")
- 创建一个访问密钥,记下访问密钥和密钥 ID
配置数据库备份
-
在 Coolify 仪表板中,转到 S3 存储
-
点击"添加",并配置你的 MinIO 存储:
- 名称:MinIO 存储
- 端点:
https://storage.你的域名.com
- 区域:
us-west-1
(或你设置的区域) - 存储桶:
db-backups
- 访问密钥和密钥:使用刚刚创建的密钥
- 点击"验证连接"
-
转到你的数据库资源 → 备份
-
设置备份频率(使用 cron 语法)
- 例如:
0 0 * * *
表示每天午夜备份
- 例如:
-
启用 S3 备份,选择你配置的 MinIO 存储
-
设置本地保留的备份数量(例如 7)
-
保存设置
现在,你的数据库将按照设定的计划自动备份到 MinIO 存储中。
11. 监控与状态仪表板
为了监控服务器的性能和健康状况,我们可以部署一个简单的状态仪表板。
部署 Glances 监控
- 创建一个新项目(例如"VPS 状态")
- 添加资源 → 选择"Docker Compose"
- 使用以下 Docker Compose 配置:
version: '3'
services:
glances:
image: nicolargo/glances:latest
pid: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- GLANCES_OPT=-w
restart: always
ports:
- 61208:61208
labels:
- caddy.0.basicauth=你的用户名 你的密码哈希
- 设置域名为
stats.你的域名.com:61208
- 保存并部署
现在你可以通过 https://stats.你的域名.com
访问 Glances 仪表板,它会显示 CPU、内存、磁盘和网络使用情况,以及正在运行的容器信息。
使用 Coolify 自带监控
Coolify 也提供了基本的监控功能:
- 转到你的服务器资源
- 查看资源使用情况图表
- 查看运行中的容器和它们的状态
12. 常见问题排查
部署失败问题
如果部署失败,可以查看以下几点:
- 检查日志:在项目页面的"部署"和"日志"选项卡中查看错误信息
- 确认构建包:有时 nixpacks 可能无法正确检测你的应用类型,你可能需要指定特定的构建和启动命令
- 检查环境变量:确保所有必要的环境变量都已正确设置
- 检查端口配置:确保应用在 Docker 容器内监听正确的端口,并且该端口已正确映射
代理问题
如果你的应用已部署但无法访问:
- 检查域名配置:确保域名已正确设置并指向服务器 IP
- 查看 Caddy 配置:检查代理配置和标签设置
- 检查 HTTPS 证书:Caddy 应该自动生成和更新证书,但有时可能会失败
- 检查应用端口:确保 Caddy 正在代理到正确的应用端口
资源限制问题
如果你的服务器资源不足:
- 监控资源使用情况:使用 Glances 或类似工具查看 CPU 和内存使用情况
- 调整容器资源限制:在 Docker Compose 配置中设置 CPU 和内存限制
- 升级服务器:如果你经常遇到资源限制,考虑升级服务器配置
13. Coolify 的优缺点
优点
- 简单易用:提供类似于 Vercel 和 Netlify 的一键部署体验
- 完全自托管:你拥有完全的控制权和数据所有权
- 多种应用支持:从静态网站到复杂的全栈应用都能部署
- 预配置服务:数据库、缓存和其他服务的一键部署
- 自动 HTTPS:通过 Caddy 轻松配置 SSL
- 开源免费:无需订阅费用
缺点
- 资源消耗:Coolify 本身需要大量资源(2 CPU, 2GB RAM)
- 仍在积极开发中:可能会遇到 bug 和不稳定问题
- 学习曲线:要充分利用 Coolify,仍需了解 Docker 和网络基础知识
- 一人维护项目:主要由一个开发者维护,支持可能有限
- 自定义配置复杂度:非标准应用可能需要更多手动配置
14. 结语
Coolify 是一个有前途的自托管 PaaS 解决方案,特别适合那些希望在自己的基础设施上获得类似 Netlify 或 Vercel 体验的开发者。虽然它仍在积极开发中,但已经可以用于生产环境,特别是对于静态网站和标准 Web 应用。
对于已经熟悉 Docker 和服务器管理的开发者,直接使用 Docker 和 Caddy 可能更为灵活。但对于希望减少运维复杂度的团队和个人,Coolify 提供了一个很好的平衡点,既有自托管的好处,又不失云服务的便利性。
随着项目的成熟和社区的增长,Coolify 有望成为自托管 PaaS 领域的领先解决方案。如果你有兴趣了解更多或参与项目,可以访问 Coolify 的 GitHub 仓库和 Discord 社区。
希望这个教程对你有所帮助!如果你有任何问题或需要更详细的解释,请随时在评论中提问或访问 Coolify 的官方支持渠道。
祝你的自托管之旅愉快!