背景と導入の理由
多くのシステム管理者にとって、SSH経由でヘッドレスなLinuxサーバーの障害対応を行うのは日常茶飯事です。しかし、深夜2時にオンコールアラートで叩き起こされた際、複数のターミナルタブを行き来しながらボトルネックを突き止める作業は貴重な時間を奪います。top、iostat -xz 1、journalctl -xe、ip linkを順番に実行することでも対処できますが、どうしても対応速度は落ちてしまいます。普段からbash環境に浸りきっていない開発者やジュニアエンジニアがチームにいる場合、レスポンスの良いWebコンソールがあればインシデントの解決を劇的に迅速化できます。
Cockpitはまさにこの課題を解決するために作られました。Red Hatが中心となって開発を進め、ほぼすべての主要ディストリビューションで利用可能なCockpitは、標準のLinux APIと直接連携するモジュール式のブラウザベース管理ダッシュボードを提供します。WebminやcPanelといった従来のコントロールパネルとは根本的に異なります。
旧来のツールは重いデーモンを常駐させ、独自スキーマで設定ファイルを書き換えてしまうことが少なくありませんでした。しかし、Cockpitは設定ファイルに手を加えることはありません。代わりにsystemdソケット、PAM認証、NetworkManager、UDisks2といった標準コンポーネントを活用します。アクティブなブラウザセッションが存在しない場合、サービスはアイドル状態となり、RAM消費量はほぼ0 MB、CPU使用率も実質ゼロに保たれます。
本番環境のUbuntuおよびRocky Linux VPSノード14台のクラスタを3年以上にわたり運用する中で、私はWebに公開される管理インターフェース全般を常に懐疑的な目で見てきました。root権限をHTTP経由で公開することには慎重を期す必要があります。Cockpitは独自のミドルウェアを挟むことなく、既存のsudoルール、SELinuxポリシー、SSHキーのパーミッションといったネイティブなLinuxセキュリティプリミティブを忠実に尊重するため、従来の管理パネルにありがちなセキュリティ上の落とし穴を回避できます。
インストール
Cockpitは、最新の主要ディストリビューションのデフォルトパッケージリポジトリに含まれています。肥大化したモノリシックなバイナリをインストールするのではなく、ストレージ、ネットワーキング、パッケージ保守などの機能ごとに軽量でモジュール化されたプラグインに分割されています。
Ubuntu / Debian系システム
Ubuntu 22.04/24.04 LTSやDebian 12システムでは、aptを使用してコアコンソールと標準管理モジュールをインストールします。
sudo apt update
sudo apt install -y cockpit cockpit-storaged cockpit-networkmanager cockpit-packagekit
RHEL、AlmaLinux、Rocky Linux、Fedora
Enterprise Linux 8および9系のディストリビューションでは、ベースリポジトリからCockpitをすぐに利用できます。
sudo dnf install -y cockpit cockpit-storaged cockpit-networkmanager cockpit-packagekit
KVMハイパーバイザーを運用している場合は、cockpit-machinesを追加することで、仮想マシンの管理や仮想NICの割り当てをWeb UIから直接実行できるようになります。
初期設定
パッケージのインストールが完了したら、ソケットアクティベーションの設定とファイアウォールポートの開放を行います。
1. systemdソケットアクティベーションの有効化
Cockpitは、systemdのオンデマンドソケットアクティベーションを活用することで、バックグラウンドでのWebデーモン常駐を回避しています。cockpit-wsプロセスは、該当ポートに着信トラフィックがあった時にのみ起動します。以下のコマンドでソケットを有効化し、即座に起動します。
sudo systemctl enable --now cockpit.socket
systemdがTCPポート9090をリッスンしていることを確認します。
sudo systemctl status cockpit.socket
ss -tulpn | grep 9090
systemdが*:9090または:::9090にバインドされ、アクティブにリッスンしているステータスが表示されるはずです。
2. ファイアウォールルールの設定
Cockpitはデフォルトでポート9090のトラフィックを受け付けます。接続を試みる前に、ホストのファイアウォールでポートを開放してください。
UFWを使用しているシステム(Ubuntu/Debian):
sudo ufw allow 9090/tcp comment 'Cockpit Webコンソール'
sudo ufw reload
firewalldを使用しているシステム(RHEL、Rocky、AlmaLinux):
sudo firewall-cmd --add-service=cockpit --permanent
sudo firewall-cmd --reload
3. セキュリティ強化とカスタム設定
Cockpitは/etc/cockpit/cockpit.confからオーバーライド設定を読み込みます。このファイルはインストーラーによって自動生成されないため、セッションタイムアウトの短縮、同時ログイン試行の制限、非暗号化トラフィックの拒否を強制するために手動で作成します。
sudo mkdir -p /etc/cockpit
sudo tee /etc/cockpit/cockpit.conf <<'EOF'
[WebService]
MaxStartups = 5
IdleTimeout = 15
AllowUnencrypted = false
[Session]
Banner = /etc/issue.net
EOF
ソケットを再起動して更新した設定を適用します。
sudo systemctl restart cockpit.socket
動作確認と監視
ブラウザを開き、https://<サーバーのIPアドレス>:9090にアクセスします。Cockpitは初回起動時に/etc/cockpit/ws-certs.d/配下に自己署名TLS証明書を自動生成するため、ブラウザに信頼されていないHTTPSの警告が表示されます。内部ネットワークでのテスト環境であればこの警告をバイパスして構いませんが、パブリックに公開する環境では、有効なLet’s Encryptの証明書ペアを同ディレクトリに配置してください。
1. 認証と権限昇格
標準のシステムアカウントでログインします。CockpitはPAMを介して認証を行います。一般ユーザーは権限のない読み取り専用セッションで開始されます。サービスの停止やディスクのマウントなどの操作を実行するには、上部ヘッダーにある管理者アクセスをオンにする(Turn on administrative access)をクリックし、sudoパスワードで認証します。
2. システムリソースの概要
概要(Overview)画面では、ページの再読み込みなしで1秒間隔でスムーズに更新されるグラフを確認できます。
- CPU使用率:コアごとのスパイクを可視化し、問題の原因がシステム待機によるものか、ユーザースペースでの高負荷計算によるものかを識別します。
- メモリ使用状況:アクティブなRAM使用量、OSのバッファ/キャッシュ予約、スワップ使用量を色分けされたバーで明確に分類・表示します。
- ディスクスループット:同時読み取り/書き込みのIOPSおよびMB/sを、システムロードアベレージと並べてグラフ化します。
- ネットワークトラフィック:各物理インターフェースの送受信トラフィックをリアルタイムで追跡します。
3. ストレージサブシステムの管理
ストレージ(Storage)タブに切り替えれば、lsblkやfdisk -lコマンドを繰り返し実行する手間を省けます。NVMe、SATA、およびブロックストレージデバイスを一目で確認できます。
- LVMボリュームグループの作成、シンプールの割り当て、論理ボリュームの拡張がわずか数クリックで完了します。
- パーティションをEXT4またはXFSでフォーマットし、恒久的なマウントパスを
/etc/fstabへ直接設定できます。 - 代替処理保留中セクタ数やドライブ動作温度を含むディスクのS.M.A.R.T.健全性属性を読み取り、ハードウェアの劣化を早期に検知します。
- ソフトウェアRAIDアレイを監視し、リアルタイムでリビルドの同期進捗をトラッキングできます。
4. ネットワークとユーザー管理
ネットワーク(Networking)画面では、IPアドレス、サブネットマスク、DNSネームサーバー、ゲートウェイルートを確認できます。NetworkManagerの設定スクリプトを直接編集することなく、インターフェースをLACPボンドに束ねたり、802.1Q VLANを設定したり、ポートごとのドロップパケットカウンタを確認したりできます。
アカウント(Accounts)では、新規ユーザーの作成、不正アクセスの疑いがあるアカウントのロック、wheel/sudoグループへの割り当て、公開SSHキーの登録を、~/.ssh/authorized_keysファイルを手作業で編集することなくプロファイルへ直接貼り付けて設定できます。
5. サービス、ログ、フォールバックターミナル
サービス(Services)パネルでは、systemdターゲット、タイマー、サービスが分類されており、ワンクリックでのサービス再起動や、failed状態のユニットのインラインログ表示が可能です。GUIの操作だけでは対応しきれない場合は、ターミナル(Terminal)タブをクリックしてください。Cockpitはブラウザ内でroot権限操作が可能なインタラクティブターミナルを提供し、tmux、htop、256色表示にも完全対応しています。GUIの手軽さを享受しながら、コマンドラインの強力な柔軟性を損なうことがありません。

