Skip to content

First Use

You've deployed Dreadnought and it's running. This guide walks through logging in and setting up your first domain and DNS record.


Logging In

Open the web dashboard in your browser:

  • Local access: http://localhost:8082
  • LAN access: http://your-server-ip:8082
  • Public access: https://ddns.yourdomain.com (if you've set up a reverse proxy)

Enter the ADMIN_EMAIL and ADMIN_PASSWORD you set in your .env file and click Log In.

First-time setup: The admin user is created automatically from your .env values the first time the API starts. You don't need to register or confirm an email.


The Dashboard

After logging in, you'll see the Dashboard:

  • Current IP (IPv4): The public IP address the worker last detected
  • Current IP (IPv6): Detected IPv6 address (if IPV6_ENABLED=true)
  • Last Sync: When the worker last ran its sync cycle
  • Last Sync Result: Summary of what the last sync did
  • Record Count: How many DNS records are being tracked

The worker polls your IP every POLL_INTERVAL_SECONDS (default: 5 minutes). If you just deployed, it may show "No sync yet" until the first poll completes.


Step 1 — Add a Domain

Before adding DNS records, you need to register the Cloudflare zone (domain) in Dreadnought.

  1. Click Domains in the navigation bar
  2. Click Add Domain
  3. Fill in:
  4. Domain Name: The root domain, e.g. example.com
  5. Zone ID: The Cloudflare Zone ID for this domain
  6. Click Save

Finding your Zone ID: 1. Log into Cloudflare 2. Click on your domain 3. On the Overview page, look in the right sidebar 4. Copy the Zone ID (a 32-character string like a1b2c3...)

See Cloudflare Setup for more detail.

You can add multiple domains if you manage multiple Cloudflare zones.


Step 2 — Add DNS Records

Now tell Dreadnought which DNS records to keep updated.

  1. Click Records in the navigation
  2. Click Add Record
  3. Fill in:
Field Description Example
Domain Select from your registered domains example.com
Host Subdomain prefix, or @ for the root domain vpn, @, www
Type Record type — A for IPv4, AAAA for IPv6 A
Proxied Enable Cloudflare proxy (orange cloud) ✓ or ☐
TTL Time-to-live in seconds. 1 = Cloudflare Auto 300
  1. Click Create

The record is immediately synced to Cloudflare with your current public IP — no waiting for the next poll cycle.

Host Examples

What you want Host value Resulting FQDN
Root domain (example.com) @ example.com
www subdomain www www.example.com
VPN endpoint vpn vpn.example.com
Home server home home.example.com
Wildcard * *.example.com

Proxied vs. Non-Proxied

Setting Traffic flows through Use when
Proxied (orange cloud) Cloudflare's CDN Website or service where you want Cloudflare protection/caching
Not proxied (grey cloud) Directly to your IP VPN endpoints, game servers, anything that needs a real IP

Note: Proxied records always use TTL 300 (Auto) regardless of the TTL value you set — this is a Cloudflare limitation.


Step 3 — Verify the Record in Cloudflare

After creating a record in Dreadnought:

  1. Go to your domain in Cloudflare
  2. Click DNS → Records
  3. You should see an A record (or AAAA if IPv6) with your current public IP

If the record doesn't appear within a minute, check: - The Dreadnought API logs: docker compose logs api - That your CF_API_TOKEN has the correct permissions


The Audit Log

Every sync is logged. To view the history:

  1. Click Audit Log (or similar) in the navigation
  2. Each entry shows:
  3. Timestamp
  4. Action (e.g. bulk_sync, immediate_sync)
  5. Details (records updated, IP addresses, duration)

This is useful for verifying that syncs are happening and diagnosing issues.


Settings Page

The Settings page lets you adjust runtime configuration without editing .env:

Setting What it does
Poll Interval Change how often the worker checks for IP changes (60–7200 seconds)
IPv6 Enabled Toggle IPv6 detection on/off
Discord Webhook URL Set or update the Discord notification webhook

Changes take effect on the next worker cycle. The worker picks up new settings from the database automatically.


Common First-Use Scenarios

"My record was created but has the wrong IP"

The record was synced with the current detected IP. If that IP is wrong: 1. Check Dashboard to see what IP was detected 2. Test IP detection manually: curl https://api.ipify.org 3. If the IPs match but it's still wrong, your IP detection may be going through a VPN or proxy

"I created a record but it doesn't appear in Cloudflare"

Check the API logs:

docker compose logs api --tail 30

Look for errors referencing the Cloudflare API. Common causes: - CF_API_TOKEN missing or invalid - Token doesn't have Zone → DNS → Edit permission - Zone ID doesn't match the domain

"I want to manage records for two different Cloudflare accounts"

Not currently supported — one CF_API_TOKEN manages one Cloudflare account. If you have multiple accounts, you'd need separate Dreadnought instances.

"I enabled IPv6 but AAAA records aren't being created"

  1. Check that IPV6_ENABLED=true in your .env
  2. Check that your server actually has IPv6 connectivity: curl https://api6.ipify.org
  3. Restart the worker: docker compose restart worker
  4. Check worker logs: docker compose logs worker

If your server doesn't have an IPv6 address, the worker will log a detection failure and skip AAAA records.