Skip to content

インストールとセットアップ

このガイドでは、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 コンソールにログインし、以下のコマンドを実行します:

sql
-- 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: バイナリを直接サーバーに導入する場合

  1. サーバーのOSやCPUに合わせて最新の cockpit プログラムファイルをダウンロードします。
  2. ファイルをシステムフォルダー /usr/local/bin/cockpit に配置します。
  3. 実行権限を付与します: chmod +x /usr/local/bin/cockpit
  4. 設定ファイルを置くフォルダーを作成します: mkdir -p /etc/cockpit

オプション B: コンテナで実行する場合 (Docker/Podman)

コンテナを利用する場合は、以下のコマンドで Cockpit をビルドして起動できます:

bash
# 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 というファイルから設定を読み込みます。以下は代表的な設定例の解説です:

ini
# --- 接続と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 ファイルを作成し、以下の内容を記述します:

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

サービスの有効化と起動:

サーバーのターミナルで以下のコマンドを実行します:

bash
# 1. サーバーに新しいサービスファイルを読み込ませる
systemctl daemon-reload

# 2. 自動起動を有効化し、今すぐサービスを開始する
systemctl enable --now cockpit.service

# 3. 動作ログをリアルタイムで確認し、エラーがないか検証する
journalctl -u cockpit.service -f