シングルコンピュータ等、それぞれのプラットフォーム向けのイメージが用意されている。SynologyのSyno communityパッケージを使おうとしたがいまいちインストールに不明な点が多かったのでDockerで実行することに。
Docker上での起動は問題なくできる。ローカルネットワーク上でのアクセスも問題ない。
WebUIをSSLで外部公開した場合(今回はhttps-portalで転送)、なぜか外部からのアクセスがうまくいかなかった。
①× ブラウザでの外部からのアクセス
②× Home Assistantアプリからのアクセス
③× Home Assistant Cast
各UIからのアクセスをしようとしてログインすると①、②の場合は以下の画像のような"Retry"の表示、③の場合は"Cast Unable to connect"の文字が出てログイン画面に戻される。
リバースプロキシがWebSocket通信を許容していない場合に起こるっぽい。
今回の場合はHttps-portalが原因だったため、
environment:
WEBSOCKET: "true"
を追加し再起動でログインまでは解決した。
Google home mini (Google Nest mini)は内部でDNS ipをハードコーディングしているらしく家庭内のDHCPサーバでDNSを指定しても反映されない。よってヘアピンNAT等の解決法でない限り、Home AssistantのWebsocket APIにたどり着けないらしい。
解決する手法としては、Cast対象の端末のIPv4,IPv6ともに外部DNSサーバー(8.8.8.8 / 8.8.4.4)へのアクセスをブロックする必要がある。(これらのDNSサーバーにアクセスできない時点で内部のDNSサーバーを参照する)
よって、IPv6のフィルタが可能なルーターを使用する必要がある。(パススルーやブリッジでは駄目)