課題:20台のVPS管理で頭がパンクしそうになった話
半年以上、顧客向けにUbuntu Serverを20台以上運用するホームラボを構築してきましたが、IPアドレスを忘れてしまうことに何度も悩まされました。Dockerコンテナが30〜40個(Portainer、Nginx Proxy ManagerからPlex、Grafanaまで)に急増すると、メモ帳からURLを探し出すのはまさに苦行です。
Heimdall、Dashy、Organizrなども試しましたが、結果はいまいちでした。動作が重かったり(RAMを300〜500MB消費)、UIが古かったり、GUIでの設定に時間がかかったりしたからです。最終的に行き着いたのが Homepage (gethomepage.dev) です。これはモダンなダッシュボードで、設定はすべてYAMLファイルで行います。エンジニアにとっては、コピー&ペーストで素早く設定できるのが大きな魅力です。
Homepageの素晴らしい点は、APIを通じてDockerやGlancesなどの監視ツールと深く連携できることです。ターミナルを開かなくても、CPUやRAMの使用率、コンテナの稼働状況を一つの画面でリアルタイムに確認できます。
Docker Composeを使用したUbuntuへのHomepageインストール
Dockerによるインストールが最も推奨される方法です。この方法なら、設定ディレクトリをコピーするだけで、わずか2分でバックアップや新しいサーバーへの移行が完了します。
ステップ1:保存ディレクトリの作成
まず、ダッシュボードの設定ファイルを保存するディレクトリを作成します。管理しやすいようにホームディレクトリ直下に作成するのが一般的です:
mkdir -p ~/homepage/config
cd ~/homepage
ステップ2:Docker Composeファイルの作成
nano を使用してサービス実行ファイルを作成します:
nano docker-compose.yml
ファイルの内容は以下の通りです:
version: "3.3"
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
ports:
- 3000:3000
volumes:
- ./config:/app/config
- /var/run/docker.sock:/var/run/docker.sock # HomepageがDockerデータを読み取れるようにする
restart: unless-stopped
注意点: /var/run/docker.sock をマウントすることで、ダッシュボードが同じサーバー上の他のコンテナの状態を自動的に認識できるようになります。リアルタイムでステータスを表示したい場合は、この行を忘れないでください。
ステップ3:ダッシュボードの起動
以下のコマンドを入力して、イメージのダウンロードと実行を行います:
docker compose up -d
ブラウザを開き、 http://あなたのIPアドレス:3000 にアクセスしてください。データ入力待ちの空のインターフェースが表示されます。
Homepageをコントロールセンターにする
Homepageのすべての設定は .yaml ファイルにあります。ファイルが存在しない場合は、 config ディレクトリ内に新規作成してください。
1. サービスの管理 (services.yaml)
ここには実行中のアプリを記述します。例として、PortainerとPi-holeを追加してみます:
- サーバー管理:
- Portainer:
icon: portainer.png
href: http://192.168.1.10:9000/
description: Docker管理
container: homepage
- ネットワーク:
- Pi-hole:
icon: pi-hole.png
href: http://192.168.1.10/admin
widget:
type: pihole
url: http://192.168.1.10
key: YOUR_API_KEY_HERE
widget セクションは非常に便利です。Pi-holeからデータを取得し、アプリにログインすることなくブロックされた広告の数を直接表示できます。
2. よく使うサイトのブックマーク (bookmarks.yaml)
GitHubやGoogle Cloudなどの外部リンク用です。設定は非常にシンプルです:
- ツール:
- Github:
- abbr: GH
href: https://github.com/
- ChatGPT:
- abbr: AI
href: https://chat.openai.com/
3. システム状態の監視 (widgets.yaml)
ダッシュボードにCPU、RAM、ディスク容量などの情報を表示するには、このファイルを使用します:
- resources:
cpu: true
memory: true
disk: /
- datetime:
text_size: xl
format: { "timeStyle": "short", "dateStyle": "long" }
実践的なアドバイスとセキュリティ
YAMLファイルを保存すると、Homepageは即座に変更を認識します。コンテナを再起動する必要はありません。表示されない場合は、 docker logs -f homepage コマンドで構文エラー(主にYAMLのインデントミス)を確認してください。
セキュリティに関しては、Homepageにはデフォルトでパスワード設定がありません。Nginx Proxy Manager経由でインターネットに公開する場合は、以下の2つのステップを推奨します:
- Nginxで Basic Auth(基本認証)を有効にして、第三者のアクセスを制限する。
settings.yamlを使用してタイトルを変更し、使いやすいように言語設定を調整する。
実際に使用してみると、HomepageのRAM消費量はわずか50〜80MB程度です。IPアドレスを探して入力する手間が省け、毎日少なくとも15分は時間を節約できています。UbuntuやDockerをプロフェッショナルに管理している人にとって、まさに完璧な「ランディングページ」と言えるでしょう。

