CockpitでFedora Serverをリモート管理:6ヶ月間の実運用レビュー

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

Cockpitを使い始めたきっかけは、深夜2時にサービスを再起動するためSSHでサーバーに接続し、眠い目をこすりながらターミナルで作業していたとき——もっと楽な方法があるはずだと思ったからだ。Fedora Serverの本番環境で6ヶ月間運用した結果、本当に共有する価値があると感じたことをまとめる。

試した3つの方法——最初の2つを却下した理由

Cockpitに決める前に、3つの主な方向性を試したが、それぞれに却下する理由があった:

1. 純粋なSSH + CLIツール

これは説明不要だろう。追加インストール不要、セキュリティが高く、アタックサーフェスが小さい。しかし小規模チームや新メンバーのオンボーディング時には、これが本当に障壁になる。最初の週にsystemctl、journalctl、df、netstat、lsblkのコマンド構文を覚えさせるのは現実的ではない。会社のPC、クライアントのマシン、タブレットを使っているときにSSHクライアントがなければ、完全に手詰まりだ。

2. Webmin

Webminは2010年代に人気の選択肢だった。機能豊富なUIを持つが、しばらく使えばすぐわかる——UIが時代遅れで、更新が遅く、Fedora/RHELエコシステムとまったく「ネイティブ」ではない。インストールすると外部リポジトリから大量のパッケージを引き込む——本番環境では望ましくない。何が動いているかを正確に把握する必要があるからだ。

3. Cockpit — 組み込みWebコンソール

Cockpitが前の2つと異なる核心的な点がある——サーバー上で動く独立したレイヤーではなく、すでに存在するシステムツール自体のWebインターフェースだということだ。Cockpitでログをみればjournaldをみている。サービスを管理すれば本物のsystemdを使っている。独自データベースなし、重いデーモンなし、隠れた魔法もない。

Cockpitができること——できないこと

本当の強み

  • リアルタイムシステム監視:CPU、RAM、ディスクI/O、ネットワークが即座に表示——htopやiotop不要
  • journald統合ログビューワー:サービス、重大度、時間範囲でのフィルタリングがjournalctlよりはるかに簡単
  • systemdサービス管理:ワンクリックでstart/stop/restart/enable、ステータスとログを同時表示
  • 統合Webターミナル:専用クライアント不要でSSH接続
  • Fedora/RHELとの優れた統合:Red HatがCockpitを開発、エコシステムが完全に一致

インストール前に知っておくべきこと

  • ホスティングコントロールパネルではない:CockpitはcPanel形式でApache/Nginxバーチャルホストを管理しない——役割を混同しないこと
  • 高度な機能にはプラグインが必要:Podmanコンテナ、KVM、高度なストレージ管理には別途モジュールのインストールが必要
  • ポート9090の保護が必要:CockpitはデフォルトでTLSを使用しているが、アタックサーフェスが増加する

なぜCockpitはFedora Serverに向いているのか

2年間、Fedoraをメインの開発マシンとして使っており、パッケージの更新速度にかなり満足している——Fedoraは常に他のディストリビューションより先に新しいカーネル、新しいsystemdを提供する。Cockpitもそのペースについていく。Red HatがFedoraとCockpitの両方を支援しているため、統合は自然で、バージョンごとのつぎはぎではない。

Fedora 36以降、CockpitはMinimalイメージに収録されている(デフォルトでは無効)。つまり外部リポジトリ不要、互換性の心配もない——他のパッケージと同様に公式リポジトリからインストールできる。本番環境では、これが多くの人が思う以上に重要だ。

Fedora ServerへのCockpitインストール手順

ステップ1:Cockpitと必要なモジュールのインストール

Fedora Serverでは、Cockpitは通常すでに利用可能だ。確認して、なければインストールする:

sudo dnf install cockpit -y

よく使うモジュールを追加インストールする:

# Podmanコンテナ管理
sudo dnf install cockpit-podman -y

# ディスク、LVM、RAID管理
sudo dnf install cockpit-storaged -y

# KVM/libvirt VM管理(必要な場合)
sudo dnf install cockpit-machines -y

ステップ2:サービスの有効化

sudo systemctl enable --now cockpit.socket

Cockpitはソケットアクティベーションを使用している——ポート9090へのリクエストがあったときだけサービスが実際に起動する。アイドル時はRAMをほとんど消費しない。ステータスを確認する:

sudo systemctl status cockpit.socket

ステップ3:ファイアウォールの開放

Fedora Serverはデフォルトでfirewalldを使用している:

sudo firewall-cmd --add-service=cockpit --permanent
sudo firewall-cmd --reload

# 追加されたか確認
sudo firewall-cmd --list-services

ステップ4:アクセスとログイン

ブラウザを開き、以下のアドレスにアクセスする:

https://[IP-server]:9090

初回は自己署名証明書によるSSL警告が表示される——無視するか例外を追加する。sudo権限を持つシステムユーザーでログインする。ログイン後、管理者操作のたびにパスワードを再入力しなくて済むよう、「Reuse my password for privileged tasks」にチェックを入れることを忘れずに。

ステップ5(任意):SSL証明書をLet’s Encryptに置き換える

サーバーにパブリックドメインがある場合、自己署名証明書を置き換えてすっきりさせる:

sudo dnf install certbot -y
sudo certbot certonly --standalone -d your-domain.com

# CockpitのディレクトリへCertificateをコピー
sudo cp /etc/letsencrypt/live/your-domain.com/fullchain.pem \
    /etc/cockpit/ws-certs.d/1-custom.cert
sudo cp /etc/letsencrypt/live/your-domain.com/privkey.pem \
    /etc/cockpit/ws-certs.d/1-custom.key

sudo systemctl restart cockpit.socket

Cockpitのセキュリティ強化

アクセス許可IPの制限

Cockpitを完全に公開する代わりに、firewalldのリッチルールを使って特定のIPのみ許可する:

# まずパブリックルールを削除
sudo firewall-cmd --remove-service=cockpit --permanent

# 自分のIPのみ許可(実際のIPに置き換える)
sudo firewall-cmd --add-rich-rule=\
'rule family="ipv4" source address="203.0.113.10/32" service name="cockpit" accept' \
--permanent

sudo firewall-cmd --reload

SSHトンネル——ポートを開放したくない場合の最も安全な方法

ポート9090をインターネットに公開したくない?SSHトンネルを使う——ローカルマシンでこのコマンドを実行する:

ssh -L 9090:localhost:9090 [email protected] -N

その後、ローカルマシンでhttps://localhost:9090にアクセスする。CockpitはSSHトンネル経由で動作し、追加のファイアウォールルールは不要だ。SSL設定の手間が省けて完全に安全なため、これが最もよく使う方法だ。

6ヶ月後の実際のワークフロー

CockpitでSSHを完全に置き換えているわけではない。実際には状況に応じて両方を組み合わせている:

  • 日常の監視:Cockpitを開いてダッシュボードを確認——CPU/RAM/ディスクが安定しているか、アラートがないか。SSHして複数のコマンドを実行するよりも30秒で済む
  • サービスのデバッグ:Servicesを開いてサービスをクリックすると、ログがすぐ下に表示される——journalctl -u service-name -n 100よりはるかに速い
  • ストレージ管理:各パーティションの使用状況を視覚的に確認——lsblkやdf -hコマンドを覚える必要なし
  • 複雑な操作が必要なとき:Cockpit内でターミナルを直接起動——アプリを切り替えたりSSHタブを追加したりする必要なし

最も時間を節約できるのは?ログビューワーだ。様々なフラグを付けてjournalctlを入力する代わりに、UIで直接フィルタリングできる:サービスを選択し、「Error and above」レベルを選び、時間範囲を指定——10秒で完了。深夜にインシデントを調査するとき、構文を思い出せなくなっているときに最も役立つ。

Cockpitが良い選択でない場合

複数のバーチャルホストを持つホスティングの課題?cPanelやDirectAdminの方が適している。数十台のサーバーを同時にオーケストレーション?AnsibleやAWXが正しい方向だ。Cockpitが最も輝くのは正確に一つの場面:単一サーバーで、便利なWebコンソールが必要で、重いものをインストールしたくない場合だ。

本番環境で信頼して使える理由は3つの要素が揃っているからだ:Fedoraに標準搭載、Red Hatがメンテナンス、外部リポジトリへの依存なし。依存関係のスタックがシンプルで完全に監査可能——長期的に安心して運用できる十分な理由だ。

Share: