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, and 5380/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.

By Michael Cooper

33 years in IT. I am now retired and having fun with all my skills.

Leave a Reply

Your email address will not be published. Required fields are marked *