Let’s Encryptによるhttps対応
Home AssistantをNginxプロキシーサーバ経由で配置しているため、以下のスタンドアローンモードでLet’s Encryptの認証を取得、取得したファイルをHome AssistantのDockerコンテナと共有します。
Nginxで指定したドメインの設定ファイル(www.example.com)を、同一LAN上に配置したHome Automationサーバマシン(Dockerコンテナ)へ導きます。
httpsをhttpへ変更後、次の手順に進んで下さい(認証取得後httpsへ戻す必要はありません)。
.....
location / {
proxy_pass http://192.168.x.xx;
.....
Home Automationサーバのポート80を開放して以下コマンドを実行します。
$ sudo certbot certonly --standalone --preferred-challenges http -d www.example.com
以下ディレクトリに認証ファイルが作成されます。
/etc/letsencrypt/live/www.example.com
Dockerボリュームを作成、ここに上記のディレクトリをコピーします。
$ docker volume create letsencrypt
$ sudo cp -r /etc/letsencrypt/* /var/lib/docker/volumes/letsencrypt/_data
docker-composeファイルで認証ファイルが共有されるよう指定します。
( 注: または直接ホストのディレクトリ/etc/letsencryptを指定しても構いません。その場合、Dockerボリュームは必要ありません。)
...
...
volumes:
- letsencrypt:/etc/letsencrypt
...
...
volumes:
letsencrypt:
external: true
認証は90日間の期限付きのため、定期的に認証取得が行われるようcrontabにコマンドを記述します。
$ sudo crontab -e
#certbot renew
@monthly sudo certbot renew && sudo cp -r /etc/letsencrypt/* /var/lib/docker/volumes/letsencrypt/_data