Files
container/pdns/docker-compose-traefik.yml

73 lines
2.4 KiB
YAML

version: "3.9"
services:
powerdns:
image: ${PDNS_IMAGE:-powerdns/pdns:latest}
container_name: ${PDNS_CONTAINER_NAME:-powerdns}
restart: unless-stopped
environment:
# API & Webserver
PDNS_API_KEY: ${PDNS_API_KEY:-changeme}
PDNS_WEBSERVER: yes
PDNS_WEBSERVER_ADDRESS: 0.0.0.0
PDNS_WEBSERVER_PORT: 8081
# Master/Slave
PDNS_MASTER: ${PDNS_MASTER:-yes}
PDNS_SLAVE: ${PDNS_SLAVE:-yes}
PDNS_ALLOW_AXFR_IPS: ${PDNS_ALLOW_AXFR_IPS:-127.0.0.1}
########################################
# DATABASE ENGINE (sqlite3 OR gpgsql)
########################################
PDNS_LAUNCH: ${PDNS_LAUNCH:-gsqlite3}
# SQLite settings
PDNS_GSQLITE3_DATABASE: ${PDNS_GSQLITE3_DATABASE:-/data/pdns.sqlite3}
# PostgreSQL settings
PDNS_GPGSQL_HOST: ${PDNS_GPGSQL_HOST:-}
PDNS_GPGSQL_PORT: ${PDNS_GPGSQL_PORT:-5432}
PDNS_GPGSQL_USER: ${PDNS_GPGSQL_USER:-}
PDNS_GPGSQL_PASSWORD: ${PDNS_GPGSQL_PASSWORD:-}
PDNS_GPGSQL_DBNAME: ${PDNS_GPGSQL_DBNAME:-}
# IPv6 binding (optional)
PDNS_LOCAL_IPV6: ${PDNS_LOCAL_IPV6:-}
volumes:
- ${PDNS_DATA_PATH:-pdns-data}:/data
networks:
- proxy # nur für Traefik API/Web
ports:
########################################
# IPv4 DNS (parametrisierte IP + Port)
########################################
- "${PDNS_PUBLIC_IPV4:-0.0.0.0}:${PDNS_PUBLIC_PORT:-53}:53/tcp"
- "${PDNS_PUBLIC_IPV4:-0.0.0.0}:${PDNS_PUBLIC_PORT:-53}:53/udp"
########################################
# IPv6 DNS (optional, parametrisierte IP + Port)
########################################
- "${PDNS_IPV6_ENABLED:-false} == true ? \"[${PDNS_PUBLIC_IPV6}]:${PDNS_PUBLIC_PORT6:-53}:53/tcp\" : \"\""
- "${PDNS_IPV6_ENABLED:-false} == true ? \"[${PDNS_PUBLIC_IPV6}]:${PDNS_PUBLIC_PORT6:-53}:53/udp\" : \"\""
labels:
- "traefik.enable=true"
- "traefik.http.routers.powerdns.rule=Host(`${PDNS_TRAEFIK_HOST:-dns.example.com}`)"
- "traefik.http.routers.powerdns.entrypoints=${PDNS_TRAEFIK_ENTRYPOINT:-websecure}"
- "traefik.http.routers.powerdns.tls=true"
- "traefik.http.routers.powerdns.tls.certresolver=${PDNS_TRAEFIK_CERTRESOLVER:-letsencrypt}"
- "traefik.http.services.powerdns.loadbalancer.server.port=8081"
volumes:
pdns-data:
networks:
proxy:
external: true
enable_ipv6: false