なぜ Composia か
Composia は Docker Compose 向けのセルフホスト型コントロールプレーンです。サービスをプレーンファイルとして定義し、1 つまたは複数のノードにデプロイし、インフラ全体を統一的に可視化します。
PaaS ではありません
セルフホスト型 PaaS プラットフォームとは異なり、Composia はあなたの Compose ファイルを独自のアプリケーションモデルで置き換えたりしません。設定はあなたが所有する標準の docker-compose.yaml と composia-meta.yaml ファイルに保存されます。コントロールプレーンは調整と報告を行いますが、各ノードへの直接の CLI およびファイルベースのアクセスは常に保持されます。
Composia を停止しても docker compose コマンドは引き続き動作します。すべての操作は標準の Docker と Compose のプリミティブの上に構築されています。ロックインはありません。
他ツールとの比較
Dockge、Dockman
Dockge と Dockman は個別の Compose スタックの管理をより快適にします。ブラウザ UI によるシングルノードの利便性に焦点を当てています。
Composia はファイルファーストのアプローチを共有しつつ、マルチノード調整を追加しています。設定した任意のノードにサービスをデプロイし、すべてのサービスとノードを 1 つのダッシュボードで統一的に表示し、すべての操作を完全なログ付きで記録するタスクシステムを使用します。CLI はスクリプトと自動化のために構築されており、単なる一時的な利用ではありません。
Dokploy、Coolify
Dokploy と Coolify はセルフホスト型 PaaS プラットフォームです。独自のアプリケーションモデルを定義し、ビルドパイプラインを管理し、基盤インフラを抽象化します。これらを採用すると、デプロイワークフローはその抽象化に依存することになります。
Composia は逆のアプローチを取ります。既存の Compose ファイルをあなた自身のディレクトリ構造のまま扱います。ビルドパイプラインも、学習すべきアプリケーションモデルも、あなたと Docker の間の抽象化レイヤーもありません。Composia は Docker が行う作業を調整します — Docker をプラットフォームの抽象化の背後に隠したりしません。
設計上の決定
ファイルベースの設定
Composia はランタイム状態に SQLite を、期待状態設定に Git を使用します。すべての設定はファイルベースのままで、PostgreSQL、MySQL、外部データベース依存は一切ありません。
Git リポジトリと SQLite データベースファイルをバックアップするだけで Composia 全体をバックアップできます。新しいマシンにそれらをリストアすればすぐに復旧します。データベースマイグレーションも、接続プールも、別途のデータベースサーバーも不要です。
標準ファイル、抽象化なし
サービスとは 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、Huawei Cloud 向けの自動 DNS レコード作成。レコードはデプロイ時に同期され、停止時に削除されます。
リバースプロキシ。 サービスごとの Caddyfile 設定を同期し、自動的にリロードをトリガーする Caddy 統合。生成された設定ファイルはエージェント上に存在し、Caddy インフラストラクチャサービスによってインポートされます。
イメージ更新。 Docker レジストリや GitHub、GitLab、Forgejo のリリースから新しいイメージバージョンを自動検出。semver、日付、正規表現、latest フィルタリングをサポート。更新を自動適用または確認後に適用します。
通知。 タスク結果、バックアップイベント、イメージ更新、ノード状態変化を Email(SMTP)、Telegram、Alertmanager で通知。イベントタイプとタスクソースによるフィルタリングが可能です。
暗号化シークレット。 サービスのシークレットファイルに Age ベースの暗号化。シークレットはリポジトリに暗号化された状態で保存され、コントローラー上でのみ復号されます。エージェントは秘密鍵にアクセスすることなく、サービスバンドル内で復号されたコンテンツを受け取ります。
タスクシステム。 すべての操作はステップレベルの進捗、完全なログ出力、完了ステータスを持つ追跡可能なタスクです。タスクの再実行、タスクステップの検査、リアルタイムのログ追跡が可能です。
Prometheus メトリクス。 コントローラーは HTTP サーバー上で Prometheus メトリクスを公開します。
対象ユーザー
Composia は以下のようなパワーユーザーと運用チームのために作られています:
- すでに Docker Compose を使用しており、ワークフローを変えずにマルチノード調整を求めている方。
- Web フォームをクリックするよりも Git でのプレーンテキスト設定を好む方。
- 自動化(バックアップ、DNS、更新)を求めつつも、Compose ファイルをプラットフォームに委ねることを拒否する方。
- ブラウザ UI だけでなく、スクリプト化・統合可能な CLI を必要とする方。
- ファイルベースの設定、ロックインフリー、低依存のインフラを重視する方。