Webベースのサーバ管理ツール Cockpit を CentOS 7 にインストールしてみました

ブラウザベースでサーバ管理できるツールを試してみたい

現在管理している Linux サーバ群をほぼターミナル経由でいじっているのですが、Webブラウザから管理するツールも試してみようかと思い、比較的軽そうな Cockpit をインストールしてみました。

大昔、Webmin とか使ったことがあるけれど知識がなくて全然活用できなかった記憶が……。

パッケージのインストール

公式サイトで対応 OS として CentOS も挙げられているのでドキュメント通りに実施すればハマらないですね。

# yum install cockpit
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                                                          | 5.8 kB  00:00:00     
 * base: ftp.riken.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.riken.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.riken.jp
base                                                                                                          | 3.6 kB  00:00:00     
epel                                                                                                          | 4.7 kB  00:00:00     
extras                                                                                                        | 2.9 kB  00:00:00     
mariadb-main                                                                                                  | 3.4 kB  00:00:00     
mariadb-maxscale                                                                                              | 2.4 kB  00:00:00     
mariadb-tools                                                                                                 | 2.9 kB  00:00:00     
remi-safe                                                                                                     | 3.0 kB  00:00:00     
updates                                                                                                       | 2.9 kB  00:00:00     
(1/2): epel/x86_64/updateinfo                                                                                 | 1.0 MB  00:00:00     
(2/2): epel/x86_64/primary_db                                                                                 | 6.9 MB  00:00:00     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ cockpit.x86_64 0:195.12-1.el7.centos を インストール
--> 依存性の処理をしています: cockpit-ws のパッケージ: cockpit-195.12-1.el7.centos.x86_64
--> 依存性の処理をしています: cockpit-system のパッケージ: cockpit-195.12-1.el7.centos.x86_64
--> 依存性の処理をしています: cockpit-bridge のパッケージ: cockpit-195.12-1.el7.centos.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ cockpit-bridge.x86_64 0:195.12-1.el7.centos を インストール
--> 依存性の処理をしています: glib-networking のパッケージ: cockpit-bridge-195.12-1.el7.centos.x86_64
--> 依存性の処理をしています: libjson-glib-1.0.so.0()(64bit) のパッケージ: cockpit-bridge-195.12-1.el7.centos.x86_64
---> パッケージ cockpit-system.noarch 0:195.12-1.el7.centos を インストール
---> パッケージ cockpit-ws.x86_64 0:195.12-1.el7.centos を インストール
--> トランザクションの確認を実行しています。
---> パッケージ glib-networking.x86_64 0:2.56.1-1.el7 を インストール
--> 依存性の処理をしています: gsettings-desktop-schemas のパッケージ: glib-networking-2.56.1-1.el7.x86_64
--> 依存性の処理をしています: libproxy.so.1()(64bit) のパッケージ: glib-networking-2.56.1-1.el7.x86_64
---> パッケージ json-glib.x86_64 0:1.4.2-2.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ gsettings-desktop-schemas.x86_64 0:3.28.0-3.el7 を インストール
---> パッケージ libproxy.x86_64 0:0.4.11-11.el7 を インストール
--> 依存性の処理をしています: libmodman.so.1()(64bit) のパッケージ: libproxy-0.4.11-11.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ libmodman.x86_64 0:2.0.1-8.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=====================================================================================================================================
 Package                                   アーキテクチャー       バージョン                            リポジトリー            容量
=====================================================================================================================================
インストール中:
 cockpit                                   x86_64                 195.12-1.el7.centos                   extras                  51 k
依存性関連でのインストールをします:
 cockpit-bridge                            x86_64                 195.12-1.el7.centos                   extras                 555 k
 cockpit-system                            noarch                 195.12-1.el7.centos                   extras                 1.7 M
 cockpit-ws                                x86_64                 195.12-1.el7.centos                   extras                 808 k
 glib-networking                           x86_64                 2.56.1-1.el7                          base                   145 k
 gsettings-desktop-schemas                 x86_64                 3.28.0-3.el7                          base                   606 k
 json-glib                                 x86_64                 1.4.2-2.el7                           base                   134 k
 libmodman                                 x86_64                 2.0.1-8.el7                           base                    28 k
 libproxy                                  x86_64                 0.4.11-11.el7                         base                    64 k

トランザクションの要約
=====================================================================================================================================
インストール  1 パッケージ (+8 個の依存関係のパッケージ)

総ダウンロード容量: 4.0 M
インストール容量: 9.3 M
Is this ok [y/d/N]: y
Downloading packages:
(1/9): cockpit-195.12-1.el7.centos.x86_64.rpm                                                                 |  51 kB  00:00:00     
(2/9): cockpit-bridge-195.12-1.el7.centos.x86_64.rpm                                                          | 555 kB  00:00:00     
(3/9): json-glib-1.4.2-2.el7.x86_64.rpm                                                                       | 134 kB  00:00:00     
(4/9): cockpit-system-195.12-1.el7.centos.noarch.rpm                                                          | 1.7 MB  00:00:00     
(5/9): glib-networking-2.56.1-1.el7.x86_64.rpm                                                                | 145 kB  00:00:00     
(6/9): libmodman-2.0.1-8.el7.x86_64.rpm                                                                       |  28 kB  00:00:00     
(7/9): cockpit-ws-195.12-1.el7.centos.x86_64.rpm                                                              | 808 kB  00:00:00     
(8/9): libproxy-0.4.11-11.el7.x86_64.rpm                                                                      |  64 kB  00:00:00     
(9/9): gsettings-desktop-schemas-3.28.0-3.el7.x86_64.rpm                                                      | 606 kB  00:00:00     
-------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                 6.4 MB/s | 4.0 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : json-glib-1.4.2-2.el7.x86_64                                                                         1/9 
  インストール中          : gsettings-desktop-schemas-3.28.0-3.el7.x86_64                                                        2/9 
  インストール中          : libmodman-2.0.1-8.el7.x86_64                                                                         3/9 
  インストール中          : libproxy-0.4.11-11.el7.x86_64                                                                        4/9 
  インストール中          : glib-networking-2.56.1-1.el7.x86_64                                                                  5/9 
  インストール中          : cockpit-bridge-195.12-1.el7.centos.x86_64                                                            6/9 
  インストール中          : cockpit-system-195.12-1.el7.centos.noarch                                                            7/9 
  インストール中          : cockpit-ws-195.12-1.el7.centos.x86_64                                                                8/9 
  インストール中          : cockpit-195.12-1.el7.centos.x86_64                                                                   9/9 
  検証中                  : libmodman-2.0.1-8.el7.x86_64                                                                         1/9 
  検証中                  : gsettings-desktop-schemas-3.28.0-3.el7.x86_64                                                        2/9 
  検証中                  : cockpit-ws-195.12-1.el7.centos.x86_64                                                                3/9 
  検証中                  : cockpit-system-195.12-1.el7.centos.noarch                                                            4/9 
  検証中                  : cockpit-bridge-195.12-1.el7.centos.x86_64                                                            5/9 
  検証中                  : cockpit-195.12-1.el7.centos.x86_64                                                                   6/9 
  検証中                  : json-glib-1.4.2-2.el7.x86_64                                                                         7/9 
  検証中                  : glib-networking-2.56.1-1.el7.x86_64                                                                  8/9 
  検証中                  : libproxy-0.4.11-11.el7.x86_64                                                                        9/9 

インストール:
  cockpit.x86_64 0:195.12-1.el7.centos                                                                                               

依存性関連をインストールしました:
  cockpit-bridge.x86_64 0:195.12-1.el7.centos                         cockpit-system.noarch 0:195.12-1.el7.centos                    
  cockpit-ws.x86_64 0:195.12-1.el7.centos                             glib-networking.x86_64 0:2.56.1-1.el7                          
  gsettings-desktop-schemas.x86_64 0:3.28.0-3.el7                     json-glib.x86_64 0:1.4.2-2.el7                                 
  libmodman.x86_64 0:2.0.1-8.el7                                      libproxy.x86_64 0:0.4.11-11.el7                                

完了しました!

サービス有効化とファイアウォールの設定

# systemctl enable --now cockpit.socket
Created symlink from /etc/systemd/system/sockets.target.wants/cockpit.socket to /usr/lib/systemd/system/cockpit.socket.
# firewall-cmd --add-service=cockpit --permanent
success
# firewall-cmd --reload

サービスを有効にして、ファイアウォールに通信許可の設定を行えば準備完了。

標準だと 9090 番ポートに接続することで管理画面が表示され……のですが今どきのブラウザだと自己署名の証明書は表示してくれない場合もあるようで。

Let’s Encrypt で作成してある証明書を導入する

公式サイトのドキュメント SSL/TLS Usage のページに解説がありますが、使用している証明書と鍵ファイルを結合して/etc/cockpit/ws-certs.d に保存してやればOKとのこと。拡張子が .cert または .crt のものでアルファベット順で最後のファイルが使われます。通常は1個しか置かないから使われる順番はあまり気にしなくても良さそうですが複数保存する場合は注意。

証明書の結合をしてサービスの再起動をします。

# cat /etc/letsencrypt/live/www.u-1.net/fullchain.pem  /etc/letsencrypt/live/www.u-1.net/privkey.pem > /etc/cockpit/ws-certs.d/ssl.cert
# systemctl restart cockpit.service 
# systemctl status cockpit
● cockpit.service - Cockpit Web Service
   Loaded: loaded (/usr/lib/systemd/system/cockpit.service; static; vendor preset: disabled)
   Active: active (running) since 木 2021-05-20 16:03:22 JST; 10s ago
     Docs: man:cockpit-ws(8)
  Process: 86356 ExecStartPre=/usr/sbin/remotectl certificate --ensure --user=root --group=cockpit-ws --selinux-type=etc_t (code=exited, status=0/SUCCESS)
 Main PID: 86359 (cockpit-ws)
   CGroup: /system.slice/cockpit.service
           └─86359 /usr/libexec/cockpit-ws

以上で導入完了。ブラウザでアクセスしてみると Cent OS のロゴも表示されて良い感じです。

Cockpit ログイン画面

導入のハードルも非常に低いのでお手軽に試せるのが良いですね。