The following is a docker compose file that is meant to use the cloudflare API in order to generate certificates for a given domain using letsencrypt and certbot.
The compose file can be used in a Docker swarm and several copies of the same file can be created with the domain changed in order to generate certificates for multiple domains.
version: '3.9'
services:
certbot-DOMAIN:
image: certbot/dns-cloudflare:latest
command: certonly --dns-cloudflare --dns-cloudflare-credentials /run/secrets/cloudflare.ini -d DOMAIN -m EMAIL --agree-tos --non-interactive
volumes:
- /mnt/docker/data/certbot/DOMAIN/certs/:/etc/letsencrypt/
- /mnt/docker/data/certbot/DOMAIN/logs/:/var/log/letsencrypt/
- /mnt/docker/data/certbot/DOMAIN/secrets/:/run/secrets/
where:
EMAIL is an administrative E-mail,DOMAIN is the domain for which to generate certificates
Additionally, a file named cloudflare.ini must be placed at /mnt/docker/data/certbot/secrets/cloudflare.ini with the following contents:
dns_cloudflare_email = CLOUDFLARE_ACCOUNT_EMAIL dns_cloudflare_api_key = API_KEY
where:
CLOUDFLARE_ACCOUNT_EMAIL is the E-mail address managing the DOMAIN for which to generate certificates for,API_KEY is the Cloudflare global API key
Alternatively, the same can be achieved by using a Cloudflare token via the dns_cloudflare_api_token configuration key in secrets.ini such that the Cloudflare E-Mail and global API key can be kept private.