Traefik というクラウドネイティブ時代に合わせた良い感じのリバースプロキシーを使う機会があって、その際 Let's Encrypt での証明書生成もこいつだけでできるとのことだったので、やり方のメモ。
こういった docker-compose.yml
(関係ない部分は略) があったとして、 acme.dnschallenge
関連を有効にすれば良い。
今回は DNS プロバイダーとして Cloudflare を使うので、 provider=cloudflare
と設定。
ちなみにサポートしているプロバイダー一覧はこのページにまとまってる。
あとは、プロバイダーにあわせた環境変数を設定すると OK。
内部的には Lego を使っているようで、同じ感じに設定してあげると動いてくれる。
設定例としては、こんな感じ:
version: "3.7" services: traefik: image: "traefik" restart: always command: # 他は略 - "--certificatesresolvers.mytlschallenge.acme.dnschallenge=true" - "--certificatesresolvers.mytlschallenge.acme.dnschallenge.provider=cloudflare" - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}" - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" environment: - CF_API_EMAIL=${CLOUDFLARE_EMAIL} - CF_DNS_API_TOKEN=${CLOUDFLARE_DNS_API_TOKEN} - CF_ZONE_API_TOKEN=${CLOUDFLARE_ZONE_API_TOKEN} volumes: - traefik_data:/letsencrypt - /var/run/docker.sock:/var/run/docker.sock:ro volumes: traefik_data: external: true
簡単。