Sign inSign up

catokx/driftdns

By catokx

•Updated 7 months ago

Modern self-hosted Dynamic DNS service with web UI and automatic Route53 and Cloudflare updates.

Image
Networking
0

794

catokx/driftdns repository overview

⁠DriftDNS

Self-hosted Dynamic DNS (DDNS) manager with web UI. Automatically updates DNS records on Route53 and Cloudflare when your public IP changes.

Docker Pulls Docker Image Size GitHub


⁠What is DriftDNS?

DriftDNS is a lightweight, self-hosted DDNS solution designed for homelab users, developers, and anyone running services behind a dynamic public IP address. It continuously monitors your public IP and automatically updates your DNS records on supported providers — no scripts, no cron jobs, no manual work.

Perfect for keeping services like Home Assistant, Nextcloud, Plex, VPN servers, and NAS devices reachable from the internet even when your ISP changes your IP.


⁠Features

  • Automatic IP detection — monitors your public IP and detects changes in real time
  • Multi-provider support — works with AWS Route53 and Cloudflare (more coming soon)
  • Web dashboard — manage DNS records, providers, and sync history from a browser UI
  • Manual sync trigger — force a sync anytime from the dashboard
  • Sync logs & history — configurable log retention so you can audit every update
  • Configurable sync interval — set how often DriftDNS checks for IP changes
  • Single Docker container — no external dependencies, runs anywhere Docker runs
  • Secure credential storage — provider credentials are never stored in plain text
  • Extensible architecture — built to support additional DNS providers

⁠Supported DNS Providers

ProviderStatus
AWS Route53✅ Stable
Cloudflare✅ Stable
Azure DNS🔜 Planned
Google Cloud DNS🔜 Planned

⁠Quick Start

services:
  driftdns:
    image: catokx/driftdns:latest
    container_name: driftdns
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - driftdns-data:/app/data

volumes:
  driftdns-data:
docker compose up -d
⁠Docker Run
docker run -d \
  --name driftdns \
  --restart unless-stopped \
  -p 8080:8080 \
  -v driftdns-data:/app/data \
  catokx/driftdns:latest

Then open http://localhost:8080⁠ and configure your DNS provider and endpoints from the dashboard.

You can also pin a specific version: catokx/driftdns:0.2.4


⁠Configuration

All configuration is handled through the Settings page in the web dashboard (sync interval, log retention, etc.).

To run on a different host port, adjust the port mapping:

ports:
  - "9090:8080"  # DriftDNS available on port 9090
⁠Advanced Environment Variables
VariableDefaultDescription
DatabasePath/app/data/app.dbCustom path for the SQLite database
ASPNETCORE_URLShttp://+:8080Internal listening port

⁠Updating

Docker Compose:

docker compose pull
docker compose up -d

Docker Run:

docker pull catokx/driftdns:latest
docker stop driftdns && docker rm driftdns
docker run -d --name driftdns --restart unless-stopped \
  -p 8080:8080 -v driftdns-data:/app/data \
  catokx/driftdns:latest

Your data is preserved across updates — the named volume driftdns-data persists automatically.


⁠Common Use Cases

  • Expose Home Assistant from a home network with a dynamic IP
  • Keep a VPN server (WireGuard, OpenVPN) always reachable
  • Host Nextcloud, Plex, or Jellyfin on a home server
  • Manage multiple domains across Route53 and Cloudflare from one place
  • Replace fragile DDNS scripts in your homelab

⁠Tech Stack

Built with ASP.NET Core 9, Blazor Server, Entity Framework Core, and SQLite. Runs as a single self-contained Docker image — no external database required.


Tag summary

Content type

Image

Digest

sha256:4026d544d…

Size

125.2 MB

Last updated

7 months ago

docker pull catokx/driftdns