Debian10にコックピットをインストールする方法
著者は、 Write for DOnations プログラムの一環として、 Free and Open SourceFundを選択して寄付を受け取りました。
序章
Cockpit は、サーバーのステータスをリアルタイムで表示できるサーバー管理ダッシュボードです。 CPU負荷、ファイルシステム統計、プロセス、および詳細情報に関する情報を提供します。 コックピットの利点の1つは、コントロールパネルにログインしていないときにサーバーリソースを消費しないことです。サービスは、コントロールパネルを参照したときにのみ開始されます。
ユーザーの管理やネットワークの問題のトラブルシューティングなど、Cockpitを使用してサーバー管理タスクを実行できます。 コンピュータまたは電話のブラウザから端末にアクセスすることもできます。 コックピットは、システムのユーザーをログインに使用し、システム管理にsudo
を使用して特権を昇格させます。 このように、コックピットは、コックピットのみのユーザーの2番目のセットを作成することによって、サーバーにセキュリティ上の考慮事項の追加レイヤーを導入しません。
このチュートリアルでは、安全なコックピットサーバー管理ダッシュボードをDebian10サーバーにデプロイします。
前提条件
このガイドを開始する前に、次のものが必要です。
- Debian10による初期サーバーセットアップガイドを使用して構成された1台のDebian10サーバー。 ガイドの説明に従って、UFWファイアウォールを設定して有効にする必要があります。
- コックピットへのアクセスに使用するサーバーを指すドメイン名。 ドメイン名のポインティングに関する情報が必要な場合は、ドメインとDNSガイドを参照してください。 このチュートリアルでは、ドメイン名
cockpit.your_domain
の例を使用します。 開始する前に、ドメインがサーバーを指している必要があります。
sudo対応の非ルートサーバーとしてサーバーにログインして開始します。
ステップ1—コックピットのインストール
このステップでは、コックピットをインストールし、コックピットがファイアウォールで使用するポートを開きます。
まず、apt
を使用してシステムアップデートを実行します。 これにより、サーバーに最新のパッケージが確実に追加され、コックピットのインストール中のエラーが回避されます。
- sudo apt update
- sudo apt upgrade
次に、コックピットをインストールします。
- sudo apt install cockpit
次に、mkdirコマンドを使用してディレクトリを作成します。
- sudo mkdir -p /usr/lib/x86_64-linux-gnu/udisks2/modules
-p
オプションを使用すると、mkdir
が1回の呼び出しで複数のレベルのディレクトリを作成します。
このディレクトリは、無害でありながら気が散る警告がコックピットインスタンスに表示されないようにするために作成しました。 この警告は、udisks2
ユーティリティが/usr/lib/x86_64-linux-gnu/udisks2/modules
ディレクトリを見つけることができないために表示されます。このディレクトリは、追加のudisks2
がインストールされていない限りデフォルトでは作成されません。
最後に、次の手順でSSL証明書を取得するために使用するコックピットのアクセスポート9090
とポート80
を開きます。
- sudo ufw allow 9090
- sudo ufw allow 80
これでコックピットがインストールされ、ドメインで署名付きSSL証明書を使用できるようにポートが開かれました。 この証明書は次のステップで取得します。
ステップ2—SSL証明書を取得する
このステップでは、Certbotユーティリティを使用してLet’sEncryptによって発行されたSSL証明書を取得します。 Certbotは証明書を登録してダウンロードし、有効期限が切れると証明書を自動的に更新します。
CertbotはUbuntusnapパッケージとして配布されています。 snap
ユーティリティはデフォルトではDebian10にインストールされていないため、snapd
パッケージの一部としてインストールする必要があります。
- sudo apt install snapd
次に、次の2つのコマンドを実行して、最新バージョンのsnap
を実行していることを確認します。
- sudo snap install core
- sudo snap refresh core
次に、次のコマンドを使用してCertbotsnapをインストールします。
- sudo snap install --classic certbot
ここでの--classic
オプションは、Certbotスナップをクラシックモードでインストールします。これにより、制限が軽減され、Certbotが正しく機能するために必要なシステムのリソースへのアクセスが可能になります。
次に、/usr/bin/certbot
からln ユーティリティを使用して、/snap/bin/certbot
にスナップインストールされたCertbotバイナリを指すシンボリックリンクを作成します。
- sudo ln -s /snap/bin/certbot /usr/bin/certbot
Linux上のすべてのユーティリティが/snap/bin/
でプログラムファイルを探す必要があることを認識しているわけではないため、このシンボリックリンクを作成する必要があります。 一方、/usr/bin/
は、ユーザーがインストールしたプログラムの標準的な場所です。
注:シンボリックリンクは、ショートカットがWindowsで機能するのと同じように、Linuxで機能します。つまり、場所からファイルへのポインターです。
Certbotユーティリティをインストールしたので、それを使用して、次のコマンドでSSL証明書を登録およびダウンロードします。
- sudo certbot certonly --standalone --agree-tos --email your_email -d cockpit.your_domain
次のオプションを使用しました。
certonly
:システムに他の変更を加えることなく、SSL証明書を登録およびダウンロードします。--standalone
:Certbotの組み込みWebサーバーを使用して証明書を登録します。--agree-tos
:利用規約(ToS)に自動的に同意します。--email your_email
:あなたのメールアドレスを取得して証明書を登録します。 (これは、有効期限の通知とセキュリティ情報にのみ使用されます。)-d cockpit.your_domain
:コックピットインスタンスに使用するドメイン名を指定します。
このコマンドを実行すると、Certbotは、重要でない電子メールについて Electronic Frontier Foundation (Certbotユーティリティの開発者)と電子メールアドレスを共有するかどうかを尋ねてきます。 SSL証明書を登録するためにこれに同意する必要はないので、「はい」の場合はY
と入力し、続行して証明書を登録するにはN
「いいえ」と入力します。
Certbotユーティリティが登録を完了すると、証明書ファイルが/etc/letsencrypt/live/cockpit.your_domain
に保存されます。
コックピットには、SSL証明書を使用するためのいくつかの要件があります。
- 証明書ファイルには、同じファイルに証明書と秘密鍵が含まれている必要があります。
- この証明書とキーファイルは、
/etc/cockpit/ws-certs.d
ディレクトリにあり、.cert
で終わる必要があります。
そのため、コックピットで使用できるように、登録したSSL証明書を使用して証明書とキーファイルを作成する必要があります。 また、証明書が更新されたときにこのファイルを再作成するようにCertbotを構成する必要があります。
まず、次のコマンドを使用して、証明書とキーファイルを組み合わせて作成します。
- sudo bash -c "cat /etc/letsencrypt/live/cockpit.your_domain/fullchain.pem /etc/letsencrypt/live/cockpit.your_domain/privkey.pem >/etc/cockpit/ws-certs.d/cockpit.your_domain.cert"
ここではsudo bash -c
を使用します。これがないと、コマンドが失敗するためです。 これは、リダイレクト>
が、sudo
権限を持つシェルとは異なるシェルで行われるためです。
cat
コマンドは、証明書とキーファイルの内容を標準出力に出力するため、この内容は>
を使用して新しいファイルにリダイレクトされます。
次に、Certbotが実行する更新後のスクリプトを作成します。 このスクリプトは、更新された証明書を使用して証明書とキーファイルを再作成し、コックピットサービスを再起動して使用を開始します。
/etc/cockpit/certificate-renewal.sh
でテキストエディタを使用してスクリプトを開きます。
- sudo nano /etc/cockpit/certificate-renewal.sh
このファイルに次のコードを追加します。
#!/usr/bin/env bash
echo "Recreating Cockpit SSL Certificate"
cat /etc/letsencrypt/live/cockpit.your_domain/fullchain.pem /etc/letsencrypt/live/cockpit.your_domain/privkey.pem > /etc/cockpit/ws-certs.d/cockpit.your_domain.cert
echo "Restarting Cockpit"
systemctl restart cockpit.socket
次のように指定しました。
#!/usr/bin/env bash
:これは shebang であり、スクリプトの実行に使用するプログラムをLinuxに指示します。 この場合、 GNUBashシェルを規定します。echo
:このコマンドは、次のメッセージを出力します。 証明書の更新をテストするときにこれを受け取ります。cat
:これは、チュートリアルの前半で認定済みのキーファイルを作成するために実行したコマンドと同じです。systemctl restart cockpit.socket
:これにより、コックピットが再起動され、新しい証明書が使用されます。
chmod でアクセス許可を変更して、この証明書を実行可能にします。
- sudo chmod 755 /etc/cockpit/certificate-renewal.sh
Linuxファイルのパーミッションについて不明な点がある場合は、Linuxパーミッションの概要で詳細を参照してください。
次に、/etc/letsencrypt/renewal/cockpit.your_domain.conf
に行を追加して、SSL証明書を更新するときにこのスクリプトを実行するようにCertbotを構成します。
このファイルをテキストエディタで開きます。
- sudo nano /etc/letsencrypt/renewal/cockpit.your_domain.conf
[renewalparams]
セクションの最後に次の行を追加します。
post_hook = /etc/cockpit/certificate-renewal.sh
次に、次のコマンドを使用して、新しい構成が機能していることをテストします。
- sudo certbot renew --dry-run
--dry-run
オプションは、証明書を変更せずに、証明書の更新を実行するようにCertbotに指示します。 出力の下部に次の行が表示されます。
OutputRunning post-hook command: /etc/cockpit/certificate-renewal.sh
Output from post-hook command certificate-renewal.sh:
Recreating Cockpit SSL Certificate
Restarting Cockpit
これは、SSL証明書の更新が発生したときに、更新スクリプトプロセスが正しく機能していることを示しています。
最後に、コックピットを再起動してSSL証明書をロードします。
- sudo systemctl restart cockpit.socket
これでコックピットインスタンスが完全に構成され、ログインする準備が整いました。
ステップ3—コックピットへのアクセス
ポート9090
でリッスンするようにコックピットインターフェイスを構成したので、ブラウザに入力するURLの最後にこのポートを指定する必要があります。 コックピットインスタンスのURLは次のとおりです。
Cockpit Login URLhttps://cockpit.your_domain:9090
コックピットはユーザーの個別のリストを保持しませんが、代わりにシステムのユーザーを使用します。 これらは、adduser
コマンドで作成するユーザーです。
初期設定ガイドで作成したユーザーでログインするか、同じ手順で新しいユーザーを作成することができます。
ログインフォームには、特権タスクにパスワードを再利用するというラベルの付いたチェックボックスがあります。
このオプションをチェックすると、ユーザーがsudo
アクセス権を持っている限り、コックピット内でsudo
を必要とするコマンドを実行できます。
コックピットのインターフェースには、3つの主要な領域があります。 1つ目はリアルタイムシステム情報ページです。 左側のナビゲーションパネルを見つけてメーターアイコンをクリックして、このページを参照します。
これをクリックすると、サーバーのCPU、メモリ、ネットワーク、およびディスクI/Oを示すリアルタイムのグラフが表示されます。
次のセクションは、詳細情報と管理セクションです。 左側のナビゲーションパネルのサーバーアイコンをクリックして、このセクションに移動します。
コックピットのこのセクションでは、ログやシステムファイルなど、システムのさまざまな側面に関する詳細情報を提供します。 ユーザーの追加と削除、システムのストレージの管理など、サーバーの一部を管理することもできます。 このセクションには、ブラウザのbashターミナルがあります。
ユーザーのコックピット設定を編集するには、インターフェースの上部にあるユーザーアイコンをクリックし、アカウント設定を選択します。 ここで、インターフェースの言語、パスワード、および電子メールアドレスを変更できます。
これで、ブラウザからコックピットインスタンスにアクセスできました。
結論
このチュートリアルでは、コックピットをインストールし、ドメインのSSL証明書を使用して接続を保護しました。 これで、ブラウザを使用して、コマンドプロンプトからリアルタイムのリソースの使用状況を表示し、管理し、サーバーにアクセスできます。
公式ドキュメントを使用して、コックピットインスタンスの拡張について詳しく読むことができます。