schnuecks.dev
Alle Projekte

traefik-pihole-sync

Stabil

Homelab · Open Source · Traefik & Pi-hole v6

Container starten, und sein Name funktioniert.

traefik-pihole-sync hält die lokalen DNS-Einträge von Pi-hole mit deinen Traefik-Routern abgeglichen. Starte einen Container mit einer Host()-Regel, und eine Minute später löst sein Name im ganzen Netz auf; entfernst du ihn, verschwindet auch der Eintrag.

Kostenlos unter MIT · Kleiner Container ohne Root · amd64 und arm64

Traefik-RouterPi-hole-Eintrag
Host(`grafana.lan`)A grafana.lan 192.168.1.10
Host(`wiki.lan`)A wiki.lan 192.168.1.10
Host(`photos.lan`)CNAME photos.lan nas.lan
Host(`test.lan`)Container weg → Eintrag entfernt

Kein DNS-Eintrag mehr von Hand.

Jede Minute liest es die Router aus der Traefik-API, behält die Hostnamen deiner Domains und ergänzt in Pi-hole, was fehlt.

Liest Traefik-Router

Host()-Regeln von HTTP-Routern und auf Wunsch HostSNI()-Regeln von TCP-Routern, über alle Seiten der Traefik-API.

A, AAAA oder CNAME

Hostnamen zeigen auf eine IPv4- und/oder IPv6-Adresse oder werden CNAMEs deines Proxy-Hosts.

Mehrere Pi-holes

Mehr als ein Pi-hole gleichzeitig abgleichen, jedes mit eigenem Passwort und eigenem Stand.

Domainfilter

Nur Namen in den Domains, die du angibst – ein Tippfehler kann so nie eine fremde Domain in deinem Netz umbiegen.

Ruhige Logs

Änderungen und Probleme auf INFO, eine Statuszeile pro Stunde, wiederholte Fehler nur einmal.

Schlanker Container

Läuft ohne Root, eingebauter Healthcheck, meldet sich beim Beenden von Pi-hole ab.

Sicher gebaut

  • Nur eigene EinträgeEinträge, die es nicht selbst angelegt hat, werden nie gelöscht, und von Hand gepflegte Namen bleiben unberührt.
  • Verzögertes LöschenEin Eintrag verschwindet erst, wenn sein Host mehrere Durchläufe in Folge fehlt – ein neu startender Container lässt das DNS nicht flackern.
  • ProbelaufDRY_RUN=true schreibt ins Log, was sich ändern würde, ohne etwas zu schreiben – erst ausprobieren, dann scharf schalten.

Ein Container neben Traefik.

Traefik-API, Pi-hole, Ziel-IP und deine Domains in der Compose-Datei eintragen, das Pi-hole-Passwort als Secret ablegen, dann starten.

# compose.yaml (gekürzt) – Secret und Netzwerk stehen im README
services:
  traefik-pihole-sync:
    image: ghcr.io/schnuecks/traefik-pihole-sync:latest
    restart: unless-stopped
    environment:
      TRAEFIK_API_URL: http://traefik:8080
      PIHOLE_URL: https://pihole.example.com
      PIHOLE_PASSWORD_FILE: /run/secrets/pihole_password
      TARGET_IP: 192.0.2.10
      DOMAINS: example.com
      DRY_RUN: "true"
    secrets: [pihole_password]
    volumes: [./data:/data]

Gefällt dir, was ich baue?

Wenn dir eines meiner Projekte Zeit spart, kannst du mir gern einen Kaffee auf Ko-fi ausgeben. Das hält die Drucker am Laufen und bringt die nächste Idee.

Kaffee auf Ko-fi spendieren