Home AssistantをDuckDNS+Caddyで外出先から使えるようにする
自宅ですでにHome Assistantを使用している人向けに、DuckDNSとCaddyを使って、外出先からHome AssistantへHTTPSでアクセスできるようにする手順をまとめます。
1.今回の構成
今回の環境では、Home AssistantはWindowsパソコン上のHyper-Vで動いています。
外出先からは、
https://[サブドメイン名].duckdns.org
でアクセスします。
2.DuckDNSでサブドメインを作る
DuckDNSにアクセスします。
ここで、Googleのアカウントなどを利用してsign inしてください。
DuckDNSのdomainsの画面で、Sub Domainの欄に自分で決めたサブドメイン名を入力し、Add Domainを押します。
作成されたアドレスは、
https://[サブドメイン名].duckdns.orgとなります。
DuckDNSの画面に表示されているTokenを控えておきます。
3.Home AssistantでDuck DNSを設定する
Home Assistantで、
設定 → デバイスとサービス
を開きます。
Duck DNSを追加します。
ここで、
サブドメイン
Access Token
を入力します。
サブドメインには、先ほど作成したサブドメイン名を入力します。
Access Tokenには、先ほど控えたTokenを入力します。
4.Caddyをインストールする
Caddyは、Home Assistantを動かしているWindowsパソコンにインストールします。
今回のWindowsパソコンのIPアドレスは、
10.0.0.48
です。
WindowsでPowerShellを起動します。
次のコマンドを入力します。
curl.exe https://webi.ms/caddy | powershell
インストールが終わったら、
caddy version
を実行します。
Caddyのバージョンが表示されれば、インストール完了です。
5.Caddyfileを作成する
PowerShellで、
mkdir C:\Caddy
を実行します。
続いて、
notepad C:\Caddy\Caddyfile.txt
を実行します。
メモ帳が開いたら、次の内容を入力します。
[サブドメイン名].duckdns.org {
reverse_proxy 10.0.0.53:8123
}
保存すると、
C:\Caddy\Caddyfile.txt
というファイルができます。
エクスプローラーでC:\Caddyを開き、Caddyfile.txtを右クリックして「名前の変更」を選びます。
ファイル名を、
Caddyfile
に変更します。
拡張子を変更することについて確認が表示されたら、「はい」を選びます。
最終的に、
C:\Caddy\Caddyfile
となっていれば完了です。
6.Caddyを起動する
PowerShellで、
cd C:\Caddy
を実行します。
続いて、
caddy run
を実行します。
Caddyが起動すると、PowerShellにログが表示されます。
このPowerShellを閉じるとCaddyも停止します。
動作確認中は、このPowerShellを閉じないでください。
なお、PCを再起動した後もCaddyが自動的に起動するようにする方法は、**10.「Windows起動時にCaddyを自動起動する」**で説明します。
7.ルーターでCaddyへポート転送する
次に、自宅のルーターでポート転送を設定します。
今回使用しているルーターでは、
高度 → 詳細設定 → ポート転送/ポートトリガー
を開きます。
「カスタムサービスの追加」で、次の2つを設定します。
Caddy HTTP
| 項目 | 設定 |
|---|---|
| サービス名 | Caddy HTTP |
| プロトコル | TCP |
| 外部ポート | 80 |
| 内部ポート | 80 |
| 内部IPアドレス | 10.0.0.48 |
Caddy HTTPS
| 項目 | 設定 |
|---|---|
| サービス名 | Caddy HTTPS |
| プロトコル | TCP |
| 外部ポート | 443 |
| 内部ポート | 443 |
| 内部IPアドレス | 10.0.0.48 |
つまり、
Caddy HTTP
外部 80 → 10.0.0.48:80
Caddy HTTPS
外部 443 → 10.0.0.48:443
です。
既に「Home Assistant」のポート転送が設定されている場合は、その設定は変更せず、Caddy HTTPとCaddy HTTPSを追加します。
設定後、「適用」を押します。
8.Home AssistantでリバースプロキシとURLを設定する
Home Assistantで、
設定 → システム → ネットワーク
を開きます。
Reverse proxy
「HTTP server」の中にある、
Reverse proxy
を開きます。
Trust X-Forwarded-For
をオンにします。
Trusted proxiesには、
10.0.0.48/32
を入力します。
設定したら保存します。
「Home AssistantのURL」の「インターネット」の欄に、次のURLを入力します。
例えば、
https://[サブドメイン名].duckdns.org
です。
9.Home Assistantを再起動する
ここまでの設定を反映するため、Home Assistantを再起動します。
設定 → システム → 再起動
からHome Assistantを再起動します。
10.Windows起動時にCaddyを自動起動する
ここまでの設定では、CaddyはPowerShellから、
cd C:\Caddy caddy run
と実行したときに起動します。
しかし、Windowsを再起動するとCaddyも停止します。
そこで、Windowsのタスクスケジューラを使って、Windows起動時にCaddyを自動的に起動する設定を行います。
タスクスケジューラを起動する
Windowsの検索欄に、
タスクスケジューラ
と入力して起動します。
基本タスクを作成する
右側の「基本タスクの作成」をクリックします。
タスク名を、
Caddy
とします。
「トリガー」は、コンピューターの起動時を選択します。
「操作」は、プログラムの開始を選択します。
プログラムにはCaddyの実行ファイルを指定します。
C:\Users\[ユーザー名]\.local\bin\caddy.exe
引数には、
run --config C:\Caddy\Caddyfile
を指定します。
開始場所には、
C:\Caddy
を指定します。
設定を完了すると、Windowsの起動時にCaddyが自動的に起動します。
11.外出先から確認する
スマートフォンを自宅のWi-Fiから切断します。
モバイル通信などでインターネットに接続した状態で、ブラウザから、
https://[サブドメイン名].duckdns.org
を開きます。
Home Assistantが表示されれば成功です。
完成後の構成
アドレスの整理
| 対象 | アドレス | 役割 |
|---|---|---|
| DuckDNS | [サブドメイン名].duckdns.org | 外部からアクセスするURL |
| Windowsパソコン | 10.0.0.48 | CaddyとHyper-Vが動作 |
| Home Assistant | 10.0.0.53:8123 | Hyper-V上で動作 |
10.0.0.48はWindowsパソコンのIPアドレスです。
10.0.0.53は、そのWindowsパソコン上のHyper-Vで動作しているHome AssistantのIPアドレスです。
したがって、10.0.0.48と10.0.0.53は別々の物理パソコンではありません。
これで、Windowsパソコンを再起動した後もCaddyが自動的に起動し、外出先から
https://[サブドメイン名].duckdns.org
でHome Assistantにアクセスできます。
コメント
コメントを投稿