Coolify:自托管 PaaS 指南

June 24, 2026 · View on GitHub

Coolify 综合教程,这是一个开源的自托管平台即服务(PaaS)。在你自己的服务器上部署应用、数据库和服务,获得类似 Heroku 的体验。

目录


什么是 Coolify

概述

Coolify 是 Heroku、Netlify 和 Vercel 的开源自托管替代方案。它运行在你自己的服务器上,提供 Web 界面来部署应用、数据库和服务。

核心特性

特性描述
推送部署从 Git 自动部署
多服务器从一个仪表板管理多个服务器
基于 Docker所有部署运行在 Docker 容器中
SSL 自动化自动 Let's Encrypt 证书
数据库管理PostgreSQL、MySQL、MongoDB、Redis
服务模板一键部署流行应用
团队协作多用户角色访问
APIREST API 用于自动化
Webhooks与外部工具集成
监控内置资源监控
备份自动备份到 S3 等

与替代方案对比

特性CoolifyHerokuVercelRailway
自托管
开源
免费层自托管(免费)已停止有限
数据库
自定义域名
Docker 支持有限
多服务器
无供应商锁定

安装

系统要求

要求最低推荐
CPU1 核2+ 核
RAM2 GB4+ GB
存储20 GB50+ GB
系统Ubuntu 22.04、Debian 12、CentOS 9Ubuntu 22.04 LTS
端口80、443、800080、443、8000

快速安装

# 一键安装命令
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash

手动安装

# 安装 Docker
curl -fsSL https://get.docker.com | bash

# 创建目录
mkdir -p /data/coolify

# 运行 Coolify
docker run -d \
  --name coolify \
  --restart=always \
  -p 8000:8000 \
  -v /data/coolify:/data/coolify \
  -v /var/run/docker.sock:/var/run/docker.sock \
  coollabsio/coolify:latest

安装后步骤

步骤操作详情
1访问 UI打开 http://your-server-ip:8000
2创建账户设置管理员用户
3配置服务器添加第一台服务器
4设置 DNS将域名指向服务器
5添加 SSH 密钥用于 Git 仓库访问

支持的提供商

提供商类型用例
自托管VPS/独立服务器完全控制
Hetzner云 VPS经济实惠的欧洲服务器
DigitalOcean云 VPS易于使用
AWS EC2企业功能
Linode云 VPS对开发者友好
Vultr云 VPS全球位置
任意 SSH 服务器远程现有基础设施

部署应用

部署方式

方式描述最适合
Git 仓库从 GitHub/GitLab 部署CI/CD 工作流
Docker 镜像拉取并运行现有镜像预构建应用
Docker Compose多容器应用复杂方案
静态站点部署 HTML/CSS/JS网站
一键服务预配置模板常见应用

Git 仓库部署

步骤操作
1点击仪表板中的"New Resource"
2选择"Application"
3选择"Public Repository"或连接 Git 提供商
4输入仓库 URL 和分支
5配置构建设置
6设置环境变量
7部署

构建包检测

Coolify 自动检测你的应用类型:

语言检测方式构建包
Node.jspackage.jsonNPM/Yarn
Pythonrequirements.txt、PipfilePython
PHPcomposer.jsonPHP
RubyGemfileRuby
Gogo.modGo
RustCargo.tomlRust
DockerDockerfileDocker
静态index.htmlStatic

构建配置

设置描述默认值
构建包应用类型自动检测
基础目录构建的子目录/(根目录)
构建命令自定义构建命令语言默认
启动命令自定义启动命令语言默认
端口应用端口3000
安装命令依赖安装语言默认

部署策略

策略描述停机时间
滚动逐个替换容器
重建停止所有,启动新的短暂
蓝绿切换流量到新版本

服务

Coolify 包含许多流行服务的一键部署。

Web 服务器和代理

服务描述用例
NginxWeb 服务器和反向代理静态站点、负载均衡
Caddy自动 HTTPS Web 服务器简单 Web 托管
Traefik动态反向代理微服务
HAProxy负载均衡高可用性

内容管理

服务描述用例
WordPress博客和 CMS网站、博客
Ghost发布平台博客、通讯
Strapi无头 CMSAPI 优先内容
Directus无头 CMS数据驱动内容
PlausibleWeb 分析隐私优先分析
MatomoWeb 分析全功能分析

通信

服务描述用例
Rocket.Chat团队聊天团队通信
Mattermost团队聊天Slack 替代
Matrix/Element联邦聊天去中心化消息
n8n工作流自动化集成平台
Chatwoot客户支持帮助台

开发工具

服务描述用例
GiteaGit 托管自托管 GitHub
GitLabDevOps 平台完整 DevOps
DroneCI/CD持续集成
Woodpecker CICI/CD轻量 CI
Uptime Kuma可用性监控服务监控
Stirling PDFPDF 工具文档处理

媒体和存储

服务描述用例
Nextcloud云存储文件共享
MinIO对象存储S3 兼容存储
Immich照片管理Google Photos 替代
Navidrome音乐服务器音乐流媒体
Jellyfin媒体服务器视频流媒体

数据库和缓存

服务描述用例
Redis内存缓存缓存、会话
Memcached内存缓存简单缓存
KeyDBRedis 替代高性能
DragonflyRedis 替代现代缓存

数据库

支持的数据库

数据库类型版本用例
PostgreSQL关系型14、15、16通用、JSON
MySQL关系型5.7、8.0Web 应用
MariaDB关系型10.xMySQL 兼容
MongoDB文档型5、6、7灵活模式
Redis键值6、7缓存、队列
Dragonfly键值最新高性能

数据库配置

设置描述默认值
名称数据库名称必填
用户数据库用户admin
密码数据库密码自动生成
端口外部端口自动分配
数据持久化Docker 卷
最大连接数连接限制数据库默认

连接字符串

数据库连接字符串格式
PostgreSQLpostgres://user:pass@host:5432/dbname
MySQLmysql://user:pass@host:3306/dbname
MongoDBmongodb://user:pass@host:27017/dbname
Redisredis://:pass@host:6379

数据库管理

功能描述
创建一键创建数据库
备份自动和手动备份
恢复从备份恢复
监控连接数、内存使用
日志UI 中的数据库日志
终端直接数据库控制台

SSL 和域名

自动 SSL

Coolify 自动为你的域名配置 Let's Encrypt 证书。

功能描述
自动配置证书自动创建
自动续期到期前续期
通配符支持 DNS 挑战
自定义证书上传你自己的证书

域名配置

步骤操作详情
1为应用添加域名在应用设置中
2配置 DNS将 A/CNAME 记录指向服务器
3等待传播通常 5-60 分钟
4SSL 已配置自动 Let's Encrypt

DNS 记录类型

类型记录用例
Aapp.example.com服务器 IP直接域名
CNAMEapp.example.comother.domain.com别名
通配符*.example.com服务器 IP所有子域名

SSL 证书选项

提供商方式费用
Let's EncryptHTTP-01 挑战免费
Let's EncryptDNS-01 挑战免费
自定义上传证书不定
Cloudflare代理免费/付费

监控

内置监控

指标描述
CPU 使用率服务器和容器 CPU
内存使用率RAM 利用率
磁盘使用率存储消耗
网络 I/O传入和传出流量
容器状态运行、停止、错误
正常运行时间服务可用性

资源监控

资源仪表板视图告警阈值
CPU实时图表持续 80%
内存实时图表持续 85%
磁盘使用百分比90% 满
网络带宽图表异常检测

日志管理

日志类型访问方式保留时间
应用日志UI / CLI默认 7 天
构建日志UI每次部署
系统日志SSH系统默认
容器日志docker logs可配置

与外部工具集成

工具集成用途
GrafanaAPI高级仪表板
Prometheus指标端点指标收集
Uptime Kuma服务模板可用性监控
n8nWebhooks告警自动化

备份

备份类型

类型备份内容存储
数据库备份完整数据库转储S3、FTP、本地
配置应用设置包含在 Coolify 数据中
持久数据手动或 S3

S3 兼容备份存储

提供商端点示例
AWS S3s3.amazonaws.com
DigitalOcean Spacesnyc3.digitaloceanspaces.com
MinIOminio.example.com
Backblaze B2s3.us-west-000.backblazeb2.com
Cloudflare R2r2.cloudflarestorage.com
Hetzner Storagefsn1.your-objectstorage.com

备份配置

# 备份设置
S3_BUCKET: coolify-backups
S3_ENDPOINT: s3.amazonaws.com
S3_ACCESS_KEY: your-access-key
S3_SECRET_KEY: your-secret-key
S3_REGION: us-east-1
BACKUP_FREQUENCY: daily  # daily, weekly, monthly
BACKUP_RETENTION: 7      # 保留备份数量

备份计划选项

频率描述保留
每小时每小时24 个备份
每天每天一次7-30 个备份
每周每周一次4-12 个备份
每月每月一次12 个备份
自定义Cron 表达式自定义

恢复流程

步骤操作
1导航到备份部分
2选择要恢复的备份
3选择目标数据库
4确认恢复
5验证数据完整性

团队管理

用户角色

角色权限
所有者完全访问、计费、团队管理
管理员除计费外完全访问
成员部署和管理分配的资源
查看者只读访问

团队功能

功能描述
多团队创建独立团队
资源共享团队间共享资源
活动日志跟踪谁做了什么
API 密钥每用户 API 访问
SSO单点登录(企业版)

访问控制

级别描述
服务器用户可访问哪些服务器
应用用户可管理哪些应用
数据库用户可访问哪些数据库
设置谁可以更改团队设置

API

API 概述

Coolify 提供 REST API 用于自动化和集成。

功能描述
认证Bearer token
基础 URLhttp://your-server:8000/api/v1
格式JSON
文档OpenAPI/Swagger

常用 API 操作

操作方法端点
列出应用GET/api/v1/applications
获取应用GET/api/v1/applications/{id}
部署应用POST/api/v1/applications/{id}/deploy
列出数据库GET/api/v1/databases
列出服务器GET/api/v1/servers
获取部署GET/api/v1/deployments

API 认证

# 在 Settings > API 生成 API 密钥
# 在请求中使用:
curl -H "Authorization: Bearer YOUR_API_KEY" \
  http://your-server:8000/api/v1/applications

Webhook 集成

触发器URL负载
GitHub PushCoolify webhook URLGitHub 负载
GitLab PushCoolify webhook URLGitLab 负载
手动部署API 端点自定义负载

Git 集成

支持的提供商

提供商功能设置
GitHub仓库、PR、webhooksOAuth 应用
GitLab仓库、MR、webhooksOAuth 应用
Gitea仓库、PR、webhooksOAuth 应用
Bitbucket仓库、PR、webhooksOAuth 应用
公共仓库任何公共 URL无需设置

GitHub 集成

步骤操作
1创建 GitHub OAuth 应用
2设置回调 URL 到 Coolify
3在 Coolify 中输入 Client ID 和 Secret
4在 GitHub 中授权 Coolify
5选择要部署的仓库

自动部署

触发器描述
推送到分支每次推送部署
创建标签版本标签时部署
Pull request预览部署
手动点击部署按钮

预览部署

功能描述
PR 预览每个 PR 有自己的 URL
自动清理PR 关闭时删除
环境变量与生产环境分离
自定义域名可选的每预览域名

环境变量

变量管理

功能描述
UI 编辑在 Web 界面设置变量
构建时构建期间可用
运行时执行期间可用
共享多应用间共享
多行支持证书、密钥

变量作用域

作用域描述构建时运行时
构建仅构建期间
运行时仅运行时
两者构建和运行时

密钥管理

方式描述安全级别
环境变量键值对基础
Docker secrets静态加密
外部保险库HashiCorp Vault 等最高
.env 文件基于文件的密钥基础

变量示例

# 数据库连接
DATABASE_URL=postgres://user:pass@db:5432/myapp

# 应用设置
NODE_ENV=production
APP_PORT=3000
APP_SECRET=your-secret-key

# 第三方 API 密钥
STRIPE_SECRET_KEY=sk_live_...
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=user@example.com
SMTP_PASS=password

最佳实践

实践描述
敏感数据使用密钥永远不要提交 API 密钥
分组相关变量使用命名约定
记录变量包含 .env.example
定期轮换密钥定期更改密码
每环境使用不同值开发 vs 生产

高级配置

自定义 Docker Compose

# 复杂应用的 docker-compose.yml
version: "3.8"

services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=${DATABASE_URL}
    depends_on:
      - db
      - redis

  worker:
    build: .
    command: celery worker
    environment:
      - REDIS_URL=${REDIS_URL}

  db:
    image: postgres:16
    volumes:
      - pgdata:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine

volumes:
  pgdata:

资源限制

设置描述示例
内存限制最大 RAM512M、1G
CPU 限制最大 CPU 核心0.5、1、2
内存预留保证 RAM256M
CPU 预留保证 CPU0.25

自定义 Nginx 配置

# 自定义代理配置
location /api {
    proxy_pass http://app:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

故障排除

常见问题

问题原因解决方案
部署失败构建错误检查构建日志
SSL 不工作DNS 未配置验证 DNS 记录
无法连接数据库凭据错误检查环境变量
内存不足资源限制增加内存限制
端口冲突另一服务占用端口更改端口映射
构建缓慢大仓库使用 .dockerignore

常用命令

# 检查 Coolify 状态
docker ps | grep coolify

# 查看 Coolify 日志
docker logs coolify

# 重启 Coolify
docker restart coolify

# 检查磁盘空间
df -h

# 检查 Docker 磁盘使用
docker system df

# 清理 Docker
docker system prune -a

健康检查

检查命令预期结果
Coolify 运行docker pscoolify 容器运行中
端口可访问curl localhost:8000HTML 响应
DNS 解析dig your-domain.com服务器 IP
SSL 有效curl https://your-domain.com有效证书

总结

Coolify 让自托管对每个人都触手可及。通过其直观的 Web 界面,你无需深入的 DevOps 知识即可部署应用、数据库和服务。

关键要点:

  • 在任何 Linux 服务器上一键安装
  • 从 Git 仓库自动部署
  • 管理数据库并备份
  • 自动 Let's Encrypt SSL
  • 基于角色的团队协作
  • API 用于高级自动化

从单台服务器开始,按需扩展。Coolify 会随你的项目一起成长。