We use Cloudflare to host our domains and the associated external DNS records. Cloudflare provides excellent security and scaling features and is free for our use cases.
We do not have a static IP address from either of our ISPs. This, coupled with the potential of a failover from our primary to our secondary ISP, requires us to use DDNS to keep the IPs for our domains up to date in Cloudflare’s DNS.
We run a docker container for each domain that periodically checks to see if our external IP address has changed and updates our DNS records in Cloudflare. The repository for this container can be found here.
Deploying the DDNS update container is done via a simple docker compose yml –
version: '2' services: cloudflare-ddns: image: oznu/cloudflare-ddns:latest restart: unless-stopped container_name: your-container-name environment: - API_KEY=YOUR-CF-API-KEY - ZONE=yourdomain.com - PROXIED=true # Runs every 5 minutes - CRON=*/5 * * * *
You’ll need a separate container for each DNS Zone you host on Cloudflare.