Docker,Alpine,Let's Encrypt,NginxでHTTPS化を行うリバースプロキシコンテナ

 Let's Encrypt、Docker、NginXを組み合わせて、自動で証明書更新をしてくれるリバースプロキシコンテナを用意している記事を見つけた。だがhttps-portalっていう、同じことをやるDockerイメージもすでにあったりする。
 https-portalとそのブログ記事のあいだに、ぼくも同様のものを作っている。このブログはそのDockerイメージを使ってHTTPS化して動いている。
 実装は自分に必要な機能に絞った。単一の証明書の取得、自動更新、リバースプロキシ。先に挙げた二つのDockerイメージは複数のサブドメインの証明書を取得できるようにしているが、個人的に必要なかったので証明書は一つにしておいた。今ならワイルドカード証明書取れるようになってるし。

https://github.com/hMatoba/cdcc
https://hub.docker.com/r/matoba/cdcc/

 ↑がそのソースとDockerイメージのリポジトリ。そもそもhttps-portalを使わなかったのは、そっちのソースを見てRuby入ってるのはなくてもできるだろうから軽量化できるなと思ったり、ちゃんとcertbotでの処理を理解しておきたかったから。
 機能を絞った代わりにちゃんと軽量化は果たしていて、https-portalは90MB超なところをぼくのは30MB未満。またSSLのセキュリティもちゃんと調整してSSLLabsでA+の評価を得られるようにしている。


 Let's Encryptやるコンテナを使うTipsとしては、ディレクトリ”/etc/letsencrypt”に外部ボリュームをマウントしたほうがいい。Dockerコマンドなりcomposeで設定できるから。じゃないと発行済み証明書がどんどん廃棄されていって、すぐに発行回数上限に達してしばらく使えなくなってしまう。
comment: 0