Why Technitium?
Technitium DNS Server is often overlooked but is arguably the most feature-complete self-hosted DNS solution available. Unlike Pi-hole which layers on top of dnsmasq, Technitium is a full DNS server with authoritative zone management, recursive resolution, and extensive protocol support — all in a single application with a gorgeous web UI.
| Feature | Technitium | Pi-hole | AdGuard Home |
|---|---|---|---|
| Authoritative DNS | ✅ Full | ❌ | ❌ |
| Recursive resolver | ✅ Built-in | ❌ (needs Unbound) | ❌ (needs Unbound) |
| DoH / DoT / DoQ | ✅ All three | ❌ | ✅ DoH + DoT |
| Zone management | ✅ Full GUI | ❌ | ❌ |
| App ecosystem | ✅ Plugin apps | ❌ | ❌ |
| DNSSEC signing | ✅ Built-in | ❌ | ❌ |
| Ad blocking | ✅ Built-in | ✅ Excellent | ✅ Built-in |
| Setup ease | Medium | Easy | Easy |
Prerequisites
Step-by-Step Installation
Free Port 53 from systemd-resolved
# Check what's on port 53:
sudo ss -tulpn | grep :53
# Disable the stub resolver:
sudo nano /etc/systemd/resolved.conf
# Change: #DNSStubListener=yes
# To: DNSStubListener=no
sudo systemctl restart systemd-resolved
# Verify port 53 is now free:
sudo ss -tulpn | grep :53
Install Technitium DNS Server
Technitium provides an automated install script that handles .NET runtime installation and service setup:
curl -sSL https://download.technitium.com/dns/install.sh | sudo bash
The installer will download .NET, the DNS server binary, and register a systemd service. The whole process takes a few minutes.
Access the Web Interface
Open a browser and go to port 5380 on your Pi:
http://192.168.1.100:5380
On first access, you'll be prompted to create an admin username and password. Choose something strong — this controls your entire DNS server.
Configure General Settings
In the web UI: Settings → General
# Recommended settings:
- DNS Server Domain: dns.home.local (or your choice)
- Enable DNS-over-HTTPS: Yes (if you have a certificate)
- Enable DNS-over-TLS: Yes
- Enable QNAME Minimization: Yes (privacy)
- Enable DNSSEC Validation: Yes
Enable Recursive Resolver
Technitium can resolve DNS queries directly from root servers without any upstream forwarder:
# In Settings → Recursion:
- Allow Recursion: Yes
- Use Self as DNS Forwarder: No (for true recursion)
# Or go to Settings → Forwarders if you prefer
# to use an upstream provider like Cloudflare
✅ With recursion enabled, Technitium queries root servers directly — no external DNS provider needed.
Enable Ad Blocking
Go to the Block List section in the web UI:
# Add block lists via URL:
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://adaway.org/hosts.txt
# Or use the built-in Apps:
# Go to Apps → Get Apps → Install "Block Page"
# Then configure block lists through the app
# Force update all lists:
# Block List → Update All
Create Local DNS Zones (Optional)
One of Technitium's standout features — manage DNS for your local network:
# Go to Zones → Add Zone
# Zone Name: home.local
# Type: Primary Zone
# Then add A records:
# Name: nas → IP: 192.168.1.200
# Name: printer → IP: 192.168.1.201
# etc.
# Now all devices on your network can reach:
# nas.home.local, printer.home.local
Point Your Router to Technitium
In your router's admin panel, set the Primary DNS server to your Pi's static IP (e.g. 192.168.1.100). All network devices will now use Technitium for DNS.
# Verify from any device on your network:
nslookup google.com 192.168.1.100
# Check Technitium service status:
sudo systemctl status technitium-dns
Useful Commands
| Task | Command |
|---|---|
| Check status | sudo systemctl status technitium-dns |
| Restart service | sudo systemctl restart technitium-dns |
| View logs | sudo journalctl -u technitium-dns -f |
| Update Technitium | curl -sSL https://download.technitium.com/dns/install.sh | sudo bash |
| Config location | /etc/dns/ |
| Data directory | /etc/dns/config/ |
| Web UI port | 5380 (HTTP) or 53443 (HTTPS) |
Technitium Apps
Technitium has a built-in app store for extending functionality. Notable apps include: