Skip to content

Overview

What is Dreadnought DDNS Manager?

Dreadnought DDNS Manager is a self-hosted Dynamic DNS (DDNS) tool that automatically keeps your Cloudflare DNS records pointing at your home or office IP address — even when your ISP changes it.

Most residential and small-business internet connections use a dynamic IP address: the number changes occasionally (sometimes daily, sometimes monthly) without warning. If you're hosting anything at home — a VPN, a media server, a home assistant, a game server — and you've pointed a domain name at your IP, that domain will break every time your IP changes.

Dreadnought solves this by: 1. Continuously monitoring what your public IP address is 2. Comparing it to the IP stored in your Cloudflare DNS records 3. Automatically updating those records the moment your IP changes

It also gives you a web dashboard to manage all your domains and records in one place, instead of logging into Cloudflare every time.


Key Features

Feature What it means for you
Automatic IP detection Checks your IPv4 (and optionally IPv6) on a schedule you configure
Immediate sync on change When you add or edit a record in the UI, it hits Cloudflare instantly — no waiting for the next poll
Multi-domain support Manage as many Cloudflare zones as you want from one dashboard
Bulk import Migrate a list of existing records at once with a dry-run preview before committing
Audit log Full history of every sync — what changed, when, and what IP it was
Discord notifications Optional alerts in a Discord channel when your IP changes or an error occurs
Dark mode System-aware, also manually togglable
Docker-native One command to start, works on a Raspberry Pi all the way up to a cloud server

How It Works

Dreadnought is made of three components that run together:

┌─────────────────────────────────────────────────────────────────────┐
│  Your browser                                                       │
│  visits http://your-server:8082                                     │
└──────────────────────────────┬──────────────────────────────────────┘
                               │
                    ┌──────────▼──────────┐
                    │   Next.js Frontend   │  Web dashboard (port 8082)
                    │   (React / Tailwind) │  All the UI you interact with
                    └──────────┬──────────┘
                               │  REST API calls
                    ┌──────────▼──────────┐
                    │   FastAPI Backend    │  REST API (port 8081)
                    │   (Python 3.12)      │  Authentication, record management,
                    │                     │  Cloudflare integration
                    └──────────┬──────────┘
                               │
                    ┌──────────▼──────────┐
                    │   SQLite Database    │  Stored in ./data/ddns.db
                    │                     │  Domains, records, settings, audit log
                    └─────────────────────┘

┌─────────────────────────────────────────────────────────────────────┐
│  APScheduler Worker  (background, no exposed port)                  │
│                                                                     │
│  Every N seconds (default: 300):                                    │
│  1. Detect current public IPv4 (and IPv6 if enabled)               │
│  2. Compare to last known IP in database                            │
│  3. If changed → sync all tracked records to Cloudflare            │
│  4. Log results to audit log                                        │
│  5. Send Discord notification (if configured)                       │
└─────────────────────────────────────────────────────────────────────┘

IP Detection

The worker uses multiple fallback endpoints to detect your IP:

  • IPv4: api.ipify.org, icanhazip.com, ifconfig.me/ip, ipecho.net/plain
  • IPv6: api6.ipify.org, ifconfig.co/ip, v6.ident.me

If one endpoint is down, the next one is tried automatically. All results are validated as real IP addresses before being used.

Sync Logic

When your IP changes: 1. The worker fetches every record you've marked as tracked 2. For each record, it calls the Cloudflare API to set the A (or AAAA) record to your new IP 3. Cloudflare updates immediately — your domain follows your IP within seconds

When you create or edit a record in the UI: - The backend syncs it to Cloudflare right away, without waiting for the next poll cycle


What You Need

Required

  • A Cloudflare account with at least one domain managed by Cloudflare
  • Docker installed on whatever machine will run the app (a Raspberry Pi, a home server, a VPS, etc.)

Optional

  • A reverse proxy (Nginx, Traefik, Caddy) if you want to access the dashboard over HTTPS with a real domain name
  • A Discord webhook if you want IP-change notifications

What Cloudflare Does (and Doesn't Do)

Dreadnought only manages DNS records in Cloudflare. It does not touch: - Your Cloudflare account settings - Other DNS record types (MX, TXT, CNAME, etc.) - Cloudflare Pages, Workers, or any other Cloudflare product

The API token you create has the minimum permissions needed: read zone information and edit DNS records.


Database

Dreadnought uses SQLite — a single file (ddns.db) that lives in a ./data folder next to your docker-compose.yml. There's no separate database server to manage. Backups are as simple as copying that one file.


Next Steps