Cloudflare DNS automation for homelab and self-hosted stacks: label discovery, config sync and etc.
302
Automatically sync DNS records to Cloudflare from Docker container labels.
Cloudflare DNS Manager watches your Docker environment, discovers services that opt in via labels, and creates or updates matching DNS records in Cloudflare.
Minimal config.yaml example:
global:
domain: "example.com"
zone_id: "your_cloudflare_zone_id"
api_token: "your_cloudflare_api_token"
default_ip: "192.168.1.100"
docker_discovery: true
docker_defaults:
proxied: false
ttl: 1
type: "A"
domains:
example.com:
zone_id: "your_cloudflare_zone_id"
api_token: "your_cloudflare_api_token"
manual_records: []
Example docker-compose service:
services:
cloudflare-dns-manager:
image: tuudik/cloudflare-dns-manager:latest
container_name: cloudflare-dns-manager
restart: unless-stopped
volumes:
- ./config.yaml:/app/config.yaml:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- CF_ZONE_NAME=example.com
- WATCH_DOCKER=true
- CF_LOG_LEVEL=info
network_mode: host
Add labels to any service you want managed:
services:
whoami:
image: traefik/whoami
labels:
- "cloudflare-dns-manager.expose=private"
- "cloudflare-dns-manager.subdomain=whoami"
- "cloudflare-dns-manager.ip=192.168.1.100"
- "cloudflare-dns-manager.type=A"
- "cloudflare-dns-manager.ttl=1"
Supported label keys:
Content type
Image
Digest
sha256:d1a82b577…
Size
23.9 MB
Last updated
3 months ago
docker pull tuudik/cloudflare-dns-manager