Overview
DriftDNS is a self-hosted dynamic DNS updater designed for developers and infrastructure enthusiasts who run services from home networks, VPS instances with volatile IPs, or any environment where the public IP address changes over time.
The problem it solves is straightforward: DNS records pointing to your services go stale when your IP changes. Commercial solutions exist, but they often come with vendor lock-in, pricing, or require more trust than you want to give to a third party. DriftDNS puts that control back in your hands.
What it does
- Monitors your public IP address at a configurable interval
- Detects IP changes and automatically updates DNS A records via your DNS provider’s API
- Supports major DNS providers including Cloudflare
- Runs as a lightweight container with minimal resource footprint
- Provides structured logging for observability
- Handles transient failures with retry logic and configurable backoff
Design philosophy
The tool was built with three priorities:
Simplicity. A single configuration file, minimal dependencies, and a Docker image that runs anywhere. No databases, no web UI, no unnecessary complexity.
Reliability. DNS is infrastructure. When it fails, things break in non-obvious ways. DriftDNS is designed to be boring and correct — retry on failure, log everything, alert when needed.
Ownership. Self-hosting means you control the full stack. DriftDNS has no telemetry, no external calls beyond your DNS provider, and no hidden dependencies.
Technical details
DriftDNS is built with Blazor and C# on .NET, providing a clean and maintainable codebase with strong typing throughout. It uses provider-specific API clients (starting with Cloudflare) to update DNS records, and exposes a clean configuration interface through environment variables and a YAML config file.
The architecture is intentionally simple: a polling loop, IP detection, comparison against last-known state, and conditional API calls. This makes it easy to audit, extend, or fork for custom DNS providers.
AWS infrastructure is used for hosting and deployment, with Docker handling containerisation and a docker-compose reference configuration that covers the most common self-hosted use case in a few lines.
Status
Actively maintained. The project is functional and in use. Planned improvements include support for additional DNS providers and IPv6 record (AAAA) updates.