Skip to main content
Glama

fleet

Dockerプロダクション管理CLI + MCPサーバー

CI npm Node TypeScript License

単一サーバー上のDocker Composeアプリを管理します。systemdオーケストレーション、nginxルーティング、age暗号化シークレット、ヘルスモニタリング、依存関係追跡、Gitワークフロー、およびAI支援運用用のMCPサーバーを備えています。

ドキュメント -- npm -- GitHub


アーキテクチャ

graph TD
    CLI["fleet CLI"]
    TUI["TUI Dashboard"]
    MCP["MCP Server"]
    BOT["fleet-bot (Go)"]

    CLI --> Core
    TUI --> Core
    MCP --> Core
    BOT -->|"via MCP"| Core

    subgraph Core["Core Modules"]
        Registry["Registry"]
        Docker["Docker Compose"]
        Systemd["systemd"]
        Nginx["nginx"]
        Secrets["Secrets Vault"]
        Health["Health Checks"]
        Git["Git / GitHub"]
        Deps["Dependency Monitor"]
    end

    Docker --> Containers["Containers"]
    Systemd --> Services["systemd Services"]
    Nginx --> Proxy["Reverse Proxy"]
    Secrets --> Vault["vault/*.age"]
    Secrets --> Runtime["/run/fleet-secrets"]
    Health --> Alerts["Telegram / iMessage"]

各Docker Composeアプリは、composeパス、ドメイン、ポート、コンテナ名で登録されます。Fleetはsystemdユニットを生成し、アプリが起動時に正しい順序で開始されるようにします。シークレットはageで保存時に暗号化され、起動時にtmpfsへ復号されます。

Related MCP server: coolify-mcp

インストール

npm install -g @matthesketh/fleet

Node.js 20+、Docker Compose v2、systemd、nginx、およびageが必要です。詳細は完全なセットアップガイドを参照してください。

主な機能

アプリのデプロイと管理 -- fleet deploy <app-dir> でアプリの登録、ビルド、起動を1つのコマンドで行います。start、stop、restart、logs でサービスを制御します。

暗号化されたシークレット -- 自動バックアップ、シール前の検証、ドリフト検出、アトミックなロールバックを備えたage暗号化ボルト。起動時にtmpfsへ復号されるため、シークレットがディスクに書き込まれることはありません。

Nginxルーティング -- fleet nginx add でプロキシ、SPA、またはNext.jsサーバーブロックを生成します。設定の自動テストとリロードを行います。

ヘルスモニタリング -- fleet health による3層チェック(systemd + コンテナ + HTTP)。watchdog コマンドはcronで実行され、障害時にアラートを送信します。

依存関係スキャン -- 登録されているすべてのアプリにわたり、古いパッケージ、CVE(OSV経由)、Dockerイメージの更新、ランタイムのEOLを検出します。

Gitワークフロー -- アプリをGitHubにオンボードし、CLIからブランチ、PR、リリースを管理します。

インタラクティブダッシュボード -- fleet をそのまま実行すると、リアルタイムステータスを表示するフルスクリーンTUIが起動します。

コマンドの全リストについてはCLIリファレンスを参照してください。

シークレットフロー

graph LR
    Import["fleet secrets import"]
    Set["fleet secrets set"]

    Import --> Encrypt["age encrypt"]
    Set --> Encrypt

    Encrypt --> Vault["vault/*.age"]
    Vault -->|"boot / fleet secrets unseal"| Decrypt["age decrypt"]
    Decrypt --> Runtime["/run/fleet-secrets (tmpfs)"]
    Runtime -->|"env_file / secrets"| Containers["Docker Containers"]

    Runtime -->|"fleet secrets seal"| Encrypt
    Vault -.->|"drift detection"| Runtime

シークレットは個別にインポートまたは設定され、ageで暗号化されてボルトに保存されます。起動時(または手動)に、Dockerコンテナが参照するtmpfsマウントへ復号されます。シールを行うと、ランタイムの変更がボルトに書き戻されます。ドリフト検出はボルトとランタイムを比較し、保存されていない変更をキャッチします。

デプロイフロー

graph TD
    Deploy["fleet deploy app-dir"]
    Deploy --> Register{"Already\nregistered?"}
    Register -->|No| Add["Register app"]
    Register -->|Yes| Build
    Add --> Build["docker compose build"]
    Build --> Start{"Service\nrunning?"}
    Start -->|No| StartSvc["systemctl start"]
    Start -->|Yes| Restart["systemctl restart"]
    StartSvc --> Healthy["App deployed"]
    Restart --> Healthy

MCPサーバー

Fleetは、AI支援によるサーバー管理のためにModel Context Protocolを通じて36個のツールを公開しています。fleet mcp を実行してstdioサーバーを起動するか、Claude Codeにインストールしてください:

sudo fleet install-mcp

ツールは、アプリのライフサイクル、シークレット、nginx、Git、ヘルスチェック、依存関係モニタリングなど、広範囲をカバーしています。ツールの全リストについてはMCPドキュメントを参照してください。

fleet-bot

TelegramまたはiMessageを通じてリモートサーバー管理を提供するGo製のコンパニオンボット(bot/)です。これは、ハンズフリー運用のためにfleetのMCPツールにアクセスできるClaude Codeセッションを実行します。

セットアップ手順についてはボットドキュメントを参照してください。

開発

git clone https://github.com/wrxck/fleet.git
cd fleet
npm install
npm test          # vitest
npm run build     # compile TypeScript to dist/
npm run dev       # run with tsx (no build needed)

ライセンス

MIT

Related MCP Connectors

Related MCP Servers