HomepageでHomeLabを極める:リアルタイムAPIダッシュボード構築のハンズオンガイド

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

マルチタブの混乱を超えて:HomeLab運営における日々の悩み

もしあなたが私と同じようなタイプなら、HomeLabの始まりは1台のRaspberry Piや、使わなくなったノートPCだったはずです。当時はシンプルでした。しかし半年も経てば、いつの間にかProxmoxクラスター、4台の異なるDockerホスト、Pi-hole、Home Assistant、そしてJellyfinサーバーを使い分けていることでしょう。先週、私はインフラを監視するためだけに22個ものブラウザタブを開いていることに気づきました。コンテナがクラッシュしていないか、メディアのトランスコード中にCPU使用率が95%に達していないかを確認するために、常にタブを行ったり来たりしていたのです。

「タブの肥大化」は単なる煩わしさではなく、生産性を著しく低下させます。最近、わざわざ3つの異なるWeb UIにログインしてステータスを確認するのが面倒で、ストレージのアラートを見逃してしまったことがありました。私が必要としていたのは、単なるブックマークのリストではありません。サービスと直接通信し、何十ものログイン画面を経由することなくライブデータを取得できる、中央管制塔のようなダッシュボードでした。

なぜ静的なブックマークは現代のHomeLabに通用しないのか

ブックマークは、動的な世界の静止画に過ぎません。Homerやシンプルなブラウザのフォルダといったツールは「静的」であり、リンクは提供してくれますが、サービスの健全性については何も教えてくれません。もしTransmissionクライアントが停止していたり、TrueNASのドライブが故障しそうになっていても、ブックマークは何も語りません。異変に気づくのは大抵そのサービスを使おうとした時で、それは往々にして最悪のタイミングです。

本格的なHomeLab環境において、オブザーバビリティ(観測性)の有無は、リラックスした週末を過ごせるか、深夜のトラブルシューティングに追われるかの分かれ目となります。API経由でテレメトリを取得する必要があるのです。現在のダッシュボードの多くは2つの罠に陥っています。Heimdallのように機能がシンプルすぎるか、あるいはDashyのように見た目を整えるだけで400行以上の複雑なCSSやJSONが必要になり、挫折してしまうかのどちらかです。

理想的な解決策:なぜ私はHomepageに切り替えたのか

私はこの可視性の問題を解決するために、3週間かけて様々なソリューションをテストしました。多くのDevOps愛好家にとって、現状は次のようなものです:

  • Homer/Heimdall: 5分でセットアップできる点は素晴らしいですが、本質的には単なる綺麗なアイコンです。リアルタイムデータを取得するには、ハック的なスクリプトが必要になることがよくあります。
  • Dashy: パワーユーザー向けの選択肢ですが、設定のオーバーヘッドが膨大です。ダッシュボードのレイアウトを修正することに、ラボを実際に使うよりも多くの時間を費やしてしまいました。
  • Portainer: コンテナ管理には不可欠ですが、ベアメタルや別ハードウェアで動作しているサービスを俯瞰する機能に欠けています。

そんな時、私はHomepage (gethomepage.dev)に出会いました。これは私のワークフローにとって完璧なバランスでした。クリーンなYAML設定ファイルを使用し、Next.jsで構築されているため250ms以下でロードされます。100種類以上のウィジェットをネイティブサポートしており、単にPi-holeにリンクするだけでなく、過去24時間のアドブロック率を表示してくれます。Proxmoxにリンクするだけでなく、ノードのメモリ使用率をリアルタイムで表示します。運用監視をここに移行して以来、チームはメンタルオーバーヘッドを感じることなく、システムの健全性を即座に把握できるようになりました。

Homepageのセットアップ:5分でできる実運用アプローチ

私は常にDocker Compose経由でHomepageをデプロイしています。この方法ならポータビリティが保たれ、設定とアプリケーションロジックを厳密に分離できるからです。新しいサーバーに移行する場合も、configフォルダを移動するだけで、数秒でオンラインに戻せます。

ステップ1:Docker Composeの設定

ダッシュボード専用のディレクトリを作成します。内部ログや天気ウィジェットを正確に表示させるために、ローカルのタイムゾーンをマッピングすることをお勧めします。

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 # リアルタイムのコンテナステータス取得用
    environment:
      - TZ=America/New_York
    restart: unless-stopped

ステップ2:設定のロジック

Homepageは、設定を複数のYAMLファイルに分割することで「巨大な設定ファイル」という罠を回避しています。これにより、環境が成長しても整理された状態を保てます。主に以下の4つのファイルを扱います:

  1. settings.yaml: UIのタイトル、レイアウト、テーマを定義します。
  2. services.yaml: アプリケーションとAPI統合を記述するコアファイルです。
  3. widgets.yaml: 天気、CPU、RAMメトリクスなどのグローバル情報です。
  4. bookmarks.yaml: ステータスチェックを必要としないサイトへのシンプルなリンクです。

ステップ3:サービスをリアルタイムデータに接続する

ここからダッシュボードに命が吹き込まれます。単なるURLではなく、widgetブロックを追加します。以下は、Pi-holeインスタンスとProxmoxノードを同時に監視する設定の断片です。

- Infrastructure:
    - Pi-hole:
        icon: pi-hole.png
        href: http://10.0.0.5/admin
        description: 広告ブロック
        widget:
          type: pihole
          url: http://10.0.0.5
          key: YOUR_API_TOKEN_HERE # ここにAPIトークンを入力

    - Proxmox:
        icon: proxmox.png
        href: https://10.0.0.10:8006
        widget:
          type: proxmox
          url: https://10.0.0.10:8006
          username: root@pam
          password: YOUR_TOKEN_OR_PASSWORD # ここにトークンまたはパスワードを入力
          node: pve-01

プロレベルのモニタリング:DockerとGlancesの統合

私はダッシュボードで直接コンテナのステータスを確認できることに重きを置いています。/var/run/docker.sockをマウントすることで、Homepageは自動的にコンテナを「Running(実行中)」や「Exited(終了)」としてフラグ立てします。リモートマシンの場合は、Glancesをインストールします。これにより、Homepageはネットワーク経由でほぼゼロ遅延でCPU、温度、RAM使用率を取得できるようになります。

サーバーのバイタル情報を一目で確認できるように、widgets.yamlに以下を追加しましょう:

- resources:
    cpu: true
    mem: true
    disk: /
- glances:
    url: http://10.0.0.20:61208
    version: 3
    metric: cpu

安定性に関する教訓と最後に

1年以上Homepageを運用してきましたが、最も感銘を受けたのはその信頼性です。タイムアウトも適切に処理されます。もし1つのサービスがオフラインになっても、その特定のウィジェットにエラーが表示されるだけで、ダッシュボードの他の部分はサクサクと動作し続けます。他の多くのソリューションのようにフリーズすることはありません。

実用的なヒントを1つ:「Media」「Core Network」「Dev」のように、services.yamlを論理的なグループに整理してください。これにより、スマートフォンの画面でもモバイルビューの操作性が格段に向上します。また、Dockerの統合をやりすぎないことも重要です。24時間365日の可視性が本当に必要な「クリティカルな」コンテナだけをマッピングするようにしましょう。

APIファーストのダッシュボードに切り替えたことで、ラボの管理方法が変わりました。バックアップが完了したか、DNSの調子がおかしいかを推測する必要はもうありません。サブモニターに目を向けるだけです。もしあなたがまだブックマークのフォルダをクリックし続けているなら、アップグレードの時です。Homepageは、あなたのHomeLabにふさわしいプロフェッショナルなインターフェースです。

Share: