ztimson 1dd915806c
All checks were successful
Build Container / Build Container (push) Successful in 5s
Build Container / Git Tag (push) Successful in 3s
Build Container / Docker Hub (push) Successful in 8s
Updated README
2025-04-04 00:49:17 -04:00
2025-04-04 00:02:47 -04:00
2025-04-03 22:37:50 -04:00
2025-04-03 22:06:28 -04:00
2025-04-04 00:49:17 -04:00
2025-04-04 00:49:17 -04:00


Logo

ztimson/caddy-labels

Caddy with Docker Label Support, Cloudflare & Route53

Version Pull Requests Issues

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

Docker

Setup

Production

Prerequisites

Instructions

  1. 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:
  1. Deploy: docker compose up

Development

Prerequisites

Instructions

  1. Update desired version number in Dockerfile
  2. 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
Readme MIT 47 KiB
Languages
Dockerfile 100%