Deploying Technitium DNS Server
Introduction
Technitium DNS Server is a feature-rich, open-source DNS server with built-in support for DNS-over-HTTPS (DoH) and DNS-over-TLS (DoT). It provides network-wide ad blocking, detailed DNS analytics, and privacy-focused features.
Key highlights of Technitium DNS Server:
- DNS-over-HTTPS/TLS: Encrypted DNS for privacy
- Ad Blocking: Built-in ad blocking with blocklists
- DNSSEC Validation: Secure DNS response validation
- Caching: Advanced DNS caching for performance
- Zone Management: Host your own DNS zones
- Query Logging: Detailed DNS query logs and analytics
- Dashboard: Web-based administration interface
- Forwarding: Configure upstream DNS resolvers
- Failover: Multiple DNS forwarder support
- Cross-Platform: Works on Windows, Linux, and macOS
This guide walks through deploying Technitium DNS Server on Klutch.sh using Docker.
Why Deploy Technitium DNS Server on Klutch.sh
Deploying Technitium DNS Server on Klutch.sh provides several advantages:
Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds the DNS server without complex orchestration.
Persistent Storage: Attach persistent volumes for zones, blocklists, and configuration.
HTTPS by Default: Secure admin interface with automatic SSL certificates.
GitHub Integration: Connect your configuration repository for automatic redeployments.
Prerequisites
Before deploying Technitium DNS Server on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your configuration
- Basic familiarity with Docker and containerization concepts
- Understanding of DNS concepts
Deploying Technitium DNS Server on Klutch.sh
- Select HTTP as the traffic type
- Set the internal port to 5380 (admin web interface)
Create Your Repository
Create a new GitHub repository with a Dockerfile for Technitium DNS Server:
FROM technitium/dns-server:latest
ENV DNS_SERVER_DOMAIN=${DNS_SERVER_DOMAIN}ENV DNS_SERVER_ADMIN_PASSWORD=${DNS_SERVER_ADMIN_PASSWORD}ENV DNS_SERVER_LOG_USING_LOCAL_TIME=true
EXPOSE 5380EXPOSE 53/udpEXPOSE 53/tcpEXPOSE 853EXPOSE 443
VOLUME ["/etc/dns"]Push to GitHub
Initialize and push your repository to GitHub with your Dockerfile.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project.
Create a New App
Within your project, create a new app and connect your GitHub repository.
Configure HTTP Traffic
In the deployment settings:
Set Environment Variables
Configure the following environment variables:
| Variable | Value |
|---|---|
DNS_SERVER_DOMAIN | Your DNS server domain |
DNS_SERVER_ADMIN_PASSWORD | Secure admin password |
DNS_SERVER_LOG_USING_LOCAL_TIME | true |
Attach Persistent Volumes
Add the following volumes:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/etc/dns | 5 GB | Zones, blocklists, logs, and configuration |
Deploy Your Application
Click Deploy to start the build process.
Access Technitium DNS Server
Once deployment completes, access the admin interface at your app URL.
Configuration
Initial Access
Log in to the admin panel:
- Navigate to your Technitium URL (port 5380)
- Log in with admin credentials
- Complete initial setup wizard
Configuring Ad Blocking
Enable ad blocking:
- Navigate to Settings > Blocking
- Enable ad blocking
- Add blocklists (e.g., Steven Black’s hosts, EasyList)
- Configure block response type
Setting Up DNS-over-HTTPS
Configure DoH:
- Navigate to Settings > DNS Settings
- Enable DNS-over-HTTPS
- Configure certificate (or use built-in)
- Share DoH URL with clients
Adding Custom Zones
Create your own DNS zones:
- Navigate to Zones
- Click Add Zone
- Enter zone name
- Add DNS records (A, AAAA, CNAME, MX, etc.)
Configuring Forwarders
Set upstream DNS resolvers:
- Navigate to Settings > Forwarders
- Add forwarder addresses
- Configure forwarder protocol (UDP, TCP, DoH, DoT)
- Set timeout and retry values
Additional Resources
- Technitium DNS Server Official Website
- Technitium DNS Server GitHub Repository
- Technitium DNS Documentation
- Klutch.sh Persistent Volumes
- Klutch.sh Deployments
Conclusion
Deploying Technitium DNS Server on Klutch.sh gives you a powerful self-hosted DNS solution with automatic builds, persistent storage, and secure HTTPS access. Take control of your DNS with ad blocking, encrypted DNS, and detailed analytics.