Skip to content

インストールとデプロイガイド

このガイドでは、Cockpit のインストール、設定、およびシステムサービスの設定について説明します。シングルインスタンスのデプロイと、高可用性 (High Availability) クラスターアーキテクチャの両方をカバーします。


デプロイトポロジー

インフラストラクチャの要件に合わせて、以下のデプロイトポロジーを選択してください。

1. シングルインスタンスデプロイ

管理する Vapor ハイパーバイザーが 20 台未満の小規模な環境に適しています。単一の Cockpit アプリケーションゲートウェイプロセスが、スタンドアロンの PostgreSQL データベースサーバーに直接接続します。このアーキテクチャは設定が容易ですが、耐障害性 (fault tolerance) がありません。

2. マルチインスタンス (高可用性クラスター) デプロイ

ダウンタイムを最小限に抑える必要がある本番環境に推奨されます。複数のアクティブ・アクティブな Cockpit インスタンスが、レイヤー 7 ロードバランサー (HAProxy や NGINX など) の背後で同時に実行されます。各インスタンスは、共有のクラスター化された PostgreSQL データベース (Patroni などで管理) を使用して状態を調整し、PostgreSQL の pg_notify チャネルを使用してリアルタイムでイベントを同期します。


ステップ 1: データベースの初期化

Cockpit には、構成データ、監査証跡、およびインベントリメタデータを保存するために、PostgreSQL データベース (バージョン 15 以降) が必要です。

データベーススキーマは、uuid-ossp 拡張機能を使用して、クラスターリソース (仮想マシン、ユーザーレコード、ネットワークインターフェースなど) のプライマリキーとして RFC 4122 に準拠した汎用一意識別子 (UUID) を生成します。

データベーススクリプト

PostgreSQL コンソールにログインし、次の構成コマンドを実行します。

sql
-- 1. 新しいターゲットデータベースを作成します
CREATE DATABASE cockpit_db;

-- 2. セキュリティで保護されたパスワードを使用してシステムサービスアカウントを作成します
CREATE USER cockpit_user WITH PASSWORD 'securepassword';

-- 3. スキーマ権限をサービスアカウントに付与します
GRANT ALL PRIVILEGES ON DATABASE cockpit_db TO cockpit_user;

-- 4. 作成したデータベースに接続します
\c cockpit_db

-- 5. UUID 生成拡張機能を有効にします
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

ステップ 2: システムのインストール

Cockpit は、スタンドアロンのシステムバイナリとして、またはコンテナエンジン (Docker または Podman) 内でデプロイできます。

オプション A: スタンドアロンバイナリによるインストール

  1. ターゲットアーキテクチャに適合するコンパイル済みの cockpit バイナリを入手します。
  2. バイナリをシステムバイナリディレクトリに配置します: /usr/local/bin/cockpit
  3. 実行権限を設定します: chmod +x /usr/local/bin/cockpit
  4. システム構成ディレクトリを作成します: mkdir -p /etc/cockpit

オプション B: コンテナによるデプロイ

Docker を使用して Cockpit サービスをコンテナとしてビルドし実行するには、以下のコマンドを使用します。

bash
# 1. プロジェクトのルートからコンテナイメージをビルドします
docker build -t awanio/cockpit:latest -f Containerfile .

# 2. PostgreSQL 接続文字列を含めてコンテナを実行します
docker run -d \
  -p 7771:7771 \
  --name cockpit-server \
  -v /etc/cockpit:/etc/cockpit \
  -e DATABASE_URL="postgres://cockpit_user:securepassword@db-host:5432/cockpit_db?sslmode=disable" \
  awanio/cockpit:latest

ステップ 3: 構成 (cockpit.conf)

Cockpit は、/etc/cockpit/cockpit.conf から起動時の設定を読み込みます。以下は構成ファイルの例です。

ini
# --- 接続と HTTP ゲートウェイ設定 ---
PORT = 7771
BIND_ADDRESS = "0.0.0.0"
SSL_CERT = "/etc/cockpit/certs/server.crt" # ローカル TLS 証明書のパス
SSL_KEY = "/etc/cockpit/certs/server.key"  # ローカル TLS 秘密鍵のパス

# --- データベース統合 ---
# PostgreSQL 接続 URL と接続プール構成
DATABASE_URL = "postgres://cockpit_user:securepassword@localhost:5432/cockpit_db?sslmode=disable"
DB_MAX_IDLE_CONNS = 10
DB_MAX_OPEN_CONNS = 100

# --- JWT 認証セキュリティ ---
# JSON Web Token (JWT) の暗号署名キー
JWT_SECRET = "supersecretjsonwebtokenkeyfordevelopment"
JWT_EXPIRATION_HOURS = 24

# --- ダウンストリームメトリクスとテレメトリ ---
# テレメトリ収集およびヘルスチェックの間隔 (秒単位)
COLLECTOR_HEALTH_CHECK_INTERVAL = 10
VAPOR_WS_TIMEOUT_SECONDS = 120

ステップ 4: Systemd サービスの設定

Cockpit をスタンドアロンバイナリとして実行する場合は、Systemd を構成してデーモンのライフサイクルを管理します。

次の内容を含むサービス構成ファイル /etc/systemd/system/cockpit.service を作成します。

ini
[Unit]
Description=Cockpit Multi-Host Vapor Manager
After=network.target postgresql.service

[Service]
Type=simple
User=cockpit
WorkingDirectory=/var/lib/cockpit
ExecStart=/usr/local/bin/cockpit -config /etc/cockpit/cockpit.conf
Restart=always
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

デーモンの起動

以下のコマンドを実行して systemd を再読み込みし、起動時にサービスを有効化し、デーモンを開始します。

bash
# 1. systemd マネージャー構成を再読み込みします
systemctl daemon-reload

# 2. サービスを有効化し、開始コマンドを実行します
systemctl enable --now cockpit.service

# 3. システムログの出力を監視します
journalctl -u cockpit.service -f