termal.in

← ブログ

Home Assistant や Grafana にポート転送なしでリモート接続

· Termalin Team homelabconnectorremote-accessself-hostedcomparison

Home Assistant は http://homeassistant.local:8123、Grafana は :3000 で動いていて、どちらも自宅のネットワークから出られません。それらを、オフィスから、スマホから、あるいは誰かと共有して、ブラウザーで開きたい——ルーターを攻撃対象にすることなく。ここでは、そのための 5 つの方法と、それぞれが実際に何を代償にするのか、そして招待制の方法の手順を順を追って紹介します。

なぜ 8123 や 3000 を転送するだけではいけないのか

ルーターでポートを転送すると、ログインページ——ときには開けっ放しのダッシュボード——が、インターネット上のすべてのボットの前にさらされます。Home Assistant も Grafana も、見つかれば絶え間なく探られ、使い回しのパスワードや未修正の CVE が 1 つあれば十分です。そもそも、キャリアグレード NAT(家庭用光回線や 4G/5G でよくあります)のせいで転送自体が不可能なことも多いです。以下のどの選択肢も、その 1 つの開いたポートを避けるために存在します。

5 つの選択肢

選択肢公開 URL?閲覧者のデバイスにHA 以外でも使える?コスト
Nabu Casa(HA Cloud)あり、自分のサブドメインなしいいえ——Home Assistant のみサブスクリプション
Cloudflare Tunnel公開、または Access で制御なし、または Access のログインはい無料プランあり。ドメインが必要
Tailscale/WireGuardなし——プライベートメッシュすべてに VPN クライアントはい無料プランあり
リバースプロキシ + ポート転送あり——インターネット上になしはい手間と、露出というコスト
Termalin の内部サイトなし——メールで招待ブラウザーだけはいPro プラン

Nabu Casa は公式の Home Assistant Cloud です。Home Assistant には最もなめらかな方法で——リモート UI、安定した URL、しかもプロジェクトの資金にもなります——が、カバーするのは Home Assistant だけで、Grafana や Portainer は対象外です。

Cloudflare Tunnel(cloudflared)は LAN 上のデーモンから外向きに接続するので、ポートは開きません。強力で無料プランもありますが、ダッシュボードを非公開に保つには、ドメインを所有し、その前に Cloudflare Access ポリシーを置く必要があります。むき出しのままだと、ホスト名は誰でもアクセスできる公開 URL になります。

Tailscale や WireGuard はプライベートメッシュを構築します。何も公開されず、自分のデバイスには最適です。ただし落とし穴があります。接続する全員が VPN クライアントをインストールしてサインインする必要があり、家族や一度きりのゲストには受け入れてもらいにくいのです。

ポートを転送したリバースプロキシ(nginx、Caddy、Traefik)はきれいな HTTPS を提供しますが、それでもサービスをインターネットに公開していることに変わりはなく、すべてのパッチと認証の判断を自分で引き受けることになります。

Termalin の内部サイトは別の位置にあります。公開 URL は一切なく、閲覧側にクライアントもありません。LAN 上の Connector が外向きに接続し、ダッシュボードは https://<10 文字>.termal.ink のようなプライベートアドレスで開きます——あなたと、あなたがメールで招待した人のために。特定の相手に 1 つのダッシュボードを共有するには、これが最も手早い方法です。トレードオフは正直なものです。Pro プランが必要で、リンクごとに 1 日あたり 5 GB のソフト上限があり、恒久的な公開リンクはありません——プライバシーが欲しいなら利点、公開ステータスページが欲しいなら制約です。

Connector を使った手順

これは Home Assistant、Grafana、Portainer、Proxmox——ネットワーク上に Web UI を持つものなら何でも——で動きます。WebSocket がそのまま通るので、HA のライブ更新や Grafana のライブパネルも LAN 上と同じように動きます。

  1. Connector をインストールします。Home Assistant のマシンか、同じネットワーク上の常時稼働のマシン——Raspberry Pi、NAS、LAN 上の小さな VPS など——に入れます。キャビネットの*「インストールコマンドを取得」*から 1 行で済みます。外向きに接続し、待ち受けることはありません。
  2. サイトを追加します。 ウェブキャビネットで 内部サイト カード(「バックアップ」の隣)→ サイトを追加 を開きます。Connector を選び、そのマシンから見たアドレスを入力します——Connector が HA のホスト上にあるなら http://localhost:8123、別のマシンからなら http://10.0.0.5:8123。ダッシュボードが TLS を提供しているなら「内部サイトは https を使用」にチェックを入れます(自己署名証明書でも問題ありません)。
  3. 追加して開きます。 ダッシュボードが新しいタブで、その termal.ink のアドレスで開きます。あなたは 12 時間サインインした状態になります。アドレスだけでは、ほかの誰も入れません。

許可されるのはプライベートアドレスだけです——localhost、10.x、172.16–31.x、192.168.x、リンクローカル、Tailscale の 100.64/10、IPv6 ULA——公開アドレスは設計上拒否されます。

家族と 7 日間共有する

キャビネットから、サイトを 1 つのメールアドレス、24 時間または 7 日間 共有します(1 つのリンクにつき同時に最大 25 人。もう一度共有すると延長されます)。相手には招待メールが届き、6 桁のコード でサインインします——Termalin アカウントを作る必要はありません。相手に見えるのはそのダッシュボード 1 つだけで、共有の期限が切れるとセッションは終了します。削除 で一人を外すことも、無効にする でリンクを丸ごと切ることもでき、開かれるたびにサイトのアクティビティログに記録されます。共有には有料プランが必要です。トライアルはサイトを開けますが、共有はできません。

別の選択肢を選ぶべきとき

  • Home Assistant だけで、手間なく使いたい → Nabu Casa。プロジェクトの支援にもなります。
  • ドメインを持っていて、恒久的な、場合によっては公開の URL が欲しい → Access ポリシー付きの Cloudflare Tunnel。
  • 接続するのは全部自分で、自分のデバイス間だけ → Tailscale か WireGuard。
  • 1〜2 個のダッシュボードを、指定した人と共有し、何も公開しない → Termalin の内部サイト。

NAT の内側にあるホームラボの SSH については、ポート転送なしで NAT の内側へ SSH と 自宅の NAS やサーバーへ SSH をご覧ください。

まずは 1 台のホストで試してみてください。

Termalin は、あなたとあなたのエージェントのための高速な SSH クライアントです。

無料プラン · Pro を 14 日間お試し · 料金

Google で Termalin を優先する情報源に追加