A lightweight, high-performance DNS server built for Raspberry Pi 3B. Blocks ads, manages authoritative zones, syncs across nodes — all in ~25 MB RAM.
Every existing DNS blocker was either too heavy for a Raspberry Pi 3B, or lacked the features needed for a proper home network.
Great at blocking ads, but dnsmasq underneath uses 80+ MB RAM, has no authoritative zone support, and integrating DHCP DDNS requires complex workarounds.
Polished UI and good blocking, but 120+ MB RAM footprint, no authoritative DNS, no zone transfers, and no native DDNS support.
Feature-complete DNS server, but runs on .NET (200+ MB RAM), requires more complex setup, and its file sync isn't designed for Pi hardware.
Single Go binary, ~25 MB RAM, full authoritative DNS, RFC 2136 DDNS, Split-Horizon, Master/Slave cluster — no database, just JSON files.
How DomU DNS stacks up against the most popular alternatives on Raspberry Pi 3B.
| Feature | DomU DNS | PiHole | AdGuard | Technitium |
|---|---|---|---|---|
| RAM on Pi 3B | ~25 MB | ~80 MB | ~120 MB | ~200 MB |
| Authoritative DNS | ✓ | ✗ | ✗ | ✓ |
| RFC 2136 DDNS | ✓ | ✗ | ✗ | Partial |
| Split-Horizon DNS | ✓ | ✗ | ✗ | ✗ |
| Zone Transfer AXFR | ✓ | ✗ | ✗ | ✓ |
| Master/Slave Cluster | ✓ | ✗ | ✗ | ✓ |
| DoH + DoT | ✓ | Partial | ✓ | ✓ |
| DNS Rebinding Protection | ✓ | ✓ | ✓ | ✓ |
| No database required | ✓ | ✗ | ✗ | ✗ |
| Built-in Dashboard | ✓ | ✓ | ✓ | ✓ |
| Runtime | Go binary | Python + dnsmasq | Go | .NET |
Built specifically for resource-constrained hardware without sacrificing functionality.
220k+ domains from curated sources. O(1) hash lookup, wildcard and regex support.
Full support for A, AAAA, MX, CNAME, PTR, TXT, SRV, CAA, NS records. JSON file backend.
ISC dhcpd / Kea DHCP integration via TSIG-authenticated DNS updates. Auto PTR records.
Different answers for internal vs external clients. Perfect for accessing services by name.
File-based sync with HMAC-SHA256 authentication. No database, just atomic JSON writes.
DNS over HTTPS (RFC 8484) and DNS over TLS (RFC 7858) with your own certificates.
Blocks external domains resolving to private IPs. Defends against SSRF attacks.
Real-time statistics, zone management, query log, cluster status — all in one UI.
No database setup. No Docker required. Just copy the binary, write a config file, start the service.
Cross-compile for ARMv7 on your local machine.
Copy the binary and a minimal config file.
Install the systemd service and start.
# 1. Clone & build for Pi 3B (ARMv7) git clone https://github.com/mw7101/domudns.git cd domudns && make build-arm # 2. Copy binary to Pi scp build/domudns-arm pi@dns-node-1:/usr/local/bin/domudns ssh pi@dns-node-1 "chmod +x /usr/local/bin/domudns" # 3. Install & start service sudo cp scripts/domudns.service /etc/systemd/system/ sudo systemctl enable --now domudns # 4. Open dashboard http://<pi-ip>/setup # First-time setup wizard
Everything you need to get DomU DNS running.