跳转至主要内容

Coolify 中文教程: 安装并快速部署个人博客和网盘

前言

我平常主要创作 Shopify 相关的教程,之所以制作这期 Coolify 教程,一方面是因为我上周接触到 Coolify,搜索时发现目前国内没有人做跟它相关的教程,所以通读一遍官方文档之后,决定发布这篇教程,既是总结和输出,也算是分享给后续搜索相关教程的有缘人(节省你读文档的时间)。

另一方面,在当前这个 AI 时代,即使你不是从事技术岗位,或早或晚都会尝试 通过 AI 编程工具制作一些成果出来,小到静态网页和记账应用,大到前后端分离的网页截图监控系统、实时在线聊天应用等而当你想要把它们部署上线,以便可以直接在浏览器中访问的时候,你就需要一个工具,Coolify 就是我认为最强的工具。

很多人可能听说过 Vercel 和 Netlify,但是它们主要用于部署前端项目,对于比较复杂的项目就不太适合,而且部署在这两个平台数据并不掌握在自己的服务器中,如果项目多了却不想开通付费套餐,可能还会担心超过免费用量。

如果你之前没有接触过 VPS,本期教程可能将带你使用人生中的第一个 VPS,如果你已经用过 VPS 了,可能也想过如何将你的服务器最大化利用,安装 Coolify 并用它来进行常见应用的安装和项目的部署就是不错的选择。

案例演示

如果你对服务器和反向代理比较熟悉,你甚至可以在电脑本地使用任意域名部署应用,例如:tiktok.com, blog.tiktok.com 等。不过实际在线使用跟这个不同,所以本期教程我将使用云端(而不是本地)服务器进行演示。

快速安装博客和网盘

因为博客和网盘是两种非常实用的应用场景,不论你从事什么类型的工作都可以用到,所以本期教程在安装完 Coolify 之后,会提示如何通过 Coolify 快速创建个人博客和网盘应用。

GitHub 项目和 Docker 项目

至于关联 GitHub 或者使用 Docker 进行项目部署,如果本期教程发布之后大家感兴趣我再抽时间发布,如果不感兴趣也没关系,因为这两种更偏向技术方面,如果你从事相关的岗位,即使不需要观看教程也可能搞得定。

创建和连接服务器

创建服务器

Coolify 是一个 PaaS (Platform as a Service) 工具,服务器需要多少内存和容量取决于你需要部署的项目类型和数量,服务器的内存和容量越大,后续使用会更有余地。

连接服务器

  • 连接服务器需要使用 SSH 客户端,推荐新手使用 FinalShell,这是一个免费的国产软件,我开通了专业版,使用下来感觉很一般(响应慢,有时会覆盖剪贴板内容导致粘贴内容不正确)
  • 你也可以尝试 Electerm,这两个都比不过 Termius,但是不推荐国内新手使用。
  • 如果之前没有操作过,可以参考视频演示进行连接。

安装 Coolify

提前添加域名解析

  • A 记录:用于 Coolify 后台登录域名
  • 通配符解析:用于后续通过 Coolify 安装的其它服务

一键安装

连接服务器之后执行 Coolify 官方的一键安装脚本:

curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash
Coolify-Installed

当出现 Congratulations 提示的时候代表安装完成,使用你的服务器 IP:8000 在浏览器中访问,即可创建管理员账号。在服务器 IP 后面添加端口号并访问:

:8000
  • 取消遥测:Settings ~ Advanced ~ Do Not Track(可选)

设置 Coolify 后台域名

  • 点击 Settings ~ Instance’s Domain,然后通过域名访问,首次提示不安全点击继续,会触发生成证书,后续就可以直接访问登录。
  • 如果仍然提示不安全,可以尝试清除浏览器缓存后重试,或者通过无痕模式访问域名。

如果不是使用的 RackNerd 服务器并且防火墙已经开启,可能需要添加端口允许,部分服务商可能需要通过网页后台添加允许。RackNerd 不用。

检查防火墙状态:

ufw status

添加 Coolify 所需要的端口允许:

ufw allow 8000,8080,80,443,6001,6002/tcp

重新加载防火墙以便生效:

ufw reload

如果你对服务器比较熟悉,也可以进行开启防火墙、修改 SSH 端口等操作。

通过域名访问 Coolify 后台

  • 设置好之后就可以通过绑定的域名进行访问了(使用之前通过 IP + 端口访问时创建的账号和密码)。建议保存账号和密码到浏览器方便后续登录。

设置通配符域名

  • Server ~ Wildcard Domain。示例:
https://shopify.now
  • 重启 Proxy 代理(提示:建议通过 IP + 端口访问之后重启代理。否则可能登录不进后台,还是得通过 IP + 端口进去启动才能通过域名访问。可添加 IP 访问方式为书签方便快速访问)
  • 或者通过 docker 重启:
docker ps -a | grep traefik
docker restart [container_id]

隐藏没用的文字和图标(推荐)

  • 使用 Stylus 浏览器插件 添加规则(要在 Dashboard 上设置,以确保所有页面生效)。
  • 这个插件很好用,通过添加 CSS 规则,可以当做广告屏蔽插件用。
.flex.md\:flex-row.flex-col.max-w-4xl.p-6.mx-auto.bg-white.border.shadow-lg.lg\:border-t.dark\:border-coolgray-300.border-neutral-200.dark\:bg-coolgray-100.lg\:p-8.lg\:pb-4.sm\:rounded-sm.gap-2 {
    display: none;
}
.flex.lg\:items-center.flex-col.justify-between.w-full.h-full.max-w-4xl.p-6.mx-auto.bg-white.border.shadow-lg.lg\:border-t.dark\:border-coolgray-300.border-neutral-200.dark\:bg-coolgray-100.lg\:p-8.lg\:flex-row.sm\:rounded-sm {
    display: none;
}
a[title="Sponsor us"] {
    display: none;
}
div[title="Send us feedback or get help!"] {
    display: none;
}

禁用自动更新(可选)

  • Settings ~ 取消勾选:Auto Update Enabled,并点击 Save 保存。

配置 SMTP 接收异常邮件(可选)

配置之后可以在服务异常时给你发送邮件通知

  • 创建 Gmail 专用密码用于 SMTP(需先在设置中开启谷歌账号的双重认证)
  • Settings ~ Transactional Email ~ 填写信息并保存 ~ Enabled ~ Send Test Email
  • Notifications ~ 勾选 Use system wide (transactional) email settings

启用服务器占用 Metrics(可选)

  • Servers ~ General ~ 勾选 Enable Sentinel 和 Enable Metrics
  • 等几分钟到 Metrics 选项卡就能查看 CPU 和 内存占用百分比了
  • Several 和 Container 选项卡可以分别查看数据

部署(安装)个人博客

  • 安装之前先简单介绍一遍后台布局和功能
  • Projects ~ 点击 + New ~ 搜索 Ghost
  • 修改 Name 和 域名(端口不要删除)之后点击部署
  • 配置 SMTP 邮件是可选的,如果你希望别人注册和登录的话。
  • 部署完成之后访问:域名/ghost 即可登录后台并发布文章。

部署(安装)NextCloud 网盘

  • Projects ~ 点击 + New ~ 搜索并添加 NextCloud with Postgres
  • 修改 Name 和想要使用的域名。
  • 编辑 Docker Compose 文件,删除原有的 - 'nextcloud-data:/data' 之后,复制添加以下内容并保存(路径映射):
- type: bind
        source: ./data
        target: /data
        is_directory: true
nextcloud-with-coolify
  • 后续上传到网盘的文件可以在服务器上以下路径查看到:
ls /data/coolify/services/<service_id>/data/<用户名>/files

提示:替换 <service_id> 为你的 Next Cloud 应用后台链接中的对应 id;替换 <用户名> 为你创建 NextCloud 管理员账号的时候输入的用户名。

nextcloud-files
  • 等待容器启动成功之后(Services 全部显示 Running),访问链接进行设置。其他的照着复制粘贴就行,主要是 Database host。
  • 先复制以下内容,然后复制链接末尾生成的 Service ID (service/xxx),添加到横线后面:
nextcloud-db-
  • 后续登录时如果没有自动进入 Dashboard,点击登录之后刷新一下即可。

补充内容

  • 可以添加多台 Server 并指定构建用的服务器
  • 在 Sources 中可以添加 GitHub Integration,推送修改自动部署
  • S3 Storages:可以添加 CloudFlare R2 等进行备份。
  • Profile:修改账号密码
  • Project ~ Configuration ~ Rollback 可以回滚到之前部署的版本
  • Project ~ Logs 查看日志,勾选 Stream Logs 可以实时显示
  • Project ~ Terminal 可以在浏览器中连接容器进行操作。
  • Sources ~ + Add 可以创建 GitHub App 自动部署项目。如果你后续修改了 Coolify 绑定的域名, 需要修改 GitHub App Settings 更新域名! 否则推送修改不会自动部署。

Coolify 强制更新证书

之前在服务器 A 上通过 Coolify 部署了一个项目,后来换到服务器 B 上部署,过了一段时间,因为服务器 B 需要用作他途,将这个项目转移回服务器 A,但是服务器 A 始终在用之前的证书,而现在已经过期了,所以就需要手动触发获得新证书。

  • SSH 连接 VPS 之后,查找配置文件
find /data/coolify -name "acme.json"
  • 备份配置文件
cp /data/coolify/proxy/acme.json /data/coolify/proxy/acme.json.bak
  • 删除原配置文件
rm /data/coolify/proxy/acme.json
  • 通过 IP 访问 Coolify 后台,重启 Proxy 即可。建议无痕模式 + 换网进行验证。
  • 也可以通过 docker 重启容器,操作步骤如下:

通过 docker 重启代理

有时候一些修改需要重启 Coolify 的 Traefik 代理才能生效。

既可以通过 IP+端口 登录到 Coolify 后台,也可以执行指令:

docker ps | grep "proxy"

此时会看到一串数字容器 id,接着执行(替换为对应的容器 id 即可):

docker restart [container_id]

解决重定向次数过多

如果你在通过 Coolify 部署一个应用之后访问域名,浏览器提示 “重定向次数过多” 或者 "Too many redirects",可以通过以下方式解决:

  • 在 Coolify Services 管理面板中点击对应 Service 的 settings,取消勾选 Strip Prefixes,点击 Save 保存之后回到管理面板,点击右上角 Restart 重新部署。
  • 如果你使用 ClouaFlare 管理你的域名 DNS,需要设置 SSL/TLS 加密类型为 Full

通过 Coolify 安装 AppWrite

记录通过 Coolify 安装 AppWrite 的常规步骤和报错解决要点
不论是 AppWrite 还是 Coolify 都没有提供详细、具体、最新版的文档说明,以至于在通过 Coolify 安装 AppWrite 之后访问 AppWrite Console,可以注册账号,但是登录时会报错:500 Server Error。本文讲解常规安装步骤和报错解决方法。 安装步骤 * 首先添加域名解析到服务器 IP,建议添加 * 通配符 A 记录方便证书自动生成 * Projects ~ 点进 Project ~ 点击左上角 ”+New”,搜索 AppWrite,点击进入配置 修改配置 主要修改以下几项: * Service Name,例如改成:appwrite * 去除三个 Services 中域名随机生成部分:Appwrite, Appwrite Console, Appwrite Realtime,点击

设置 CloudFlare R2 备份

CloudFlare R2

  • 登录 CloudFlare 账号,找到 R2 object storage,点击 Create bucket
  • 取一个具有辨识度的 Bucket name,地区可以选离服务器近的。
  • 创建之后返回 Overview 界面,点击 API ~ Manage API Tokens ~ Create User API Token ~ 设置 Token name ~ Object Read & Write ~ 指定仅用于某个 Specific bucket ~ 可以设置服务器 IP 作为白名单或者直接创建。

Coolify 后台

  • S3 Storage ~ 粘贴上一步中的 Access Key ID, Secret Access KeyEndpoint
  • 建议备份以上三个信息到其他应用或密码管理 App 中,点击 Finish 之后无法再查看。
  • Validate Connection,验证成功之后点击 Save 保存。
  • Settings ~ Backup ~ Scheduled Backup ~ 勾选 S3 enabled ~ 点击 Save
  • S3 Storage Retention ~ CloudFlare R2 每月免费 10G
    • 所以 Maximum storage (GB) 建议设置为 8

备份 AppWrite 数据库

如果你通过 Coolify 安装了 AppWrite,配置完 CloudFlare R2 可以备份 AppWrite 的数据库到 R2

  • AppWrite Service 管理面板 ~ 滚动到底部点击 AppWrite Mariadb 上的 Backups
  • 添加 Scheduled Backups,输入 cron 定时指令,例如每天早晨 8 点:0 0 * * *
  • 勾选 Save to S3,点击 Save 即可。
  • S3 Storage Retention ~ CloudFlare R2 每月免费 10G
    • 所以 Maximum storage (GB) 建议设置为 8