FDE 小型 IDP 指南(無 K8s 篇):用自架 PaaS 打造 Vercel 級部署體驗
前言:FDE 的「非 K8s」困境
身為 Forward Deployed Engineer (FDE),你常常遇到這種情況:
客戶的環境只有 1-2 台 VM,沒有 K8s 經驗,也沒有專職 DevOps。但他們希望「以後能自己部署、自己維護」。
這時候,你有三條路:
- 教他們用 Docker Compose — 但客戶每次要改東西都得 SSH 進去、打指令,很快就會來找你
- 幫他們裝 K8s — 但 K8s 的學習曲線太陡,1-2 台 VM 也不划算
- 裝一套「自架 PaaS」 — 給他們一個像 Vercel、Render 那樣的介面,Git push 就能部署
這篇文章要告訴你第三條路怎麼走。
一、工具分類:先搞懂你要什麼
在開始之前,先釐清兩類工具的差異:
| 類型 | 代表工具 | 定位 | 適合場景 |
|---|---|---|---|
| Docker 管理 UI | Portainer、dpanel | 「增強版 docker 指令」 |
你已經懂 Docker,只想要個 UI |
| 自架 PaaS | Coolify、Dokploy、CapRover | 「自己的 Heroku/Vercel」 | 想要 Git push 自動部署的完整流程 |
💡 關鍵差異:
- Portainer 讓你「用 UI 管理 Docker」,但你還是得自己決定怎麼 build、怎麼設定 reverse proxy、怎麼弄 SSL。
- Coolify 幫你把「Git → build → run → domain → HTTPS → log」這整條 pipeline 都處理好。
如果客戶的痛點是「我不想打 docker run」,Portainer 就夠用。
如果客戶的痛點是「我想像 Vercel 那樣,推 code 就上線」,那你需要 Coolify。
二、自架 PaaS 選手對比
三個主流的自架 PaaS 選項:
| 工具 | 特點 | 優勢 | 注意事項 |
|---|---|---|---|
| Coolify | 功能最完整、UI 最現代 | Docker Compose 原生支援、內建資料庫/監控 | 資源需求較高(建議 2 core / 2GB RAM) |
| Dokploy | 支援 Docker Compose + Swarm | 多節點部署、Traefik 整合 | 相對較新,社群較小 |
| CapRover | 歷史最久、社群最大 | One-Click Apps 生態系豐富 | UI 相對老舊、Docker Compose 支援有限 |
本篇主角:Coolify
選擇 Coolify 的理由很簡單:它是這三個裡面最接近「Vercel 體驗」的選擇。你可以 Git push 自動部署、Web UI 管理環境變數、內建 Let's Encrypt SSL、還有漂亮的監控 Dashboard。
三、Coolify 架構介紹
在開始安裝之前,先了解 Coolify 的核心概念:
flowchart TB
subgraph VM["Your VM / VPS"]
subgraph Coolify["Coolify Dashboard (port 8000)"]
direction TB
subgraph Projects["Projects"]
direction LR
subgraph PA["Project A"]
A1["App 1"]
A2["App 2"]
PG["PostgreSQL"]
end
subgraph PB["Project B"]
B1["App 1"]
RD["Redis"]
end
subgraph PC["Project C"]
DB["Database"]
C1["App 1"]
end
end
Traefik["🔀 Traefik (Reverse Proxy)
→ 自動路由 Domain → Container
→ 自動 Let's Encrypt SSL"]
end
Docker["🐳 Docker Engine"]
end
Projects --> Traefik
Traefik --> Docker
核心元件
| 元件 | 角色 |
|---|---|
| Coolify Dashboard | Web 管理介面(:8000),管理 Project、App、Database |
| Traefik | 反向代理,自動處理 Domain routing + SSL |
| Docker Engine | 底層容器運行環境 |
| PostgreSQL | Coolify 自己的狀態資料庫 |
| Redis | 背景任務佇列 |
四、安裝 Coolify(10 分鐘)
前置條件
- 一台 Linux VM(Ubuntu 22.04 / Debian 12 推薦)
- 最低配置:2 core CPU、2 GB RAM、30 GB Storage
- Root 或 sudo 權限
- 防火牆開放 Port:22, 80, 443, 8000
Step 1: SSH 進入伺服器
ssh root@your-server-ip
Step 2: 一行安裝
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
⚠️ 這行指令會做什麼?
- 安裝必要工具(curl, wget, git, jq, openssl)
- 安裝 Docker Engine 24+
- 設定 Docker logging 和 daemon
- 建立
/data/coolify目錄- 設定 SSH key
- 啟動 Coolify
安裝完成後,你會看到:
✅ Coolify installed successfully!
🌐 Open http://your-server-ip:8000 to get started.
Step 3: 初始化
- 瀏覽器開啟
http://your-server-ip:8000 - 建立第一個 admin 帳號
⚠️ 重要:立刻建立帳號!
安裝後的註冊頁面是公開的。如果有人先你一步註冊,他就會成為管理員。
Step 4: 設定 Domain(可選但建議)
如果你有 Domain,可以把 Coolify Dashboard 也綁上去:
- DNS 設定:
coolify.yourdomain.com→your-server-ip - 在 Coolify Dashboard → Settings → Instance Settings
- 設定 Instance's Domain
這樣就可以用 https://coolify.yourdomain.com 存取 Dashboard。
五、部署第一個 App(5 分鐘)
方式 A:從 GitHub 部署(Vercel 體驗)
-
建立 Project
- Dashboard → Projects → New Project
-
新增 Application
- Project 裡面 → Add Resource → Application
-
連接 GitHub
- 選擇 GitHub(需授權)
- 選擇 Repository 和 Branch
-
設定 Build
- Build Pack:選擇適合的(Nixpacks / Dockerfile / Static)
- Port:你的 app 監聽的 port
-
設定 Domain
- 填入 Domain(例如
app.yourdomain.com) - 記得先設好 DNS A record
- 填入 Domain(例如
-
Deploy
- 點擊 Deploy
- 看 Build 和 Deploy log
🎉 完成!
之後每次 push 到該 branch,Coolify 會自動觸發部署(如果你開啟了 Auto Deploy)。
方式 B:用 Docker Compose
如果你已經有 docker-compose.yml:
-
新增 Resource → Docker Compose
-
貼上你的 Compose 檔案
-
設定 Domain(給需要對外的 service)
-
Deploy
Coolify 會自動:
- 建立網路
- 設定 Traefik 路由
- 申請 SSL 憑證
六、部署 Database
這是 Coolify 比 Portainer 方便的地方——內建 Database 管理。
-
Add Resource → Database
-
選擇類型
- PostgreSQL
- MySQL / MariaDB
- MongoDB
- Redis
-
設定
- Password(自動生成或自訂)
- Volume(資料持久化)
-
Deploy
部署後,Coolify 會提供:
- Connection String
- 內部 hostname(給同 Project 的 app 用)
💡 好處:你的 app 可以直接用內部網路連資料庫,不用對外開 port。
七、管理與維運
日常操作
| 任務 | 操作位置 |
|---|---|
| 查看 Log | Application → Logs |
| 重新部署 | Application → Redeploy |
| 環境變數 | Application → Environment Variables |
| 手動 Rollback | Application → Deployments → 選舊版本 → Rollback |
| Scale(需要資源) | Application → Advanced → Replicas |
備份
Coolify 支援自動備份到:
- Local
- S3
- S3-compatible(MinIO、Backblaze B2)
設定路徑:Application/Database → Backups
監控
Dashboard 首頁就有基本監控:
- CPU / Memory / Network 使用率
- 各 app 狀態
需要更詳細的監控?可以用 Coolify 一鍵部署:
- UptimeKuma:服務可用性監控
- Grafana + Prometheus:完整 metrics
八、FDE 交付 Checklist
當你把 Coolify 環境交給客戶時,記得準備:
文件
# 客戶交接文件
## 存取資訊
- Coolify Dashboard: https://coolify.yourdomain.com
- 管理員帳號: [提供]
- 伺服器 SSH: root@ip(備用)
## 日常操作
- 如何查看 log
- 如何重新部署
- 如何修改環境變數
## 備份
- 備份位置: [S3 bucket / local path]
- 備份頻率: Daily
- 恢復流程: [連結]
## 緊急聯絡
- [你的聯絡方式]
權限設定
Coolify 支援多使用者、Team、權限控制:
- Settings → Team
- 邀請成員(用 Email)
- 設定權限
- Admin:完整權限
- Developer:可部署,不能改設定
- Viewer:只能看
自動更新
Coolify 預設會自動更新自己。如果客戶環境較保守:
# 關閉自動更新(安裝時)
env AUTOUPDATE=false bash -c 'curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash'
然後手動更新:Dashboard → Settings → Update
九、其他選項速覽
如果 Coolify 不適合你的場景,這裡是其他選項:
Dokploy — 需要多節點時
curl -sSL https://dokploy.com/install.sh | sh
優點:
- 內建 Docker Swarm 支援
- 可以管理多台 server
- UI 也很現代
適合:你需要 2-5 台 VM 組成「輕量級叢集」
CapRover — 想要最多 One-Click Apps
docker run -p 80:80 -p 443:443 -p 3000:3000 \
-e ACCEPTED_TERMS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /captain:/captain \
caprover/caprover
優點:
- 歷史最久、社群最大
- One-Click Apps 超過 200 個
- 用 CLI 或 Web UI 都能操作
適合:你想要最豐富的「一鍵部署應用」生態系
Portainer — 只需要 Docker UI
docker run -d -p 9000:9000 \
--name portainer \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
優點:
- 最輕量(幾百 MB RAM)
- 對 Docker Swarm 原生支援最好
- 社群/商用版可選
適合:客戶已經熟 Docker,只需要 UI 管理
十、選擇決策樹
你需要的是什麼?
│
├─ 「我想要 Git push 自動部署」
│ └─ → Coolify(首選)或 Dokploy
│
├─ 「我需要管理多台 server」
│ ├─ 想要 PaaS 體驗 → Dokploy(內建 Swarm)
│ └─ 只需要 Docker 管理 → Portainer + Docker Swarm
│
├─ 「我想要最多一鍵安裝的 app」
│ └─ → CapRover
│
├─ 「我只想要個 Docker UI」
│ └─ → Portainer 或 dpanel
│
└─ 「我需要 K8s」
└─ → 參考姊妹篇:Lean GitOps IDP
結論:找到「剛剛好」的平衡點
對 FDE 來說,交付給客戶的方案需要滿足三個條件:
- 客戶能自己操作:不用 SSH、不用打指令
- 你能快速部署:不用花兩週教 K8s
- 出問題能救:有 log、有備份、有 rollback
Coolify 是目前最接近這個平衡點的選擇。
一行指令安裝、10 分鐘上線、Web UI 操作、Git 自動部署。對於「1-2 台 VM、沒有 K8s、需要交給客戶維護」的場景,這就是你的答案。
💡 最後提醒
這篇是 私有雲小型 IDP 實戰:Lean GitOps 的「姊妹篇」。
- 如果客戶有 K8s 經驗、需要多環境管理 → 看 Lean GitOps IDP
- 如果客戶沒有 K8s、只想要簡單部署 → 看這篇
附錄:常用指令速查表
| 任務 | 指令 |
|---|---|
| 安裝 Coolify | curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash |
| 安裝(關閉自動更新) | env AUTOUPDATE=false bash -c 'curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash' |
| 安裝(預設 admin 帳號) | env ROOT_USERNAME=admin [email protected] ROOT_USER_PASSWORD=YourPass bash -c 'curl ...' |
| Coolify 資料目錄 | /data/coolify |
| 重啟 Coolify | cd /data/coolify/source && docker compose up -d --force-recreate |
| 查看 Coolify log | cd /data/coolify/source && docker compose logs -f |
參考資源
- ← Previous
多輪 RAG 對話記憶:從 Sliding Window 到 localStorage 的實作指南 - Next →
Vercel vs Cloudflare vs Netlify:多語言 Serverless API 部署完全指南