Skip to content

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

    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 5380
    EXPOSE 53/udp
    EXPOSE 53/tcp
    EXPOSE 853
    EXPOSE 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:

    • Select HTTP as the traffic type
    • Set the internal port to 5380 (admin web interface)

    Set Environment Variables

    Configure the following environment variables:

    VariableValue
    DNS_SERVER_DOMAINYour DNS server domain
    DNS_SERVER_ADMIN_PASSWORDSecure admin password
    DNS_SERVER_LOG_USING_LOCAL_TIMEtrue

    Attach Persistent Volumes

    Add the following volumes:

    Mount PathRecommended SizePurpose
    /etc/dns5 GBZones, 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:

  1. Navigate to your Technitium URL (port 5380)
  2. Log in with admin credentials
  3. Complete initial setup wizard

Configuring Ad Blocking

Enable ad blocking:

  1. Navigate to Settings > Blocking
  2. Enable ad blocking
  3. Add blocklists (e.g., Steven Black’s hosts, EasyList)
  4. Configure block response type

Setting Up DNS-over-HTTPS

Configure DoH:

  1. Navigate to Settings > DNS Settings
  2. Enable DNS-over-HTTPS
  3. Configure certificate (or use built-in)
  4. Share DoH URL with clients

Adding Custom Zones

Create your own DNS zones:

  1. Navigate to Zones
  2. Click Add Zone
  3. Enter zone name
  4. Add DNS records (A, AAAA, CNAME, MX, etc.)

Configuring Forwarders

Set upstream DNS resolvers:

  1. Navigate to Settings > Forwarders
  2. Add forwarder addresses
  3. Configure forwarder protocol (UDP, TCP, DoH, DoT)
  4. Set timeout and retry values

Additional Resources

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.