DDNS Updater
Deploy ddns-updater on Kubernetes using the official qmcgaw/ddns-updater Docker image. Keep DNS A/AAAA records updated across 50+ providers with a responsive web UI.
Key Features
- 50+ DNS providers — Cloudflare, Route53, DuckDNS, Namecheap, GoDaddy, Hetzner, and more
- Web UI — responsive dashboard for monitoring update status
- Multi-provider — manage records across different providers in a single deployment
- Persistent history — update history stored in a PVC
- Existing secrets — bring your own Secret for credentials
- Ingress support — expose the web UI with TLS
Installation
HTTPS repository:
helm repo add helmforge https://repo.helmforge.dev
helm repo update
helm install ddns-updater helmforge/ddns-updater -f values.yaml
OCI registry:
helm install ddns-updater oci://ghcr.io/helmforgedev/helm/ddns-updater -f values.yaml
Basic Example (Cloudflare)
# values.yaml
config:
settings:
- provider: cloudflare
zone_identifier: 'your-zone-id'
domain: 'example.com'
host: '@'
ttl: 300
token: 'your-cloudflare-api-token'
proxied: false
ip_version: 'ipv4'
Access the web UI with kubectl port-forward svc/<release>-ddns-updater 8000:80.
Multi-Provider Example
config:
settings:
- provider: cloudflare
zone_identifier: 'cf-zone-id'
domain: 'example.com'
host: '@'
token: 'cf-token'
proxied: true
- provider: duckdns
domain: 'myhost.duckdns.org'
token: 'duck-token'
- provider: namecheap
domain: 'example.org'
host: 'home'
password: 'ddns-password'
External Secret
config:
existingSecret: ddns-config
existingSecretKey: config.json
Key Values
| Key | Default | Description |
|---|---|---|
config.settings | [] | DNS records to update (provider-specific) |
config.existingSecret | "" | Existing secret with config.json |
ddns.period | 5m | Check interval |
ddns.httpTimeout | 10s | HTTP timeout |
ddns.publicIpFetchers | all | IP detection method |
ddns.logLevel | info | Log level |
ddns.port | 8000 | Web UI container port |
persistence.enabled | true | Persist update history |
persistence.size | 256Mi | PVC size |
ingress.enabled | false | Enable ingress for web UI |
More Information
See the source code and full values reference on GitHub.