ホームラボをインターネットに公開する前にインストールしたい 5 つの Docker コンテナー
ホームラボを実行すると、独自のアプリケーション、Web サイト、サービスを自由にホストできるようになります。ただし、ホームラボをインターネットに公開する前に、将来のセキュリティ上の問題や不必要な頭痛の種を避けるためにいくつかの手順を実行してください。
今日、パブリック アクセス用に新しい Docker サーバーをセットアップする場合、アプリケーションをデプロイする前にインストールするコンテナーが 5 つあります。これらは、初期設定を不必要に複雑にすることなく、ホーム サーバーをインターネットに安全に公開したいと考えている人にとって、確実な出発点となります。
Caddy はリバース プロキシと HTTPS を処理します
キャディをおすすめする理由
単一サーバー上で複数のアプリケーションをホストする場合、受信トラフィックを正しいコンテナーにルーティングする方法が必要です。そこでリバース プロキシが登場します。リバース プロキシを処理し、HTTPS 証明書を自動的に取得して更新するため、Caddy をお勧めします。 Caddyfile の設定も比較的簡単です。
Docker サービスの自動検出とコンテナー ラベルによるルーティングを希望する場合は、Traefik を検討することもできます。どちらもセルフホスティングに適したオプションです。 Nginx も人気のある選択肢ですが、初めてのリバース プロキシ展開の場合は、Nginx から始めることはお勧めしません。その構成と証明書の管理は、初心者にとって不必要な複雑さをもたらす可能性があります。
Compose のデプロイと同時にリバース プロキシ構成を自動化したい場合は、サードパーティのプラグインを介して Caddy の Docker 統合を使用することもできます。これは、コンテナ構成に近いルーティングを管理できるため、アプリケーションを頻繁に追加または削除する場合に便利です。
Dockhand により Docker 管理が容易になります
コンテナーの管理とスタックの構成
コマンドラインを使用して複数のコンテナを管理するのは面倒になる場合があります。最終的には、ログを検査し、サービスを再起動し、イメージを更新し、すべてが期待どおりに実行されているかどうかを確認する必要があります。
Dockhand は、Docker 環境を管理するための Web インターフェイスを提供します。コンテナーのデプロイ、編集、開始、停止、削除、Docker Compose スタックの管理、ログの検査、リソース消費の監視を行うことができます。また、コンテナーの健全性とイメージのバージョンを可視化できるため、日常的なメンテナンスが容易になります。
Dockhand は、従来人々が Dozzle と Watchtower をインストールする目的の多くをカバーすることもできます。そのロギング インターフェイスを使用すると、コンテナの出力を検査でき、イメージ更新機能はデプロイメントを最新の状態に保つのに役立ちます。これにより、保守する必要がある個別のツールの数が減りますが、重要なサービスに更新を適用する前に更新を確認することをお勧めします。
CrowdSec は悪意のあるトラフィックからサーバーを保護します
不審なアクティビティを検出し、悪意のある IP をブロックします
ホームラボがパブリックにアクセスできるようになると、最終的には迷惑トラフィックを受信するようになります。自動ボットは定期的にパブリック IP アドレスをスキャンして、公開されたサービス、脆弱な認証、既知の脆弱性を探します。 CrowdSec はサーバー ログを分析し、悪意のある動作に関連する不審なアクティビティやパターンを特定します。シナリオと呼ばれる検出ルールのコレクションを使用して、繰り返しのログイン試行、脆弱性スキャン、その他の一般的な攻撃などのアクティビティを認識します。
CrowdSec が脅威を特定すると、互換性のあるバウンサーを通じて問題の IP アドレスをブロックする決定を下すことができます。また、Caddy などのサポートされているリバース プロキシと統合して、公開アプリケーションの保護に役立てることもできます。コミュニティ脅威インテリジェンス ネットワークにより、参加しているインストール環境が悪意のある IP アドレスに関する情報を共有することもできます。
また、CrowdSec で利用可能なメトリクスを使用してカスタム ダッシュボードを構築し、それを Grafana などのツールと統合して、セキュリティ イベント、ブロックされた IP、攻撃傾向を視覚化することもできます。
Tailscale はホームラボへのプライベート アクセスを提供します
管理ダッシュボードを非公開に保つ
おそらく、ホームラボで実行されているすべてのサービスに、インターネット上の誰でもアクセスできるようにしたくないでしょう。 Docker 管理ダッシュボードと監視インターフェイスは、理想的には非公開のままにする必要があります。
Tailscale は、WireGuard を使用してデバイス間にプライベート ネットワークを作成し、追加の管理ポートを公開せずにホーム サーバーにアクセスできるようにします。デバイス認証とネットワーク接続を処理するため、従来の VPN サーバーを手動で構成する必要はありません。
代替手段を希望する場合は、Cloudflare One がプライベート アプリケーションへのアクセスを保護する別の方法を提供します。 Cloudflare トンネルを使用すると、サーバーで受信ポートを開かずにサービスを Cloudflare に接続できます。一方、Cloudflare Access を使用すると、アイデンティティベースのアクセス ポリシーを適用できます。私なら、Dockhand と Uptime Kuma の両方を Tailscale または Cloudflare Access の後ろに置きます。これにより、ダッシュボードを公共のインターネットから遮断しながら、コンテナを管理し、自分のデバイスから監視情報を検査できるようになります。
Uptime Kuma がサービスを監視します
Docker コンテナーを実行しても、そのコンテナー内のアプリケーションが正しく動作しているとは限りません。ネットワークの問題により、サービスが 502 エラーを返したり、アプリケーションが応答を停止したり、サービスにアクセスできなくなったりすることがあります。ここで Uptime Kuma が登場します。
Uptime Kuma を使用すると、個々のアプリケーションやサービスのモニターを作成できます。 HTTP および HTTPS チェック、TCP ポート、DNS レコード、およびその他のいくつかの監視方法をサポートしています。各サービスをチェックする頻度を構成したり、再試行間隔を設定したり、何かが利用できなくなったときに Telegram や電子メールなどの統合を通じて通知を受信したりできます。
また、セルフホスト アプリケーションが動作しているかどうかを示すためにユーザーと共有できるステータス ページも提供します。これは、友人、クライアント、または小規模なコミュニティ向けに複数のサービスを実行する場合に特に便利です。各アプリケーションを手動で確認する代わりに、1 つのダッシュボードからすべてを監視できます。
アプリケーションの共有を開始する
ホームラボをインターネットに公開するために数十のコンテナをデプロイする必要はありません。アプリケーションを追加する前に、リバース プロキシ、セキュリティ、および管理ツールを適切に構成することから始めますが、Compose ファイルと永続ボリュームをメイン サーバーの外部の場所にバックアップしておくこともお勧めします。
最終的に別の VPS に移動するか、ホームラボを再構築する場合、これらのファイルとバックアップがあれば、すべてを最初から設定する必要がなくなります。最も重要なことは、重要なことをサーバーに依存する前に、バックアップをテストしてアプリケーションを復元できることを確認することです。
このテーマについてさらに詳しく知りたい方は以下をご覧ください