services: # --- Node 1 (Primary) --- dns: image: technitium/dns-server:latest container_name: dns-01 restart: unless-stopped ports: - "53:53/udp" # Live DNS - "53:53/tcp" - "5381:5380/tcp" # Web UI -> 5381 environment: - TZ=America/Edmonton - DNS_SERVER_DOMAIN=dns1.mapletree.email - DNS_SERVER_ADMIN_PASSWORD=${DNS_ADMIN_PASSWORD} volumes: #- ${CONFIG_PATH}/primary:/etc/dns/config - /docker/dns/config:/etc/dns networks: dns_internal: dns_external: {} labels: - "traefik.enable=true" - "traefik.docker.network=dns_external" - "traefik.http.routers.dns01.rule=Host(`dns1.mapletree.email`)" - "traefik.http.routers.dns01.entrypoints=web,websecure" - "traefik.http.routers.dns01.tls.certresolver=myresolver" - "traefik.http.services.dns01.loadbalancer.server.port=5380" # --- Metrics Sidecar --- dns-exporter: image: ghcr.io/guycalledseven/technitium-dns-prometheus-exporter:latest container_name: dns-exporter restart: unless-stopped environment: # Note the simplified variable names - TECHNITIUM_BASE_URL=http://172.35.0.101:5380 - TECHNITIUM_TOKEN=${DNS_API_TOKEN} ports: - "8081:9105" # Maps container 8080 to host 8081 networks: - dns_internal networks: dns_internal: internal: true dns_external: external: true