インストールとセットアップ
このガイドでは、Cockpit を単一サーバーでシンプルに動かす方法と、信頼性の高い複数台構成(高可用性)で導入する方法について説明します。
導入スタイルの選択 (デプロイメントトポロジー)
インストールを始める前に、運用ニーズに合わせて最適な構成を選択してください。
1. シングルインスタンス (標準の単一構成)
小規模なクラスター(管理する物理 Vapor サーバーが 20台未満)に最適です。単一のサーバーで Cockpit を実行し、データベースに接続します。
- 💡 たとえ話:ワンオペの屋台 これは1人の料理人で回す小さな屋台のようなものです。注文受け、調理、片付けをすべて1人で行います。シンプルでコストもかかりませんが、料理人が体調を崩す(サーバーがクラッシュする)と、屋台は閉めざるを得なくなります。
2. マルチインスタンス (高可用性クラスター構成)
サービスを絶対に止めたくないビジネスに推奨されます。複数の Cockpit サーバーが、ロードバランサー(HAProxy や Nginx などの交通整理係で、アクセスを稼働中のサーバーへ自動的に振り分ける仕組み)の配下で同時に動きます。
- 💡 たとえ話:チームで回す大きなレストランの厨房 入り口の案内係が、空いている席へお客さまを案内します。もし厨房のシェフが1人倒れても(1台の Cockpit サーバーがクラッシュする)、他のシェフが調理を続けるため、お客さまはトラブルに気づきません。複数のシェフは共有のオーダーブック(クラスター化された PostgreSQL)とインカム(
pg_notify)を使って、同じ料理を2回作ってしまわないように連携します。
ステップ 1: データベースのセットアップ
Cockpit は、設定、ユーザーアカウント、および管理対象サーバーのリストを保存するために PostgreSQL データベース(バージョン 15 以降)を必要とします。
また、uuid-ossp 拡張機能を有効にする必要があります。
- なぜ必要か? この拡張機能は、デジタルラベル作成機のようなものです。作成するすべての仮想マシン、ユーザーアカウント、ネットワークに世界で重複しない固有のID(UUID)を自動的にスタンプし、データが混ざって混乱するのを防ぎます。
データベースの初期化:
PostgreSQL コンソールにログインし、以下のコマンドを実行します:
-- 1. "cockpit_db" という新しいデータベースを作成する
CREATE DATABASE cockpit_db;
-- 2. セキュリティが確保されたパスワードを持つ "cockpit_user" ユーザーを作成する
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 のインストール
Cockpit は、通常のプログラム(バイナリ)として直接実行するか、コンテナ(Docker/Podman)内で動かすことができます。
オプション A: バイナリを直接サーバーに導入する場合
- サーバーのOSやCPUに合わせて最新の
cockpitプログラムファイルをダウンロードします。 - ファイルをシステムフォルダー
/usr/local/bin/cockpitに配置します。 - 実行権限を付与します:
chmod +x /usr/local/bin/cockpit。 - 設定ファイルを置くフォルダーを作成します:
mkdir -p /etc/cockpit。
オプション B: コンテナで実行する場合 (Docker/Podman)
コンテナを利用する場合は、以下のコマンドで Cockpit をビルドして起動できます:
# 1. ソースコードからコンテナイメージをビルドする
docker build -t awanio/cockpit:latest -f Containerfile .
# 2. コンテナを実行し、データベースに接続する
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 というファイルから設定を読み込みます。以下は代表的な設定例の解説です:
# --- 接続とWebの設定 ---
PORT = 7771
BIND_ADDRESS = "0.0.0.0" # すべてのネットワークインターフェースからの接続を受け付ける
SSL_CERT = "/etc/cockpit/certs/server.crt" # セキュアHTTPS接続の証明書パス
SSL_KEY = "/etc/cockpit/certs/server.key" # セキュアHTTPS接続の鍵パス
# --- データベース接続設定 ---
# PostgreSQL データベースへのログイン情報を記述します:
DATABASE_URL = "postgres://cockpit_user:securepassword@localhost:5432/cockpit_db?sslmode=disable"
DB_MAX_IDLE_CONNS = 10
DB_MAX_OPEN_CONNS = 100
# --- ログインキーのセキュリティ (JWT) ---
# Cockpit がデジタルパス(トークン)を発行する際に署名に使う、十分長い秘密の文字列
JWT_SECRET = "supersecretjsonwebtokenkeyfordevelopment"
JWT_EXPIRATION_HOURS = 24
# --- コレクターの設定 ---
# 接続先の Vapor サーバーが生存しているか確認する間隔 (秒数)
COLLECTOR_HEALTH_CHECK_INTERVAL = 10
VAPOR_WS_TIMEOUT_SECONDS = 120ステップ 4: 自動起動の設定 (Systemd)
バイナリを直接実行している場合は、サーバーの起動時に Cockpit も自動起動するように設定する必要があります。
/etc/systemd/system/cockpit.service ファイルを作成し、以下の内容を記述します:
[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サービスの有効化と起動:
サーバーのターミナルで以下のコマンドを実行します:
# 1. サーバーに新しいサービスファイルを読み込ませる
systemctl daemon-reload
# 2. 自動起動を有効化し、今すぐサービスを開始する
systemctl enable --now cockpit.service
# 3. 動作ログをリアルタイムで確認し、エラーがないか検証する
journalctl -u cockpit.service -f