
Deploy CloudFlare DDNS on Your Own Server
This small image will allow you to use the free CloudFlare DNS Service as a Dynamic DNS Provider (DDNS).
Want to deploy CloudFlare DDNS on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.
What is CloudFlare DDNS?
This small Alpine Linux based Docker image will allow you to use the free CloudFlare DNS Service as a Dynamic DNS Provider (DDNS). Default values are tuned to work with Senate. To create a CloudFlare API token for your DNS zone go to https://dash.cloudflare.com/profile/api-tokens and follow these steps: 1 - Click Create Token 2 - Provide the token a name, for example, cloudflare-ddns 3 - Grant the token the following permissions: Zone - Zone Settings - Read Zone - Zone - Read Zone - DNS - Edit 4 - Set the zone resources to: Include - All zones 5 - Complete the wizard and copy the generated token into the Cloudflare API token field
Self-Host CloudFlare DDNS
Follow these steps to deploy on your own server.
Install Docker
Skip this step if Docker is already installed on your server.
curl -fsSL https://get.docker.com | sh
Configure
Customize the settings below. Defaults work for most cases.
General
Deploy
Copy the configuration and run it on your server.
services:
cloudflareddns:
image: oznu/cloudflare-ddns:latest
environment:
API_KEY: ""
CRON: "*/5 * * * *"
DNS_SERVER: 1.1.1.1
PROXIED: "false"
RRTYPE: A
SUBDOMAIN: "*"
ZONE: ${root_domain}
Then run:
docker compose up -d
Access
Once started, access your app at http://localhost:80
Why Self-Host CloudFlare DDNS?
Full Data Ownership
Your data stays on your servers. No third-party access.
No Monthly Fees
Pay only for your server. No per-seat or usage charges.
Complete Control
Customize, backup, and scale on your own terms.
Privacy & Compliance
Meet GDPR, HIPAA, or internal security requirements.
Technical Details
Docker Image
oznu/cloudflare-ddns:latestWant to go faster?
Try Senate! Senate handles Docker, HTTPS, updates, and monitoring for you. Deploy any of our 300+ apps with a single command.
Install on any Linux server:
sh -c "$(curl -sSL https://get.senate.sh)"