部落格

Coolify 與 Claude Code:將專案部署到自己的 VPS

Markdown

安裝 Coolify、連結 GitHub、部署 Next.js、設定網域與 HTTPS、MCP、VPS 需求及疑難排解。價格以美元計價,並保留原始限制。

閱讀全文

Ailoot 文件 — 使用這項服務的參考資料。

2026 年的平台限制與付款條件

重點摘要

免費方案會一直可用,直到你第一次超出限制;之後就需要國際信用卡。Heroku 在 2022 年對所有人關閉免費方案,並於 2026 年 2 月進入維護模式。使用自架 Coolify 時,伺服器由你擁有;沒有按席位計費,也不會被供應商綁定。

2026 年常見的氛圍編碼情境:你在 Cursor 或 Claude Code 花一個晚上打造 MVP,將它移到 GitHub 儲存庫,開啟 vercel.com → 連結儲存庫 → 進入訂閱畫面 → 輸入信用卡 → 收到 Transaction declined。

這不是錯誤,也不是暫時性服務中斷。

Railway、Render、Heroku——情況都一樣。Heroku 確實在 2022 年對所有人關閉免費方案,並於 2026 年 2 月進入維護模式——不再推出新功能,也不再簽訂新的 Enterprise 合約。對使用不受支援信用卡的使用者來說,這代表:「大門關上了;只能透過收取 20% 手續費的中介繞道。」

你可以透過哈薩克的虛擬 Visa 卡或企業付款服務付款。但這代表價格增加 20%、每筆交易多花 30 分鐘,而且付款處理商發現國家不符時,你的帳戶可能遭到封鎖。

原始範例包含三次嘗試——分別使用 Vercel Pro、Railway 和 Render。

Coolify 是什麼?自架平台如何運作?

重點摘要

Coolify 是開放原始碼、可自行託管的 PaaS,也是 Heroku、Vercel 和 Netlify 的直接替代方案。只要在任何執行 Ubuntu 的 VPS 上輸入一個 curl 指令即可安裝。底層使用 Docker + Traefik 做反向代理,並使用 Let's Encrypt 提供 HTTPS。它支援 GitHub 整合、自動部署的 webhook、S3 備份,以及 280 多種一鍵安裝服務(PostgreSQL、Redis、MinIO)。自架版本永遠免費且沒有任何限制。它在 GitHub 上有 55,800 顆星,採用 Apache-2.0 授權。

Coolify 是以 Laravel + Docker 建置的開放原始碼專案,可將任何空白 VPS 變成應用程式部署平台。安裝一次 Coolify,之後便可透過網頁介面完成所有操作:連結 GitHub、選擇儲存庫,然後按下 Deploy。

官方文件簡潔而精確地說明:

Coolify 是 Heroku / Netlify / Vercel 等服務的開放原始碼、自架替代方案。

— Coolify GitHub README,https://github.com/coollabsio/coolify

Coolify 底層由四個部分組成:

  1. 使用 Laravel 12 + Livewire 3 + Tailwind v4 建置的網頁介面 — 管理應用程式的儀表板。
  2. Docker + Docker Compose — 每個應用程式都在容器中執行,彼此隔離。
  3. 反向代理(Traefik 或 Caddy) — 接收傳入的 HTTP/HTTPS 流量,並轉送至容器。
  4. Let's Encrypt 整合 — 自動為所有網域簽發並更新 SSL 憑證。

讓 Coolify 在功能上可與 Vercel 相比的主要功能:

功能VercelCoolify
git push 時自動部署✅✅(透過 GitHub webhook)
免費 HTTPS✅✅(Let's Encrypt)
PR 預覽部署✅✅(透過 GitHub App)
環境變數 UI✅✅
資料庫備份❌(沒有自有資料庫)✅(備份至相容 S3 的儲存空間)
PostgreSQL / Redis / MongoDB每個 $20+/月✅ 一鍵安裝,免費
排程工作(cron)❌✅(cron 語法)
按席位計費$20/席位/月無
供應商綁定高(Edge Functions、ISR)零(使用自己的 Docker)
全球 CDN✅❌(只有自己的 VPS)

Coolify 開箱即用未提供的只有全球 CDN。這就是實話。如果你的專案面向全球使用者,且需要降低美國和歐洲使用者的延遲,可在前面加上 Cloudflare;靜態內容可免費使用。

價格:自架版本永遠免費,應用程式、伺服器或部署數量都不受限制。Coolify Cloud 每月 $5,可管理 2 台伺服器;每增加一台再加 $3——但伺服器仍由你擁有;Coolify Cloud 只負責託管儀表板。

最新版本是 v4.1.0,於 May 18, 2026 發布。新功能包括 Beta 版 Railpack 建置套件、稽核記錄、部署間的設定差異,以及原生 MCP 端點(唯讀)。來源:GitHub 發行版本。

2026 年該選哪一種 VPS 來執行 Coolify?

重點摘要

Coolify 最低需求為 2 vCPU、2 GB RAM、30 GB SSD,以及 Ubuntu LTS(20.04、22.04 或 24.04)。這類 VPS 足以同時舒適地執行 3–5 個氛圍編碼專案。

Coolify 的最低需求直接列於官方文件:

參數最低需求建議規格
CPU2 核心2–4 核心
RAM2 GB4 GB(為建置預留餘裕)
儲存空間30 GB50–80 GB(供映像檔與資料庫使用)
架構AMD64 或 ARM64(64-bit)AMD64
作業系統Ubuntu LTS 20.04 / 22.04 / 24.0422.04 LTS
Root必須使用 SSH 金鑰,而非密碼

最低規格——2 GB RAM——是硬性下限。若只有 1 GB,安裝程式會執行到 Docker,接著遇到 OOM(記憶體不足)而卡住。不要在 RAM 上省錢。

價格來源:Timeweb Cloud、FirstVDS 和 Selectel。

如果需要更高效能(100 GB 資料庫、多個 Postgres 執行個體),可選擇 Aeza Dedicated。

不該選擇的方案:

  • 512 MB–1 GB RAM 的共享 VPS — 連 Coolify 都跑不動。這適合放在 nginx 上的靜態網站,不適合 PaaS。

除了設定部署,你也想打造一套讓 Claude 更可靠的設定嗎?Coolify 是執行工具,但若沒有結構化的上下文(CLAUDE.md、第二大腦和上下文工程),Claude 在長任務中仍會產生幻覺。完整設定包含這三者:AI 分身 + 第二大腦 + 上下文工程——這個組合能讓 Claude 從「會產生幻覺的助理」變成可靠的工具。

如何在 5 分鐘內安裝 Coolify

重點摘要

安裝只需要執行文件中的一個 curl 指令。啟動後,網頁介面會出現在連接埠 8000。你可以在那裡建立第一個管理員使用者,並看到空白儀表板。從空白 Ubuntu 安裝到 Coolify 執行,實際需要 5–7 分鐘,其中 3–4 分鐘用於 apt-get install docker。安裝腳本會取得必要相依項目並自行設定 Docker;你只需等它完成。

步驟 1. 透過 SSH 連線至 VPS。

在供應商處建立 VPS 後,伺服器 IP 位址和 root 密碼會出現在電子郵件或控制台中。從本機電腦連線:

ssh root@1.2.3.4

如果供應商提供 SSH 金鑰而非密碼,請使用 -i path/to/key 連線。以下假設你使用的是全新安裝的 Ubuntu 22.04 或 24.04 LTS。

步驟 2. 執行 Coolify 安裝指令。

來自官方文件的一個指令:

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

腳本會執行三件事:

  1. 檢查系統(Ubuntu LTS?root?AMD64?)
  2. 如果尚未安裝 Docker 和 Docker Compose,就進行安裝
  3. 下載 Coolify 映像檔(coolify/coolify、coolify/realtime、traefik),並透過 docker-compose 在背景執行

這需要 3–5 分鐘。你會看到 apt-get 記錄快速捲動,接著是 docker pull。看到 Coolify v4.1.0 is now running 時,進入步驟 3。

步驟 3. 開啟網頁介面。

在瀏覽器中開啟:

http://1.2.3.4:8000

Coolify 會顯示設定精靈——建立第一位使用者的表單。輸入電子郵件和密碼並儲存。這位使用者會自動成為管理員;目前不需要其他使用者。

儲存後,你會進入空白儀表板:左側是含有 Resources / Projects / Servers / Sources / Notifications / Settings 的側邊欄,中央則提示 “Add your first resource.”

步驟 4. 在供應商的防火牆(而非 UFW)開啟連接埠。

Coolify 已經在執行,但從外部只能連到連接埠 8000(儀表板)。若要讓使用者連到你的應用程式,就必須開啟連接埠 80(HTTP)和 443(HTTPS):

連接埠用途
22透過 SSH 存取伺服器
80接收 HTTP 流量,供 Let's Encrypt 驗證使用
443接收使用者的 HTTPS 流量
8000Coolify 儀表板(設定自訂儀表板網域後會關閉)

官方文件提到一個重要陷阱:

Docker 使用以 NAT 為基礎的 iptables 規則,可能會繞過 UFW 等傳統 Linux 防火牆。

— Coolify 文件(防火牆),https://coolify.io/docs/knowledge-base/server/firewall

也就是說,即使啟用 UFW 並關閉所有連接埠,Docker 仍會透過 iptables 對外公開容器。UFW 在這裡不起作用。解法是在供應商的控制台開啟和關閉連接埠,而不是透過 UFW。在 Timeweb / Selectel / Aeza,請前往網頁主控台的「Network → Firewall」區段操作。

步驟 5(選用)。將儀表板綁定至你的網域。

若要造訪 https://coolify.example.com 而非 http://1.2.3.4:8000,請建立 DNS A 記錄 coolify.example.com → 1.2.3.4,接著在 Coolify 前往 Settings → Instance Settings → Instance Domain,輸入子網域並儲存。Coolify 會申請 Let's Encrypt 憑證,並在一分鐘後透過 HTTPS 重新載入儀表板。

之後,你可以在防火牆中關閉連接埠 8000——儀表板會透過標準連接埠 443 上的 HTTPS 提供服務。

如何連結 GitHub:App 還是 PAT?

重點摘要

Coolify 支援兩種連結 GitHub 的方式:GitHub App(建議)和 Personal Access Token(PAT)。請使用 GitHub App:透過精靈設定只需 5 分鐘、PR 預覽功能可正常運作,而且可以精細設定存放庫層級的權限範圍。PAT 是過時的選項,適用於舊有情境;它沒有預覽部署功能,而且可能使所有儲存庫都面臨全域存取風險。官方文件明確指出:「95% 的使用者,GitHub App 都是正確選擇。」

在 Coolify 中前往 Sources → + Add → GitHub App。Coolify 會顯示三個畫面的設定精靈:

  1. 名稱與說明 — 為來源命名(輸入 github-main),也可選擇加入說明。
  2. Configure on GitHub — 按鈕會帶你前往 GitHub.com,並自動開啟權限設定正確的 GitHub App 建立表單。
  3. Confirm — 從 GitHub 返回後,按一下 “Save.”

在第二個步驟中,GitHub 會要求你確認 Coolify 申請的權限:

權限層級用途
Contents唯讀複製儲存庫
Pull Requests讀寫建立預覽部署並在 PR 上留言
電子郵件地址唯讀識別提交
Metadata唯讀列出儲存庫

這些是最低限度的權限——GitHub App 看不到你的私密金鑰,不能寫入 main,也無法存取你未明確連結的儲存庫。

官方文件指出:

Personal Access Token(PAT)是舊方法;我不建議使用。缺點如下:

  • PAT 能全域存取你的所有儲存庫(包括私人儲存庫)
  • PR 預覽無法使用——這項功能只有 GitHub App 才有
  • Token 的有效期限很長(90 天、一年或永久)——若外洩,後果不堪設想

只有在你使用組織儲存庫,且安全政策禁止 GitHub Apps、又沒有替代方法時,才使用 PAT。

在 Coolify 中儲存來源後,你會在儀表板看到 GitHub App 和已連結的儲存庫清單。建立新應用程式時,只要按一下就能選取其中任一個。

使用 Claude Code 部署 Next.js 專案的 6 個步驟

重點摘要

從空白的 Claude Code 設定到上線網站的完整流程:1) 在空資料夾中執行 claude、描述專案,Claude 就會產生程式碼;2) 執行 git init && git remote add(Claude 也可以透過 slash 指令自行完成);3) 推送到 GitHub;4) 在 Coolify 中選擇「+ New Resource → Application」並選取儲存庫;5) 新增環境變數;6) 按下 Deploy。Coolify 會偵測這是 Next.js、選擇 Nixpacks 建置套件,在 3–5 分鐘內建置 Docker 映像檔,並提供暫用網域,開箱即用支援 HTTPS。

步驟 1. 在空資料夾中向 Claude Code 描述專案。

mkdir my-vibe-app
cd my-vibe-app
git init
claude

在工作階段中輸入:

建立一個 Next.js 14 app router 專案:
- 首頁列出使用者清單
- /api/users 端點從資料庫傳回陣列
- 使用 Prisma 連接 Postgres
- 使用 Tailwind 設定樣式
- 建立含有 DATABASE_URL 的 .env.example
- 建立 README.md,說明如何執行專案

Claude 會產生檔案結構、package.json、prisma/schema.prisma 和 .env.example。也可以要求:

為正式環境建置建立 Dockerfile 和 .dockerignore。

這是選用步驟——即使沒有 Dockerfile,Coolify 也會使用 Nixpacks 建置。但 Dockerfile 能讓你控制建置流程,對較大型專案而言也更快。

步驟 2. 建立 GitHub 儲存庫並推送。

你可以透過 GitHub UI 手動操作 + git remote add origin ...,但 Claude Code 也能自行處理:

/commit-push-pr 使用 Claude Code 產生的初始 Next.js 應用程式

或直接說:「將所有內容提交,並推送到我帳戶下名為 my-vibe-app 的新儲存庫。」Claude 會使用 gh CLI 建立私人(或公開)儲存庫並首次推送。來源:官方 Claude Code 指令。

步驟 3. 在 Coolify 中建立 Application。

在 Coolify 儀表板中,按一下 + New → Application。表單會開啟:

  1. Source — 選取 github-main(你在前一個 H2 章節中連結的 GitHub App)
  2. Repository — 從清單選取 my-vibe-app
  3. Branch — main
  4. Build Pack — Coolify 會自動偵測。若有 Dockerfile,就會使用 dockerfile;否則會使用 nixpacks。你可以手動覆寫。
  5. Domain — 目前先保留建議值(xxx.1-2-3-4);這是暫用網域,稍後會換成自己的
  6. Port — Next.js 預設為 3000

儲存。

步驟 4. 新增環境變數。

在剛建立的應用程式中,開啟 Environment Variables 分頁。逐一新增變數:

DATABASE_URL=postgresql://user:pass@db-host:5432/mydb
NODE_ENV=production
ANTHROPIC_API_KEY=sk-ant-...

如果沒有資料庫,可以直接在 Coolify 建立:+ New → Database → PostgreSQL。Coolify 會在 30 秒內啟動 Postgres 容器,並提供格式為 postgresql://postgres@postgres-xyz:5432/postgres 的內部 DATABASE_URL——將它填入應用程式。

所有變數都會在 Coolify 資料庫中加密,且不會顯示在建置記錄中。

步驟 5. 按下 Deploy。

右上角有一個藍色 Deploy 按鈕。即時記錄會顯示在 Logs 分頁:

[stage: clone]   Cloning '<repository-url-from-github>'
[stage: build]   Detected Next.js, using Nixpacks
[stage: build]   Installing Node 20, npm 10
[stage: build]   npm install (245s)
[stage: build]   npm run build (87s)
[stage: deploy]  Creating container my-vibe-app-xyz
[stage: deploy]  Container started, health check passed
[stage: proxy]   Traefik routing configured for xxx.1-2-3-4
[stage: ssl]     Let's Encrypt cert issued for xxx.1-2-3-4

第一次建置需要 3–5 分鐘(會下載 Node 基礎映像檔並安裝相依項目)。之後因為 Docker 層快取,建置只需 60–90 秒。

狀態變成 Running 時,複製 Coolify Domains 欄位顯示的應用程式 URL,開啟該確切網址。下文以 <app-url-from-coolify> 表示它;尖括號標籤是佔位文字,不是真實地址。應該會看到首頁,而且已開箱即用支援 HTTPS。這是免費的暫用萬用字元 DNS 網域,可將包含 IP 位址的子網域解析至該 IP(例如 1-2-3-4 解析至 1.2.3.4)。Coolify 使用這類網域,讓你不用設定自己的 DNS 就能立即開啟網站。

步驟 6. 確認一切正常。

在上一步應用程式 URL 後加入 /api/users,例如 <app-url-from-coolify>/api/users,勿重複斜線。這是步驟 1 建立的 JSON 端點,根網址則是首頁。如果發生 500 錯誤,Logs 分頁中會顯示堆疊追蹤。首次部署最常見的問題是 DATABASE_URL 指向不存在的資料庫。請在 Coolify 建立 PostgreSQL 執行個體(參見上方步驟 4),然後替換 DATABASE_URL,即可修正。

從訂購 VPS 開始算起,15 分鐘。原始範例在全新伺服器上花了 12–18 分鐘完成這套流程。

如何設定自訂網域與 HTTPS

重點摘要

設定自訂網域只要 3 個步驟:建立指向伺服器 IP 的 DNS A 記錄,在 Coolify 設定中輸入自己的網域取代暫用網域,啟用自動 HTTPS,然後按下 Redeploy。DNS 傳播後 2–3 分鐘,Let's Encrypt 就會自動簽發 SSL 憑證(DNS 通常需要 5–30 分鐘傳播)。關鍵條件是按下 Redeploy 時 DNS 已能解析;否則 Let's Encrypt 驗證會失敗,你必須等 12 分鐘才能再試。

步驟 1. 在網域註冊商控制台建立 DNS A 記錄。

原始範例使用託管於 Reg.ru、Beget 或 Timeweb 的網域。流程相同:

記錄類型名稱值
Aapp(根網域使用 @)1.2.3.4(伺服器 IP)

儲存後開啟主控台並檢查:

dig app.example.com +short
# 應傳回 1.2.3.4

如果沒有傳回任何內容,或 IP 不同,代表 DNS 尚未傳播。請等候 5–30 分鐘。

步驟 2. 在 Coolify 輸入你的網域。

在應用程式中開啟 Configuration → General 分頁。在 Domains 欄位中,將從 Coolify 複製的暫用應用程式 URL,換成 https://app.example.com(實際請用自己已設定網域)。啟用 Automatic HTTPS(通常預設已啟用)。

儲存並按下 Redeploy。

步驟 3. 等待 Let's Encrypt 憑證。

建置記錄會顯示:

[stage: ssl]  Requesting Let's Encrypt cert for app.example.com
[stage: ssl]  HTTP challenge sent to /.well-known/acme-challenge/xxx
[stage: ssl]  Validation passed, cert issued
[stage: ssl]  Cert installed, HTTPS enabled

2–3 分鐘後,你的網站就能透過 https://app.example.com 連線,網址列會顯示綠色鎖頭。

Let's Encrypt 可能出現的問題(見官方疑難排解指南列出的前三個問題):

  1. 防火牆關閉了連接埠 80。 Let's Encrypt 使用 HTTP challenge 驗證——會將請求傳送至 http://app.example.com/.well-known/acme-challenge/xxx。連接埠 80 未開啟就無法通過驗證。請在供應商的防火牆中開啟。
  2. Cloudflare proxy 已啟用(橘色雲朵)。 它會攔截 Let's Encrypt 請求並傳回自己的佔位頁面,導致驗證失敗。解法是切換至「DNS only」(灰色雲朵),或透過 Cloudflare API 設定 DNS-01 challenge。
  3. DNS 尚未傳播。 如果你在 30 秒前才建立 A 記錄,便立刻按下 Redeploy,Let's Encrypt 將無法找到網域。請等候 5–30 分鐘,讓 DNS 傳播至各伺服器。

Let's Encrypt 的速率限制:單一網域每小時最多失敗 5 次,每 12 分鐘恢復一次額度。如果達到限制,不要連續按 Redeploy 10 次;請檢查記錄、修正問題,並在 12 分鐘後再試。

Claude Code 如何透過 MCP 管理 Coolify?

重點摘要

透過 Model Context Protocol,Claude Code 可以直接存取 Coolify API——你可以說「部署這個應用程式」,啟動建置、檢查狀態、讀取記錄或更新環境變數。共有三種選項:forsonny/Coolify-MCP-Server(基本功能,7 種操作類別)、dazeb/coolify-mcp-enhanced(額外提供 15 種以上工具,包含一鍵部署資料庫),以及 ajmcclary/Coolify-Manager(以官方 CLI 為基礎的 Claude Skill)。從 v4.1.0(May 18, 2026)起,Coolify 提供原生 MCP 端點,不需第三方伺服器——但目前只能唯讀。

Model Context Protocol(MCP)是 Anthropic 制定的標準,讓 Claude Code 能與外部系統通訊(詳情請參閱MCP 伺服器指南)。連結 MCP 伺服器後,Claude 就會取得一組可呼叫的工具。Coolify 有三種現成伺服器,另有一種原生選項。

選項 1. forsonny/Coolify-MCP-Server-for-Claude-Code——基本版。

可執行的操作:

  • 應用程式:建立、啟動、停止、重新啟動
  • 服務:列出、建立、啟動/停止/重新啟動
  • 部署:檢視執行中的部署、依 UUID 擷取
  • 團隊與成員:列出、取得資訊
  • SSH 金鑰:列出、建立
  • 環境變數:對應用程式和服務執行完整 CRUD
  • 伺服器資訊:每台伺服器的網域、健康狀態、版本

安裝:

git clone '<OFFICIAL_URL>'
cd Coolify-MCP-Server-for-Claude-Code
npm install
npm run build
# 在 .env 中:
#   COOLIFY_BASE_URL=https://coolify.example.com
#   COOLIFY_API_TOKEN=[來自 Coolify Settings → API Tokens]
npm run setup  # 自動設定 Claude Code

接著,你可以在 Claude Code 中輸入:

顯示 Coolify 中 my-vibe-app 應用程式的狀態,以及最近 3 次部署。

Claude 會傳回一個表格。

選項 2. dazeb/coolify-mcp-enhanced——增強版(推薦)。

它在基本功能上新增了:

  • 一鍵部署 PostgreSQL / Redis / MinIO——透過 AI 要求「幫我設定 Postgres」,它就會建立容器並傳回 DATABASE_URL
  • 即時監控與資源使用量——即時查看各應用程式的 CPU/RAM
  • 大量更新 env 設定——用一個指令更新 20 個變數
  • Docker Compose 支援——部署多服務應用程式

Claude Code 的設定(專案根目錄中的 .mcp.json):

{
  "mcpServers": {
    "coolify-enhanced": {
      "command": "node",
      "args": ["/path/to/coolify-mcp-enhanced/dist/index.js"],
      "env": {
        "COOLIFY_ACCESS_TOKEN": "your-token-here",
        "COOLIFY_BASE_URL": "https://coolify.example.com"
      }
    }
  }
}

選項 3. ajmcclary/Coolify-Manager——以 CLI 為基礎的 Claude Skill。

它不是 MCP 伺服器,而是包裝官方 Coolify CLI 的 Claude Code Skill。包含:

  • 服務和容器健康診斷
  • SSL 憑證診斷
  • 多執行個體支援(如果你有多台 Coolify 伺服器)
  • 疑難排解操作指引

安裝:下載這項 skill,並放入 ~/.claude/skills/coolify-manager/。Claude Code 會自動載入,並在適合的任務中提供使用。

選項 4(2026 年 5 月新增)。Coolify v4.1.0 的原生 MCP。

v4.1.0 於 May 18, 2026 發布的變更紀錄提到:

新增執行個體層級的 MCP 支援,提供唯讀工具存取 Coolify 資源及 API/UI。

Coolify 現在有自己的 MCP 端點——你可以不透過第三方伺服器,直接連結 Claude Code。目前它只能唯讀(應用程式清單、狀態、設定),不支援修改操作。不過,這已足以完成「告訴我基礎架構的狀況」等多數任務。

透過 .mcp.json 連結:

{
  "mcpServers": {
    "coolify-native": {
      "url": "https://coolify.example.com/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-token>"
      }
    }
  }
}

等待原生 MCP 在 v4.2 或 v4.3 開放完整寫入權限——Coolify 團隊承諾會在 2026 年底前完成。

首次部署常見的 5 個陷阱,以及如何避免

重點摘要

首次部署最常見的錯誤包括 RAM 不足、連接埠 80 關閉、Cloudflare proxy 造成 Let's Encrypt 失敗、UFW 無法保護 Docker,以及選擇 PAT 而非 GitHub App。官方文件都涵蓋了這些問題,但沒有實際經驗時很容易遇上。以下是根據首次安裝 Coolify 的原始經驗整理的 5 點檢查清單。

陷阱 1:RAM 少於 2 GB——安裝因 OOM 而失敗。

症狀:curl install.sh 執行到 docker pull coolify/coolify,卡在 70%,接著程序因 Killed (signal 9) 而遭終止。dmesg | tail 記錄會顯示 Out of memory: Killed process。

解法:

# 暫時建立 4 GB swap 檔案以解決問題
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

長期來看,請升級至 4 GB RAM。Coolify 可使用 swap,但大型 Next.js 專案的建置可能會失敗。

陷阱 2:UFW 已啟用,但 Docker 仍會開啟連接埠。

症狀:你啟用 UFW,並關閉除了 22 之外的所有連接埠,但應用程式仍能透過網際網路從某個隨機連接埠(例如 3000)存取。

根據官方文件,原因是:

Coolify 執行於 Docker 之上,而 Docker 使用以 NAT 為基礎的 iptables 規則,可能繞過 UFW 等傳統 Linux 防火牆。

— Coolify 文件(防火牆),https://coolify.io/docs/knowledge-base/server/firewall

解法:使用供應商控制台中的防火牆,而非 UFW。Timeweb / Selectel / Aeza 有「Firewall」或「Network → Firewall」區段,可在虛擬網路層級設定規則——封包到達 Docker 前就會先套用這些規則。

另一種方法是使用 ufw-docker,這是一個修改 UFW 以支援 Docker 的腳本。不過,在控制台中按幾下比這個方法簡單。

陷阱 3:Cloudflare proxy(橘色雲朵)會讓 Let's Encrypt 失效。

症狀:按下 Redeploy 後,記錄顯示 Let's Encrypt validation failed - challenge returned 403。

原因:Cloudflare 代理 Let's Encrypt 的 HTTP 請求,並傳回自己的頁面,而非你的 challenge 檔案。

解法——二選一:

  1. 切換至「DNS only」(Cloudflare 中的灰色雲朵)。缺點:你會失去 Cloudflare CDN 和防護功能。
  2. 透過 Cloudflare API 設定 DNS-01 challenge。 在 Coolify 中前往 Settings → SSL Configuration,選擇 Cloudflare 供應商,並輸入具有 Zone:Read 和 DNS:Edit 權限的 API token。Let's Encrypt 會透過 TXT 記錄,而非 HTTP 進行驗證。

第二種方法設定起來較複雜,但可以保留 Cloudflare proxy。

陷阱 4:使用 PAT 而非 GitHub App——PR 預覽無法運作。

症狀:你使用 Personal Access Token 連結 GitHub;其他功能都正常,但不會為 PR 建立預覽部署。你在 GitHub 開了 PR,Coolify 卻沒有任何反應。

原因:PR 預覽是 GitHub App 專屬功能。PAT 不會透過 webhook 接收 pull_request 事件。

解法:透過 App 重新連結 GitHub。Sources → Add → GitHub App → 完成設定精靈。你可以刪除舊的 PAT 來源。

陷阱 5:「Coolify == Vercel」並不完全正確。

Coolify 開箱即用無法提供的功能:

VercelCoolify解決方法
全球 CDN無在前面加上 Cloudflare(靜態內容可免費使用)
Incremental Static Regeneration無revalidatePath 只會在自己的伺服器上運作
圖片最佳化無使用本機 loader 的 next/image 或 Cloudflare Images
流量尖峰時自動擴充無手動擴充;升級 VPS
Edge Functions無使用一般 API 路由

如果你的專案是面向全球使用者、流量很高,且全球延遲需求為 < 100 ms 的 SaaS,Coolify 就不適合;請選擇 Vercel Enterprise。如果你是氛圍編碼者,正在用每天 100–1,000 名使用者測試 MVP,Coolify 就能滿足所有需求。

來自一份坦誠的自架分析:

本指南標題中的 15 分鐘,指的是首次部署單一專案的順利流程。要完成含監控、備份和警示的完整基礎架構設定,得花上一兩個晚上。請誠實看待所需時間。

與 Vercel 相比,一年可以省下多少?

重點摘要

另有 5–10 小時的初始設定時間,以及每月 1–2 小時維護時間的「隱形時間成本」。

以下 Vercel 數字是本文 2026 年 5 月情境估算,不是目前報價,也只是比較的一邊。自架 Coolify 沒有授權費,但 VPS、備份、儲存、流量與維運仍有成本。請取得符合上述要求的報價;情境未提供 VPS 數字,因此不能宣稱固定節省。

令 C 為每月 VPS、備份儲存、額外流量、監控與付費控制台的總基礎架構帳單,各項只計一次;r 為每小時維運成本,全程用同一幣別。本文時間估算為初始 5–10 小時,加每月 1–2 小時,即首年 17–34 小時、之後每年 12–24 小時。

情境Vercel 每月估算Vercel 每年Coolify 每月基礎架構Coolify 首年含人力 TCO首年比 Vercel 節省
單一原型、每月 100,000 次造訪$20 基本費 + 約 $5 頻寬 = $25$300C12C + (17–34)r$300 − 12C − (17–34)r
一台 VPS、五個專案$20 基本費 + $30 頻寬/functions = $50$600C12C + (17–34)r$600 − 12C − (17–34)r
三位開發者、五個專案$60 席位 + $30 頻寬 = $90$1,080C12C + (17–34)r$1,080 − 12C − (17–34)r

工作量需要不同主機時,各情境用自己的 C。將首年設定時間攤到 12 個月,每月等值為 C + (17–34)r/12;之後年 TCO 為 12C + (12–24)r。Vercel 也要納入相對應維運成本;節省為負數時,代表依你的輸入自架更貴。r 已含工程師成本時,不要再重複加整份薪資。

切換前以真實報價與備份計畫填 C、選定 r,再用一個月實際用量比較;缺少這些輸入,本文只能提供成本模型,不能宣稱節省金額。

主要好處並不是省錢。改用 Coolify 後,「受制於他人的付款政策」這個類別就消失了。不再需要收取 20% 手續費的虛擬中介卡。

Coolify 不是更便宜的 Vercel,而是另一類產品:基礎架構由你擁有,責任由你承擔,並以接受其複雜度來節省成本。

如果你在 Claude Code 生成專案後,第一件事就是部署原型,那麼管理環境(env、密鑰、排程工作、備份)就是上下文工程的一部分。若沒有「所有東西放在哪裡」的架構,Claude 就會迷失方向,而你每次修改都得浪費時間。完整設定包括:AI 分身(依照你的方法論調整的 Skills 和 Subagents)+ 第二大腦(專案知識庫)+ 上下文工程(Plan Mode、/compact、執行環境)。這就是 AI 無法避免產生幻覺的三大支柱。

完整上下文工作流程:AI 分身 + 第二大腦 + 上下文工程。

更多資料請參閱 Ailoot。

更多詳情

常見問題:Coolify 與 Claude Code:將專案部署到自己的 VPS

部署後,哪個 URL 應回傳 JSON?

複製 Coolify Domains 欄位中的應用程式 URL,再開啟它的 /api/users 路徑。根網址是首頁;/api/users 才是範例專案建立的 JSON 端點。

如何計算自架是否省錢?

將每月 VPS、備份、儲存、流量、監控及選用控制台費加成 C。首年自架 TCO 為 12C 加 17–34 小時乘你的時薪成本,再與情境中的 Vercel 年估價比較;兩邊都應納入可比較的維運成本。

所有文章