Homelab #9 Glancesを入れたけど失敗した話
HOMELAB

Homelab #9 Glancesを入れたけど失敗した話

Thất Nghiệp Thất Nghiệp
Mar 5, 2026 1 min read 0 views
ブログに戻る

ネットワークトラフィックやCPU、Memoryなどを監視できるものが欲しい。候補はGlancesとPrometheus。シンプルさでGlancesを選んだ。

問題と解決

問題1: Wireguardが全トラフィックをルーティングしてCloudflaredと併用できない

解決策はtailscaleか、wireguard内でcloudflaredトンネルを使うこと。ただしWindows Serverにcloudflaredを直接入れても無理だった。理由はトラフィックがwireguard server経由で、serverがVPSにあるため。だからcloudflaredトンネルのセットアップができない。

そこでcloudflaredトンネルをwireguard内に置く案。wireguard serverへNATする。これで10.66.66.66/24(サーバー機)からwireguardに直接ポートし、cloudflared経由で外部に出せる。問題は解決。

問題2: Glancesにpasswordを付けて認証する

最初のglancesは0.0.0.0にbindする。つまりlocalhost:61208相当で、wireguard内のIP 10.66.66.66:61208でアクセスしたら動いた。WireguardでNATするアイデアはここから。

最初はVPSのWAN IP(Wireguard Server)にNATしてテスト。WAN IP:61208にアクセスし、ufw allow 61208/tcp を実行したら動いた。WANVPS:61208でGlancesにアクセスできる。

そこからCloudflaredも可能。しかし公開されるとちょっと怖い。ドメインさえ知っていれば誰でも入れる。IPを常にスキャンされているのと変わらない。

ちょうどgethomepageにGlances widgetのusername/password設定がある。つまりGlancesに基本認証がある。なら使う。

誰でもアクセスできるから。問題は、Glancesがusernameとpasswordを同時に渡せない。

最初はこれを試した

glances -w --bind 10.66.66.66 --port 61208 --disable-autodiscover --username --password

こうすると初期設定が必要

glances -w --bind 10.66.66.66 --port 61208 --disable-autodiscover --username=admin --password

なぜか username=admin をそのままusernameとして認識する

glances -w --bind 10.66.66.66 --port 61208 --disable-autodiscover -u=admin --password

この方法だと admin がusernameとして正しく認識される。あとは一回パスワードを設定して保存すれば、再起動時もこのコマンドだけでOK。

これでGlances完了、最高。

ただ、PrometheusでexportするかGlancesでいくかまだ迷っている。

GethomepageではGlancesはinfo, cpu, memory, disk, networkくらいしか表示できない。しかも表示形式が自分の方向性と合わない。infoだとこうなる。

問題2: Glancesにpasswordを付けて認証する - GethomepageではGlancesはinfo, cpu, memory, disk, networkくらいしか表示できない

Memoryが%表示で、正直嫌。

memoryを使うとこうなる

問題2: Glancesにpasswordを付けて認証する - memoryを使うとこうなる

欠点はウィジェット1つ丸ごと占有すること。これは微妙。方向性はこっち

問題2: Glancesにpasswordを付けて認証する - 欠点はウィジェット1つ丸ごと占有すること

まだ迷う…

とりあえずGlancesを先にやる。

問題3: .envファイルとDocker内のdeclare

https://github.com/gethomepage/homepage/discussions/4886 このissueでやっと解決。

gethomepageでenv変数を使う時は "{{VAR}}" で、${} ではない(GPTが言ったやり方は違った)。

先輩のサンプルでも {{VAR}} だけで “” は使ってない

問題3: .envファイルとDocker内のdeclare - 先輩のサンプルでも {{VAR}} だけで “” は使ってない

よく分からないけど、syntax errorだから理解しなくてもOK。

問題4: GlancesとPrometheus

Gethomepageが欲しいGlancesのmetricをサポートしてないから、別の解決策が必要。

方法は2つ。1つはForkして対応。2つ目はPrometheusでquery。たぶん2つ目。Prometheusの知識も増えるし。

問題5: ポートフォワードとmasderaque

各ノードの通信がVPN経由(強制)なので、システムが分散して見える。そのためPrometheus用にポートフォワードが必要(以前はGlancesも同様だがCloudflared Tunnel経由)。ただPythonの制限が目立ち、システムが遅くなりWebサーバーがタイムアウトしてデータが取れない => Golang製のWindows Exporter(Prometheus用)に切り替え。これなら常時稼働で余裕がない環境でもクリーンに動く。

さらにPrometheusの利点は、データを集約できて、現在のData Center全体の力を見せられること。

問題6: Glancesが一定時間後にクラッシュ

理由は不明。APIもWebUIも応答しなくなる。たぶんリソース不足。
なのでGlancesは諦めることにした

この記事をシェア

Twitter LinkedIn
Thất Nghiệp

Thất Nghiệp が執筆

A developer sharing thoughts on clean code, creative freedom, and the pursuit of the perfect dev environment. Building digital sanctuaries one component at a time.

Comments

Join the conversation

Leave a comment

Won't be published

おすすめ記事