Introduction
External-DNS for plain Docker hosts — what DockRoute is and when to use it.
DockRoute watches your running Docker containers, reads dockroute.* labels and
reconciles the matching DNS records — and Cloudflare Tunnel routes — in a
pluggable provider. It is the same idea as Kubernetes
ExternalDNS, applied where most
homelabs and small stacks actually live: plain Docker and Docker Compose hosts.
Your Compose file is the source of truth. DockRoute makes the provider match it, and never alters what it cannot prove it manages.
What it does
- Streams container lifecycle events (
start,die,stop,destroy) from the Docker socket and keeps a periodic full resync as a safety net. - Turns
dockroute.hostnamelabels intoA,AAAAorCNAMErecords — or into Cloudflare Tunnel public hostnames withdockroute.tunnel.service. - Proves ownership of every record it creates with a companion TXT record, so it can share a zone with your hand-managed records and with other DockRoute instances without conflict.
- Cleans up records when their container goes away — only under the
syncpolicy, and only for records it owns.
What it does not do
- It does not proxy or route traffic. DockRoute manages names, not packets — pair it with your reverse proxy or an existing Cloudflare Tunnel.
- It does not create tunnels. You create the tunnel and run
cloudflared; DockRoute manages the tunnel's public-hostname ingress rules and CNAMEs. - It does not need a database. Docker is the desired state; the provider plus the TXT registry is the actual state.