Table of Contents
About
Caddy with docker label support, Cloudflare & Route53
This image will inspect container labels & translate them into a caddy config like so:
services:
server:
...
networks:
- proxy_network
deploy:
labels:
- caddy: '*.example.com' # *.example.com {
- caddy.reverse_proxy: {{upstreams 80}} # revere_proxy <DOCKER IP>:80
- caddy.tls.dns: cloudflare # tls { dns cloudflare }
# }
Other useful patterns:
# Load-balance sockets
caddy.reverse_proxy.lb_policy: client_ip_hash
# Multiple domains
caddy: a.example.com b.example.com
caddy.@match0.host: a.example.com
caddy.@match1.host: b.example.com
caddy.0_reverse_proxy: '@match0 {{upstreams 80}}'
caddy.1_reverse_proxy: '@match1 {{upstreams 81}}'
# Whitelist network
caddy.@local.remote_ip: '192.168.0.0/24'
caddy.handle: '@local'
caddy.handle.reverse_proxy: '{{upstreams 3000}}'
See caddy-docker-proxy for more information
Built With
Setup
Production
Prerequisites
Instructions
- Create a compose file:
services:
caddy:
image: ztimson/caddy-labels:latest
environment:
CADDY_INGRESS_NETWORKS: proxy_network
TZ: America/Toronto
ports:
- 80:80
- 443:443
volumes:
- data:/data/caddy
- /var/run/docker.sock:/var/run/docker.sock
networks:
- proxy_network
deploy:
mode: global
labels:
caddy.email: example@example.com
# Cloudflare
caddy.acme_dns: 'cloudflare TOKEN'
# OR Route53
caddy.acme_dns: route53
caddy.acme_dns.region: 'us-east-1'
caddy.acme_dns.access_key_id: 'TOKEN'
caddy.acme_dns.secret_access_key: 'TOKEN'
networks:
proxy_network:
volumes:
data:
- Deploy:
docker compose up
Development
Prerequisites
Instructions
- Update desired version number in Dockerfile
- Build docker image:
docekr build -t ztimson/caddy-labels:latest .
License
Copyright © 2023 Zakary Timson | Available under MIT Licensing
See the license for more information.
Description
Caddy with Docker Label Support, Cloudflare & Route53
https://hub.docker.com/r/ztimson/caddy-labels
Languages
Dockerfile
100%