Cockpit は Linux サーバーの状態確認や一部の管理操作をブラウザから行える WebUI です。Ubuntu 22.04 サーバーでは、CLI 運用を置き換えるものではなく、状態確認や補助的な操作に使う位置づけが扱いやすいです。
この記事では、Ubuntu 22.04 に Cockpit を導入し、9090 番ポート、firewall、ログイン、TLS、証明書、運用時の注意点を確認します。
- Cockpit を補助的な管理 WebUI として使う位置づけ
cockpitパッケージの導入- 9090 番ポートと firewall の確認
- ログイン、TLS、証明書の考え方
- CLI 運用と併用するときの注意点
書籍
ストーリーで覚える Linux CLI 入門
Linux のコマンドライン操作を基礎から確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
Cockpit を使う位置づけ
Cockpit はサーバー管理を見える化する WebUI です。便利ですが、すべての設定を Cockpit だけで完結させるより、CLI と設定ファイルを主にして、Cockpit は確認用として使う方が変更履歴を追いやすくなります。
| 用途 | Cockpit が向くこと | CLI で確認したいこと |
| 状態確認 | CPU、メモリ、ディスク、ログを見る | systemctl / journalctl |
| サービス管理 | 起動、停止、状態確認 | unit ファイルと依存関係 |
| ネットワーク | 現在の接続状態を見る | Netplan 設定ファイル |
| 更新 | 更新候補の確認 | APT の実行ログと方針 |
パッケージをインストールする
Ubuntu 22.04 の標準リポジトリから cockpit を導入します。
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y cockpit
cockpit-bridge --versionサービス状態を確認する
Cockpit は socket activation で起動します。cockpit.socket が有効になっているか確認します。
systemctl status cockpit.socket --no-pager
systemctl is-enabled cockpit.socket
systemctl status cockpit.service --no-pager || trueCockpit を有効化する
必要に応じて cockpit.socket を有効化します。常時 Web サービスとして公開する意図がない場合は、公開範囲を先に決めます。
sudo systemctl enable --now cockpit.socket
systemctl status cockpit.socket --no-pager
ss -lntp | grep 9090 || trueアクセス URL を確認する
Cockpit は通常 9090 番ポートで待ち受けます。まずサーバー自身から応答を確認し、外部端末からの接続は firewall と公開範囲を確認してから行います。
curl -kI https://127.0.0.1:9090/
hostname -I
ip -br addrfirewall を確認する
外部端末から Cockpit に接続する場合は、9090 番ポートの許可が必要です。管理 WebUI なので、許可する送信元を限定します。
sudo ufw status verbose
sudo nft list ruleset | grep 9090 || true
sudo iptables -S | grep 9090 || trueログイン権限を確認する
Cockpit は Linux のユーザー認証を使います。管理操作を行う場合は、そのユーザーの sudo 権限も関係します。
id "$USER"
groups "$USER"
sudo -lTLS と証明書を確認する
Cockpit は HTTPS でアクセスします。検証では自己署名証明書のままでも確認できますが、継続利用する場合は内部 CA や運用方針に合わせます。
sudo ls -l /etc/cockpit/ws-certs.d 2>/dev/null || true
openssl s_client -connect 127.0.0.1:9090 -servername localhost </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -datesログを確認する
接続できない場合は、socket、service、journal を分けて確認します。
journalctl -u cockpit.socket -n 50 --no-pager
journalctl -u cockpit.service -n 50 --no-pager
journalctl -t cockpit-ws -n 50 --no-pager || true使わない場合は停止する
Cockpit を常時使わない場合は、socket を止めて無効化します。管理 WebUI は便利ですが、不要な待ち受けを増やさないことも重要です。
sudo systemctl disable --now cockpit.socket
systemctl status cockpit.socket --no-pager
ss -lntp | grep 9090 || true運用時に見るポイント
Cockpit は便利な補助画面ですが、設定変更の根拠や手順は CLI と設定ファイルで追えるようにしておきます。
- 9090 番ポートの公開範囲を限定する
- 管理ユーザーと sudo 権限を確認する
- TLS 証明書の扱いを決める
- Cockpit で変更した内容も CLI で確認する
- 不要な場合は
cockpit.socketを止める
まとめ
Ubuntu 22.04 の Cockpit は、サーバー状態の確認や一部の管理操作をブラウザから行える補助的な WebUI です。CLI 運用を置き換えるものとしてではなく、状態確認と補助操作に使うと扱いやすくなります。
導入後は、cockpit.socket、9090 番ポート、firewall、ログイン権限、TLS 証明書、ログを確認します。不要な場合は socket を停止し、管理 WebUI の公開範囲を広げすぎないようにします。


NetworkManager がインストールされてしまいます。
私は、 cockpit-networking (ネットワーク管理機能) と cockpit-machines (仮想マシン管理機能) を除いたインストールを実行しています。
sudo apt install -y cockpit-ws cockpit-system cockpit-packagekit cockpit-storaged cockpit-pcp
ご指摘の通り、apt install cockpit では依存関係として NetworkManager もインストールされますね。
ただ、Netplan をデフォルト (renderer: networkd) で使う場合は、Cockpit から管理できないだけで、特に動作に影響はないため、私はあまり問題視していませんでした。
とはいえ、使わないものをインストールしない という観点では、パッケージを絞る方法は確かに有益ですね。
記事の更新も検討してみます。コメントありがとうございました!