From 85c869959c830b0599f2fe7096975cf673a6fdff Mon Sep 17 00:00:00 2001 From: Thomas M Date: Sat, 3 Jan 2026 01:52:59 +0000 Subject: [PATCH] =?UTF-8?q?pdns/docker-compose-traefik.yml=20hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pdns/docker-compose-traefik.yml | 72 +++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 pdns/docker-compose-traefik.yml diff --git a/pdns/docker-compose-traefik.yml b/pdns/docker-compose-traefik.yml new file mode 100644 index 0000000..930a2ac --- /dev/null +++ b/pdns/docker-compose-traefik.yml @@ -0,0 +1,72 @@ +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 (default) + PDNS_GSQLITE3_DATABASE: ${PDNS_GSQLITE3_DATABASE:-/data/pdns.sqlite3} + + # PostgreSQL settings (optional) + 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 + - dns + + ports: + # IPv4 DNS + - "${PDNS_DNS_PORT:-53}:53/tcp" + - "${PDNS_DNS_PORT:-53}:53/udp" + + # IPv6 DNS (optional) + - "${PDNS_IPV6_ENABLED:-false} == true ? \"[${PDNS_PUBLIC_IPV6}]:53:53/tcp\" : \"\"" + - "${PDNS_IPV6_ENABLED:-false} == true ? \"[${PDNS_PUBLIC_IPV6}]: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 + + dns: + enable_ipv6: ${PDNS_IPV6_ENABLED:-false}