Skip to content

michael-pellegrini/technitium_docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Docker Cloud Build Status Docker Image Size (latest by date) Docker Pulls GitHub

Technitium DNS Multi-Architecture Image for AMD64, ARM64, and ARM

Technitium DNS Server - https://technitium.com/dns/ by Mr. Zare

To demo the web console docker run -p 5380:5380 m400/technitium point browser to http://127.0.0.1:5380 or http://<ip>:5380

The docker run command below will pull the correct architecture for your host.

docker run -d --name technitium -p 53:53/udp -p 53:53/tcp -p 5380:5380 --hostname=technitium-dns -e DNS_SERVER_LOG_USING_LOCAL_TIME=true -e TZ=America/New_York -e DNS_SERVER_DOMAIN=dns-server -v config:/app/config -v ssl:/etc/ssl -v logs:/app/config/logs m400/technitium:latest

Above command maps ports 53 udp for dns and 53 tcp (in case dns response is greater than 512 bytes), port 5380 for web console, sets container hostname, sets DNS server to use local time for logs, sets Dns server domain, three volumes are created config for server config, ssl for certficates and logs for logs.

Note: SSL certificates must be in PKCS #12 certificate (.pfx) format.

Available ports are 80, 443, and 853 for DNS-over-HTTPS and DNS-over-TLS connections. Port 67 for DHCP server and port 53443 for webconsole over TLS.

Docker-compose example

version: '3.7'
services:
  dns-server:
    image: m400/technitium:latest
    hostname: dns-server
    # networks:  Create network and uncomment if connecting to another container (reverse proxy, etc..)
    # - technitium-network
    ports:
    - 53:53/udp
    - 53:53/tcp
    - 67:67/udp
    - 80:80/tcp
    - 443:443/tcp
    - 853:853/tcp
    - 5380:5380/tcp
    - 8053:8053/tcp 
    environment:
    - DNS_SERVER_LOG_USING_LOCAL_TIME=true
    - DNS_SERVER_DOMAIN=dns-server
    - TZ=America/New_York
    volumes:
    - data:/app/config
    - ssl:/etc/ssl
    - logs:/app/config/logs

    restart: unless-stopped
volumes:
  data:
  ssl:
  logs:
#networks:
  #technitium-network:
    #external: true

Additional Information

1.) Any desired service ports can not be in use on the nic that will be running the container. Docker will bind the specfied container ports to the default interface. To bind to a different nic map it by providing the ip address in the port mapping like so -p 192.168.1.10:5380:5380

2.) Default time is in UTC. If logs need local time with a specific timezone. Set DNS_SERVER_LOG_USING_LOCAL_TIME=true and TZ= to chosen timezone. TZ identifiers can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

3.) The container will set the Default DNS server name as the container ID. This will have to change after updating the container else service is broken. Set DNS_SERVER_DOMAIN=dns-server to prevent this.

4.) Backup entire Dns Server configuration by navigating to Settings > General > Scroll to bottom > Backup settinngs

5.) If using :latest image update via docker-compose by simply running docker-compose down -> docker image rm m400/technitium:latest -> docker-compose up -d.