Home AssistantをDuckDNS+Caddyで外出先から使えるようにする

自宅ですでにHome Assistantを使用している人向けに、DuckDNSとCaddyを使って、外出先からHome AssistantへHTTPSでアクセスできるようにする手順をまとめます。

1.今回の構成

今回の環境では、Home AssistantはWindowsパソコン上のHyper-Vで動いています。

外出先からは、

https://[サブドメイン名].duckdns.org

でアクセスします。


2.DuckDNSでサブドメインを作る

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パソコンにインストールします。

Caddy

今回の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.48CaddyとHyper-Vが動作
Home Assistant10.0.0.53:8123Hyper-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にアクセスできます。

コメント

このブログの人気の投稿

TOTOの洗面台の水栓の吐水口網を交換してみた

ソフトバンク光でスマホdeひかり電話

パワーポイントでPDF変換ができない