Setting Up Technitium DNS

A feature-complete, authoritative and recursive DNS server with one of the most polished web interfaces in the self-hosting world. Blocking, zones, DoH, DoT, apps — all included.

Authoritative DNS Recursive Resolver DoH · DoT · DoQ Free & Open Source

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.

FeatureTechnitiumPi-holeAdGuard 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 easeMediumEasyEasy

Prerequisites

Hardware
Raspberry Pi 4 or Pi 5 recommended — Pi 3 works fine too
.NET Runtime
Technitium runs on .NET — the installer handles this automatically
Port 53
Must be free — disable systemd-resolved stub listener
Static IP
Assign a static IP to your Pi for reliable DNS service

Step-by-Step Installation

01

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
02

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.

03

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.

04

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
05

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.

06

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
07

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
08

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

TaskCommand
Check statussudo systemctl status technitium-dns
Restart servicesudo systemctl restart technitium-dns
View logssudo journalctl -u technitium-dns -f
Update Technitiumcurl -sSL https://download.technitium.com/dns/install.sh | sudo bash
Config location/etc/dns/
Data directory/etc/dns/config/
Web UI port5380 (HTTP) or 53443 (HTTPS)

Technitium Apps

Technitium has a built-in app store for extending functionality. Notable apps include:

Block Page
Show a custom block page instead of NXDOMAIN when ads are blocked
NX Domain
Return NXDOMAIN for blocked queries instead of 0.0.0.0
SSHBL
SSH brute-force blocklist integration
Failover
Automatic DNS failover for high-availability setups