Sign inSign up

catokx/driftdns

By catokx

Updated 6 months ago

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

Image
Networking
0

757

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

6 months ago

docker pull catokx/driftdns