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. 全体の流れ
- da30.org を Cloudflare に追加し、DNS管理をCloudflareへ移行
- バリュードメイン側でネームサーバーをCloudflareへ変更
- HAOSに Cloudflared アプリ(旧称:アドオン)を追加・インストール
- Cloudflared の設定(ホスト名指定)とトンネル認証
- Home Assistant 側の
configuration.yaml調整 - 動作確認
3. Cloudflareへのドメイン移行
3-1. 既存DNSレコードの控え
移行前に、バリュードメインの管理画面で現在のDNSレコードを確認・記録しておく。
3-2. Cloudflareにサイトを追加
- Cloudflareアカウントを作成
- 「サイトを追加」→ 「ドメインを接続」 を選択(「ドメインを転送」ではない点に注意。ドメインの登録元はバリュードメインのまま、DNS管理のみCloudflareに移す)
da30.orgを入力、Freeプランを選択- 自動スキャンされたDNSレコードを確認し、上記3-1の内容と一致しているか確認(不足があれば手動追加)
3-3. プロキシ設定(重要)
既存のWordPressサイトへの影響を避けるため、A / AAAA レコード(計6件: * / da30.org / www の A・AAAA)はすべて「DNSのみ」(グレー雲)に設定する。
オレンジ雲(プロキシ有効)のままだと、Cloudflare経由で通信が中継され、レンタルサーバー側のログやSSL設定に影響が出る可能性があるため。
「da30.org は完全に保護されていません」という警告が出るが、意図した設定なので「後で実行」を選んで問題ない。
3-4. ネームサーバーの変更
- Cloudflareが発行する2つのネームサーバーをメモする
例: eoin.ns.cloudflare.com
ophelia.ns.cloudflare.com
- バリュードメインのコントロールパネル → 「ドメイン」→「ドメインの設定操作」→ 該当ドメインの「ネームサーバー」設定を開く
- 既存のネームサーバーを削除し、Cloudflareが指定した2つに変更・保存
- Cloudflareダッシュボードでステータスが「アクティブ」になるまで待つ(数分〜最大24時間程度)
4. HAOSへのCloudflaredアプリ導入
4-1. リポジトリの追加
- 設定 → アプリ → アプリストア(「アプリをインストール」ボタン) を開く
- ストア画面右上の「⋮」→「リポジトリ」→「追加」
- 以下のURLを追加
https://github.com/homeassistant-apps/repository
補足: HAOSのUIバージョンにより「アドオン」の呼称が「アプリ」に変わっている。「設定」タブは現在「構成」タブに名称変更されている場合がある。
4-2. インストール
- アプリストアを更新し、一覧から「Cloudflared」を選択
- 「インストール」をクリック(この時点ではまだ起動しない)
4-3. ホスト名の設定
- Cloudflaredアプリの 「構成」タブ を開く
external_hostnameに フルドメインha.da30.orgを入力して保存 注意: サブドメイン部分(ha)のみの入力では動作せず、404エラーの原因になった。フルドメインでの指定が必要。
4-4. 起動と認証
- 「情報」タブで「開始」をクリック
- 「ログ」タブに切り替え、以下のような認証URLが表示されるのを確認
Please open the following URL and log in with your Cloudflare account: https://dash.cloudflare.com/argotunnel?aud=&callback=...
- このURLを 速やかに(目安10分以内) ブラウザで開き、Cloudflareにログイン
- 「Tunnel を追加するゾーンを選択してください」の画面で
da30.orgを選択し、「承認」 - 「成功」画面が出れば証明書のインストール完了
- ログに以下が出れば接続成功
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 + O → Enter → Ctrl + X
5-2. Home Assistant URL の変更
設定 → システム → ネットワーク → 「Home Assistant URL」を以下に変更
5-3. 再起動(重要)
configuration.yaml の変更は Home Assistant本体の再起動 をしないと反映されない。
設定 → システム → 再起動 から実行する。
つまずいたポイント: 設定変更後に再起動を忘れると、変更前の状態のまま404 / 400エラーが継続する。設定変更のたびに再起動を徹底する。
6. 動作確認
外部ネットワーク(自宅Wi-Fi以外、スマホの4G/5G回線など)から以下にアクセス。
Home Assistantのログイン画面が表示されれば成功。
トラブルシューティング早見表
| 症状 | 主な原因 | 対処 |
|---|---|---|
| 404 Not Found | Cloudflared「構成」タブのexternal_hostnameがサブドメインのみ、または未設定 | ha.da30.org のようにフルドメインで入力し再起動 |
| 400 Bad Request | trusted_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 による。