The image includes 3 modules for Caddy: cloudflare, transform-encoder and caddy-exec.
The image is designed to obtain a TLS certificate using dns challenge api cloudflare, and using a log converter based on a desired pattern.
Please see the official Caddy Docker Image for deployment instructions.
Builds are available at the following Docker repositories:
- Docker Hub: docker.io/deniom3/caddy-cloudflare-transform
- GitHub Container Registry: ghcr.io/deniom3/caddy-cloudflare-transform
For start you should add CLOUDFLARE_EMAIL and CLOUDFLARE_API_TOKEN as environment variables to your docker run
command. Example:
docker run -it --name caddy \
-p 80:80 \
-p 443:443 \
-v caddy_data:/data \
-v caddy_config:/config \
-v $PWD/Caddyfile:/etc/caddy/Caddyfile \
-e [email protected] \
-e CLOUDFLARE_API_TOKEN=12345 \
-e ACME_AGREE=true \
deniom3/caddy-cloudflare-transform:latest
You can obtain your Cloudflare API token via the Cloudflare Portal. To create a API token with minimal scope, the following steps are needed:
-
Log into your dashboard, go to account settings, create API token
-
grant the following permissions:
- Zone / Zone / Read
- Zone / DNS / Edit
For use you should add the following to your Caddyfile as the tls directive.
tls {$CLOUDFLARE_EMAIL} {
dns cloudflare {$CLOUDFLARE_API_TOKEN}
}
To use the log converter you need to add to your Caddyfile conversion rule.
log {
output file /logs/access.log
format transform `{ts} {request>headers>X-Forwarded-For>[0]:request>remote_ip} {request>host} {request>method} {request>uri} {status}` {
time_format "02/Jan/2006:15:04:05"
}
}
This image supports tagging See available tags here. To select a specific version of caddy
, set your Docker image tag to the caddy version you'd like to use.
Example: deniom3/caddy-cloudflare-transform:2.8.1