Home Assistant 外部アクセス設定手順

Cloudflare Tunnel を使った HTTPS 化・リモートアクセス構築

  • 対象環境: Home Assistant OS (HAOS)
  • ドメイン: da30.org (バリュードメイン管理 / WordPress運用中)
  • サブドメイン: ha.da30.org
  • 方式: Cloudflare Tunnel (ポート開放不要・DDNS不要)
  • 作成日: 2026-07-09

1. 前提条件

項目内容
Home Assistant 導入形態HAOS (Supervisor付き)
既存ドメインda30.org (バリュードメインで取得・WordPress稼働中)
選択した方式Cloudflare Tunnel(Nabu Casa Cloud / DuckDNS+Let’s Encrypt との比較検討の結果採用)

Cloudflare Tunnel を選んだ理由

  • ルーターのポート開放が不要(セキュリティリスク低減)
  • 固定グローバルIPやDDNSクライアントの運用が不要
  • 無料で利用可能

2. 全体の流れ

  1. da30.org を Cloudflare に追加し、DNS管理をCloudflareへ移行
  2. バリュードメイン側でネームサーバーをCloudflareへ変更
  3. HAOSに Cloudflared アプリ(旧称:アドオン)を追加・インストール
  4. Cloudflared の設定(ホスト名指定)とトンネル認証
  5. Home Assistant 側の configuration.yaml 調整
  6. 動作確認

3. Cloudflareへのドメイン移行

3-1. 既存DNSレコードの控え

移行前に、バリュードメインの管理画面で現在のDNSレコードを確認・記録しておく。

3-2. Cloudflareにサイトを追加

  1. Cloudflareアカウントを作成
  2. 「サイトを追加」→ 「ドメインを接続」 を選択(「ドメインを転送」ではない点に注意。ドメインの登録元はバリュードメインのまま、DNS管理のみCloudflareに移す)
  3. da30.org を入力、Freeプランを選択
  4. 自動スキャンされたDNSレコードを確認し、上記3-1の内容と一致しているか確認(不足があれば手動追加)

3-3. プロキシ設定(重要)

既存のWordPressサイトへの影響を避けるため、A / AAAA レコード(計6件: * / da30.org / www の A・AAAA)はすべて「DNSのみ」(グレー雲)に設定する。

オレンジ雲(プロキシ有効)のままだと、Cloudflare経由で通信が中継され、レンタルサーバー側のログやSSL設定に影響が出る可能性があるため。

「da30.org は完全に保護されていません」という警告が出るが、意図した設定なので「後で実行」を選んで問題ない。

3-4. ネームサーバーの変更

  1. Cloudflareが発行する2つのネームサーバーをメモする
   例: eoin.ns.cloudflare.com
       ophelia.ns.cloudflare.com
  1. バリュードメインのコントロールパネル → 「ドメイン」→「ドメインの設定操作」→ 該当ドメインの「ネームサーバー」設定を開く
  2. 既存のネームサーバーを削除し、Cloudflareが指定した2つに変更・保存
  3. Cloudflareダッシュボードでステータスが「アクティブ」になるまで待つ(数分〜最大24時間程度)

4. HAOSへのCloudflaredアプリ導入

4-1. リポジトリの追加

  1. 設定 → アプリ → アプリストア(「アプリをインストール」ボタン) を開く
  2. ストア画面右上の「⋮」→「リポジトリ」→「追加」
  3. 以下のURLを追加
   https://github.com/homeassistant-apps/repository

補足: HAOSのUIバージョンにより「アドオン」の呼称が「アプリ」に変わっている。「設定」タブは現在「構成」タブに名称変更されている場合がある。

4-2. インストール

  1. アプリストアを更新し、一覧から「Cloudflared」を選択
  2. 「インストール」をクリック(この時点ではまだ起動しない)

4-3. ホスト名の設定

  1. Cloudflaredアプリの 「構成」タブ を開く
  2. external_hostnameフルドメイン ha.da30.org を入力して保存 注意: サブドメイン部分(ha)のみの入力では動作せず、404エラーの原因になった。フルドメインでの指定が必要。

4-4. 起動と認証

  1. 「情報」タブで「開始」をクリック
  2. 「ログ」タブに切り替え、以下のような認証URLが表示されるのを確認
   Please open the following URL and log in with your Cloudflare account:
   https://dash.cloudflare.com/argotunnel?aud=&callback=...
  1. このURLを 速やかに(目安10分以内) ブラウザで開き、Cloudflareにログイン
  2. 「Tunnel を追加するゾーンを選択してください」の画面で da30.org を選択し、「承認」
  3. 「成功」画面が出れば証明書のインストール完了
  4. ログに以下が出れば接続成功
   Registered tunnel connection connIndex=0 ... status=pass

タイムアウトに注意: 認証URLを開かずに時間を置くと、Failed to write the certificate エラーでコンテナが停止する。その場合はアプリを再起動し、ログに出る新しい認証URLで再度やり直す。


5. Home Assistant 側の設定

5-1. configuration.yaml の編集

「Advanced SSH & Web Terminal」アプリ、または「File editor」アプリを使って編集する。

bash

nano /homeassistant/configuration.yaml

以下を追記:

yaml

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.30.33.0/24

保存: Ctrl + OEnterCtrl + X

5-2. Home Assistant URL の変更

設定 → システム → ネットワーク → 「Home Assistant URL」を以下に変更

Home Assistant

5-3. 再起動(重要)

configuration.yaml の変更は Home Assistant本体の再起動 をしないと反映されない。

設定 → システム → 再起動 から実行する。

つまずいたポイント: 設定変更後に再起動を忘れると、変更前の状態のまま404 / 400エラーが継続する。設定変更のたびに再起動を徹底する。


6. 動作確認

外部ネットワーク(自宅Wi-Fi以外、スマホの4G/5G回線など)から以下にアクセス。

Home Assistant

Home Assistantのログイン画面が表示されれば成功。

トラブルシューティング早見表

症状主な原因対処
404 Not FoundCloudflared「構成」タブのexternal_hostnameがサブドメインのみ、または未設定ha.da30.org のようにフルドメインで入力し再起動
400 Bad Requesttrusted_proxies未設定、または設定後の再起動漏れconfiguration.yaml設定後、Home Assistant本体を再起動
認証画面でda30.orgが選択肢に出ないネームサーバー変更が未反映Cloudflareダッシュボードでステータスが「アクティブ」になるまで待つ
証明書エラーでコンテナ停止認証URLを開かずタイムアウトアプリを再起動し、新しい認証URLで再認証

7. 最終結果

アクセス経路URL
外部(インターネット経由)https://ha.da30.org
内部(自宅LAN)http://192.168.X.X:8123
  • ルーターのポート開放: 不要
  • DDNSクライアントの運用: 不要
  • da30.orgのWordPressサイト: 影響なし(グレー雲設定により従来通り動作)

8. 今後の検討事項

  • Cloudflaredアプリの「自動更新」を有効化するか検討(現状オフ)
  • Home Assistant Companionアプリ(スマホ)の外部URL設定を https://ha.da30.org に更新
  • より高いセキュリティが必要な場合、Cloudflare Zero Trustの「Access」機能(メール認証・ワンタイムPIN・mTLS等)の追加を検討

Home Assistant(スマートホーム)

Cloudflare(DNS、トンネリング)

※今回のシステム構築とドキュメントは Claude による。