為什麼選擇 Composia
Composia 是一個自託管的 Docker Compose 控制平面。將您的服務定義為純文字檔案,部署到一個或多個節點,並在整個基礎架構中獲得統一的可見性。
它不是 PaaS
與自託管的 PaaS 平台不同,Composia 不會用自身的應用程式模型取代您的 Compose 檔案。您的設定檔存放在標準的 docker-compose.yaml 和 composia-meta.yaml 檔案中,完全由您掌控。控制平面負責協調與回報,但您始終保有對每個節點的直接 CLI 與檔案層級存取。
關閉 Composia 後,您的 docker compose 指令仍然可以運作。每個操作都建立在標準的 Docker 與 Compose 基本元件之上。完全沒有鎖定風險。
與其他工具的比較
Dockge、Dockman
Dockge 與 Dockman 讓管理個別 Compose 堆疊更加便利,專注於單節點操作並提供瀏覽器 UI。
Composia 同樣採取檔案優先的設計,但增加了多節點協調能力:將服務部署到任意已設定的節點,在單一儀表板中檢視所有服務與節點的統一狀態,並使用任務系統記錄每個操作及完整日誌。CLI 專為腳本編寫與自動化而設計,而非僅供偶爾使用。
Dokploy、Coolify
Dokploy 與 Coolify 是自託管的 PaaS 平台。它們定義自己的應用程式模型、管理建置管線,並將底層基礎架構抽象化。一旦採用它們,您的部署工作流程就會依賴於它們的抽象層。
Composia 採取相反的做法。它直接使用您現有的 Compose 檔案和您自己的目錄結構。沒有建置管線、沒有需要學習的應用程式模型、您與 Docker 之間沒有抽象層。Composia 協調 Docker 執行的工作——它不會將 Docker 隱藏在平台抽象層之後。
設計決策
以檔案為基礎的設定
Composia 使用 SQLite 儲存執行時期狀態,並使用 Git 儲存期望狀態設定。所有設定都維持以檔案為基礎,不需要 PostgreSQL、MySQL 或任何外部資料庫依賴。
備份整個 Composia 安裝只需備份您的 Git 存放庫和 SQLite 資料庫檔案。將它們還原到新機器即可恢復上線。無需資料庫遷移、無連線池、無獨立的資料庫伺服器。
標準檔案,無抽象層
一個服務就是一個包含 docker-compose.yaml 和 composia-meta.yaml 的目錄。您可以按自己的方式組織目錄,也可以加入 Compose 專案所需的任何檔案:env 檔案、設定範本、Caddyfile、自訂腳本。
Composia 從您的 Git 存放庫讀取這些檔案,並建置服務包供代理使用 docker compose 執行。沒有任何轉換、翻譯或重寫。您的 Compose 檔案就是唯一的真實來源。
Git 原生
控制器將期望狀態存放在 Git 存放庫中。每次變更都是一個帶有作者與訊息的提交。您獲得版本歷史、回溯能力,以及與遠端存放庫同步的能力。使用您已熟悉的任何 Git 工作流程。
CLI 與 API 優先
在 Web UI 中能做的所有事,都可以透過 composia CLI 完成。CLI 使用與 Web 前端相同的公開 API。腳本、CI 管線與 AI 代理都透過同一個介面與 Composia 溝通。
Web UI 是一個呼叫相同控制器 API 的 SvelteKit 應用程式。沒有獨立的管理 API 或內部專用端點。
您所獲得的
多節點部署。 在 composia-meta.yaml 中定義服務應在哪些節點上執行。Composia 將服務部署到所有目標節點並回報每個節點的狀態。
Web 儀表板。 瀏覽與編輯存放庫檔案、檢視即時容器日誌、檢查 Docker 資源(容器、映像檔、網路、磁碟區),並開啟執行中容器的互動式終端機。儀表板支援行動裝置。
備份與還原。 由 Rustic 驅動的自動化備份,支援排程執行、快照管理與隨需還原。保護檔案、目錄、具名磁碟區與 PostgreSQL 資料庫。
DNS 管理。 自動為 Cloudflare、AliDNS、DNSPod、Route53 與華為雲建立 DNS 記錄。在部署時同步記錄,並在停止時移除。
反向代理。 Caddy 整合,同步各服務的 Caddyfile 設定並自動觸發重新載入。產生的設定檔存放在代理端,由 Caddy 基礎架構服務匯入。
映像檔更新。 自動從 Docker 登錄庫與 GitHub、GitLab 或 Forgejo 發行版本中偵測新的映像檔版本。支援 semver、日期、正則表達式和 latest 過濾。可自動套用更新或先審查再套用。
通知。 Email (SMTP)、Telegram 與 Alertmanager 通知,涵蓋任務結果、備份事件、映像檔更新與節點狀態變更。可按事件類型與任務來源過濾。
加密密鑰。 使用 Age 加密服務密鑰檔案。密鑰以加密形式存放在存放庫中,僅在控制器端解密。代理在服務包中收到解密內容,從不接觸私鑰。
任務系統。 每個操作都是一個可追蹤的任務,包含步驟層級的進度、完整日誌輸出與完成狀態。可重新執行任務、檢查任務步驟並即時追蹤日誌。
Prometheus 指標。 控制器在其 HTTP 伺服器上提供 Prometheus 指標。
適合的使用者
Composia 為進階使用者和運維團隊打造,適合以下人群:
- 已在使用 Docker Compose,希望增加多節點協調但不改變現有工作流程。
- 偏好 Git 中的純文字設定,而非透過網頁表單點擊操作。
- 需要自動化(備份、DNS、更新),但不願將 Compose 檔案交給平台。
- 需要可編寫腳本與整合的 CLI,而不僅僅是瀏覽器 UI。
- 重視以檔案為基礎的設定、無鎖定與低依賴的基礎架構。