A lightweight Cloudflare DDNS client implemented in Go!
1.3K
A minimal Cloudflare Dynamic DNS client written in Go. No dependencies, single binary, configured entirely via environment variables.
How it works: Detect public IP → Compare with Cloudflare DNS record → Update only when changed
A) and IPv6 (AAAA) supportlinux/amd64, linux/arm64docker run -d \
--name cloudflare-ddns \
--restart unless-stopped \
-e CF_API_TOKEN=your-token \
-e CF_ZONE_ID=your-zone-id \
-e CF_RECORD_NAME=home.example.com \
-e CF_RECORD_TYPE=A \
betterlmy/simple-cloudflare-ddns:latest
services:
cloudflare-ddns:
image: betterlmy/simple-cloudflare-ddns:latest
restart: unless-stopped
environment:
CF_API_TOKEN: your-token
CF_ZONE_ID: your-zone-id
CF_RECORD_NAME: home.example.com
CF_RECORD_TYPE: A
# CF_CHECK_INTERVAL: 300
| Variable | Required | Description |
|---|---|---|
CF_API_TOKEN | Yes | Cloudflare API token (DNS edit permission) |
CF_ZONE_ID | Yes | Cloudflare Zone ID |
CF_RECORD_NAME | Yes | DNS record to update, e.g. home.example.com |
CF_RECORD_TYPE | Yes | A (IPv4) or AAAA (IPv6) |
CF_CHECK_INTERVAL | No | Check interval in seconds (default: 300) |
CF_TTL | No | DNS TTL in seconds (default: inherits existing record) |
CF_PROXIED | No | true or false (default: inherits existing record) |
CF_IP_URLS | No | Comma-separated IP detection service URLs (default: built-in list, auto-selected based on CF_RECORD_TYPE) |
API Token
Zone:DNS:Edit, select your zoneZone ID
*.ipify.org, ifconfig.co, *.icanhazip.com to the bypass list.-once flag (not applicable in Docker daemon mode).Content type
Image
Digest
sha256:76c54f8d9…
Size
9 MB
Last updated
7 months ago
docker pull betterlmy/simple-cloudflare-ddns