Skip to content
Open console

Technitium DNS Server

Technitium DNS Server is an open-source DNS server with a web administration console. It can run as an authoritative DNS server, recursive resolver, forwarding resolver, and DNS management platform from a ZCP instance.

ComponentVersion
Technitium DNS Server15.4.0
Ubuntu24.04 LTS
ResourceMinimumRecommended
vCPU12
RAM1 GB2 GB
Storage10 GB20 GB

If deployment variable fields are available in your launch flow, use them there. Otherwise, provide the same values through user data that writes /etc/zmi/deploy.env, or configure them after first boot. Leave the admin password blank to generate a secure random password.

VariableDescription
DNS_SERVER_ADMIN_PASSWORDAdmin password for the admin web console user
DNS_SERVER_DOMAINPrimary domain name used by the DNS server
DNS_SERVER_WEB_SERVICE_LOCAL_ADDRESSESAdmin UI listen addresses. Defaults to 0.0.0.0,[::]
DNS_SERVER_RECURSIONRecursion policy. Defaults to AllowOnlyForPrivateNetworks
DNS_SERVER_RECURSION_NETWORK_ACLACL used when recursion is UseSpecifiedNetworkACL
DNS_SERVER_FORWARDERSComma-separated upstream resolvers, such as 1.1.1.1,9.9.9.9
DNS_SERVER_FORWARDER_PROTOCOLForwarder protocol: Udp, Tcp, Tls, Https, or HttpsJson
ssh ubuntu@<your-vm-ip>

On first boot, the setup service configures Technitium, starts dns.service, and writes credentials to a root-only file. Track progress:

sudo journalctl -u technitium-first-boot.service -f
sudo cat /etc/dns/credentials.txt

The file contains the admin UI URL, username, password, DNS server domain, recursion mode, and forwarder settings.

4. Access the admin UI through an SSH tunnel

Section titled “4. Access the admin UI through an SSH tunnel”

Run this from your workstation:

ssh -L 5380:127.0.0.1:5380 ubuntu@<your-vm-ip>

Then open:

http://127.0.0.1:5380/

Log in with username admin and the password from /etc/dns/credentials.txt. Do not submit administrator credentials through public HTTP.

From the VM:

dig @127.0.0.1 example.com

From another trusted host:

dig @<your-vm-ip> example.com
# Check service status
systemctl status dns.service
# Restart
sudo systemctl restart dns.service
# View logs
sudo journalctl -u dns.service -f

Common paths:

PathPurpose
/opt/technitium/dns/Technitium application files
/etc/dns/Configuration and ZMI credentials
/etc/default/technitium-dnsFirst-boot generated environment
/etc/systemd/system/dns.service.d/zmi-environment.confSystemd environment drop-in

Open by default:

PortProtocolPurpose
22TCPSSH
53TCP/UDPDNS
5380TCPAdmin web console (access through an SSH tunnel)

Optional ports:

PortProtocolPurpose
53443TCPAdmin web console HTTPS
853TCPDNS-over-TLS
853UDPDNS-over-QUIC
443TCP/UDPDNS-over-HTTPS and HTTP/3
80TCPDNS-over-HTTP, reverse proxy, or ACME
67UDPDHCP service

Open optional ports only when you enable the matching feature.

Avoid running an open public recursive resolver. Keep the default AllowOnlyForPrivateNetworks recursion policy or configure a specific trusted recursion ACL. Restrict port 5380 to trusted access and use an SSH tunnel for the admin console.

Ask the ZCP docs

Type a question and pick an assistant. The assistant opens in a new tab and reads this page and the full ZCP documentation, so its answer comes from our docs.

Example questions

Ask with

Your question goes to the assistant you pick, under its own terms.