Technitium DNS Server is a free, open-source DNS server with a web dashboard, recursive DNS support, DNS blocking, DHCP options, and DNS-over-HTTPS/DNS-over-TLS features. This guide installs it on Ubuntu Server and walks through the default first-time configuration.
Requirements
Use a clean Ubuntu Server VM or physical server with:
- Ubuntu Server 22.04, 24.04, or newer
- Static IP address
- sudo access
- Ports available:
53/tcp,53/udp, and5380/tcp
Technitium’s web console runs on port 5380, and the DNS service listens on port 53.
Step 1: Update Ubuntu
sudo apt update
sudo apt upgrade -y
sudo reboot
After reboot, reconnect with SSH.
Step 2: Set a Static IP Address
Technitium should run on a server with a fixed LAN IP address.
Example:
Server IP: 192.168.1.10
Gateway: 192.168.1.1
DNS: 1.1.1.1
On Ubuntu Server, edit your Netplan file:
ls /etc/netplan/
sudo nano /etc/netplan/00-installer-config.yaml
Example configuration:
network:
version: 2
ethernets:
ens18:
dhcp4: no
addresses:
- 192.168.1.10/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
Apply it:
sudo netplan apply
ip a
Step 3: Install curl
sudo apt install curl -y
Step 4: Install Technitium DNS Server
Run the official installer:
curl -sSL https://download.technitium.com/dns/install.sh | sudo bash
Technitium’s official install command uses this script, and the web console is accessed from port 5380. The default first login is admin / admin, and Technitium recommends changing the password right away.
Step 5: Check the Service
sudo systemctl status dns
If needed, start or restart it:
sudo systemctl enable dns
sudo systemctl restart dns
Check listening ports:
sudo ss -tulpn | grep -E ':53|:5380'
You should see Technitium listening on DNS port 53 and web console port 5380.
Step 6: Open the Firewall
If UFW is enabled, allow DNS and the web dashboard:
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
sudo ufw allow 5380/tcp
sudo ufw reload
Check status:
sudo ufw status
Step 7: Log In to the Web Dashboard
From another computer on your network, open:
http://192.168.1.10:5380
Replace 192.168.1.10 with your Ubuntu Server’s IP address.
Default login:
Username: admin
Password: admin
Immediately change the admin password.
Go to:
Administration → Change Password
Step 8: Default DNS Configuration
Technitium can work as a recursive DNS resolver by default. That means it can resolve DNS directly without using Google, Cloudflare, or your ISP. Technitium also allows optional forwarders if you prefer using upstream DNS providers.
Recommended beginner setup:
Go to:
Settings → Proxy & Forwarders
Choose one of these options:
Option A: Use Recursive DNS
Leave forwarders blank.
This lets Technitium resolve DNS itself.
Option B: Use Forwarders
Add trusted DNS servers, for example:
1.1.1.1
1.0.0.1
8.8.8.8
8.8.4.4
Save the settings.
Step 9: Enable DNS Blocking
Go to:
Blocked → Block List URLs
Add a block list, such as:
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
Click:
Save → Update Now
Then test by browsing from a client that uses Technitium as DNS.
Step 10: Point Your Network to Technitium
Log in to your router or DHCP server and set the DNS server to your Technitium server IP:
Primary DNS: 192.168.1.10
Secondary DNS: optional backup DNS
Restart or renew DHCP on your client devices.
On Windows:
ipconfig /flushdns
ipconfig /renew
On Linux:
sudo resolvectl flush-caches
Test DNS:
nslookup google.com 192.168.1.10
Step 11: Optional Local DNS Zone
To create local names such as:
nas.home.local
pve.home.local
router.home.local
Go to:
Zones → Add Zone
Example:
Zone: home.local
Type: Primary Zone
Then add records:
nas A 192.168.1.20
pve A 192.168.1.30
router A 192.168.1.1
Now clients using Technitium can resolve:
nas.home.local
pve.home.local
router.home.local
Step 12: Fix Port 53 Conflicts
If Technitium fails to start or DNS does not work, check whether something else is using port 53:
sudo ss -tulpn | grep ':53'
On Ubuntu, systemd-resolved can sometimes bind DNS ports. Technitium’s Ubuntu notes mention this as a common conflict, especially on systems where another resolver is already listening on port 53.
To disable the local stub resolver:
sudo systemctl disable --now systemd-resolved
sudo unlink /etc/resolv.conf
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf
sudo systemctl restart dns
Check again:
sudo systemctl status dns
sudo ss -tulpn | grep ':53'
Step 13: Backup Technitium
In the web dashboard, go to:
Settings → Backup
Download a backup after you finish configuration.
You should also keep a copy before major upgrades.
Step 14: Update Technitium
To update using the installer again:
curl -sSL https://download.technitium.com/dns/install.sh | sudo bash
sudo systemctl restart dns
Check status:
sudo systemctl status dns
Final Recommended Defaults
For a home lab or small network, these are good starting settings:
Server IP: Static LAN IP
Admin Password: Changed immediately
DNS Mode: Recursive or trusted forwarders
Block Lists: Enabled
Local Zones: Optional
Router DHCP DNS: Technitium server IP
Firewall: Allow 53/tcp, 53/udp, 5380/tcp
Backup: Download after setup
Technitium is now installed and ready to act as your network DNS server. See their blog post here https://blog.technitium.com/2017/11/running-dns-server-on-ubuntu-linux.html
Let us know if you need help we are on discord in the PiHobby Bog Channel: https://discord.gg/mKkBSXuD4 also you can email us through this site.