Ich zeige euch hier, wie ihr Pi hole in wenigen Minuten mit Docker realisiert. Pi hole dient als DNS Server um Werbung zu blockieren.

Update

16.05.2020Anpassung der Anleitung.
14.05.2020Erstellung dieser Anleitung.

Pi hole sollte NIE als offener DNS Resolver im Internet stehen. Das BSI wart offiziell davor, da diese (euer) Server dann für Angriffe genutzt werden könne.

Daher nutzt meine Anleitung bitte nur, um Pi hole auf einem Server / NAS innerhalb eures privaten Netzwerkes zu betreiben.

Als Grundlage meiner Anleitung dient die offizielle Pi hole Anleitung für Docker.

1. Ordner anlegen

Zuerst legen wir uns passende Ordner-Strukturen an.

mkdir -p /opt/containers/pi-hole/{pihole,dnsmasq}

2. Docker Compose anlegen

Nun legen wir die eigentliche Docker Datei an. Hierfür habe ich mir die offizielle Pi hole Compose genommen..

cd /opt/containers/pi-hole/
nano docker-compose.yml

Inhalt

version: "3"

# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    restart: unless-stopped
    ports:
      - "53:53/tcp"
      - "53:53/udp"

    environment:
      TZ: 'Europe/Berlin'
      WEBPASSWORD: 'sicheresPasswort'  # hier euer Passwort eingeben

    volumes:
       - '/opt/containers/pi-hole/pihole/:/etc/pihole/'
       - '/opt/containers/pi-hole/dnsmasq/:/etc/dnsmasq.d/'

    dns:
      - 127.0.0.1
      - 1.1.1.1

Notwendige Anpassungen:

  1. Passwort ändern

3. Pi hole starten

Pi hole startet ihr wie gewohnt mit folgendem Befehl:

docker-compose -f /opt/containers/pi-hole/docker-compose.yml up -d

4. Pi Hole Webinterface

Wenn ihr nun auf „<IP-eures-NAS>/admin“ geht, dann solltet ihr direkt zum Webinterface kommen. Hier könnt ihr euch nun auch mit „Login“ einloggen. Das Passwort habt ihr in euer Docker-Compose Datei festgelegt.

5. Quellen

https://hub.docker.com/r/pihole/pihole

Teile diesen Beitrag
Christian

Categories:

14 Kommentare

  1. Hallo Christian,

    Deine Kochrezepte für Docker und Traefik in allen Ehren, ich habe mir schon ein paar Dinge abgeguckt, aber welchen Sinn hat ein von außen erreichbaren AdBlocker/DNS-Server? Wäre es nicht sinnvoller das Pi-Hole mit einer festen IP-Adresse dem lokalen Netzwerk zur Verfügung zu stellen?

  2. Hallo Christian,

    ich habe deine zur Verfügung gestellten Ports mit den Ports in der Dokumentation vergleichen. Es sind nur die DNS freigegeben. Hat das einen bestimmten Grund?

    Marcel

  3. Moin,
    habs gerade spontan mit meinem OMV probiert:
    Status: Downloaded newer image for pihole/pihole:latest
    Creating pihole … error

    ERROR: for pihole Cannot start service pihole: driver failed programming external connectivity on endpoint pihole (ffc8af4870fba3b5204e1abda496cae2548254e336ec1726663b73f6d2b8ab2f): Error starting userland proxy: listen tcp 0.0.0.0:53: bind: address already in use

    Ne Idee?
    Wüsste nicht was da schon auf 53 läuft?!

    • Wenn OMV Systemd einsetzt, dann könnte das der lokale DNS Resolver sein. Einfach ein netstat absetzen.
      So schaut das z.B. auf nem aktuellen Xubuntu aus:
      sudo netstat -tulpn | grep 53
      [sudo] Passwort für …..
      tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 466/systemd-resolve
      udp 0 0 0.0.0.0:5353 0.0.0.0:* 897/avahi-daemon: r
      udp 0 0 127.0.0.53:53 0.0.0.0:* 466/systemd-resolve
      udp6 0 0 :::5353 :::* 897/avahi-daemon: r

      • Nachtrag: Eventuell ist auch einfach die Prüfung von OMV für den Boppes.
        Die Meldung schaut so für mich aus:
        proxy: listen tcp 0.0.0.0:53: bind: address already in use

        0.0.0.0 ist eigentlich ein IPv4 „Platzhalter“ für alle verfügbaren Interfaces und das schließt natürlich auch localhost (127.0.0.1) ein. An der externen IP sollte der Port 53 immer verfügbar sein und der pi hole Container stressfrei startbar sein. Ich bin nach einigen Experimenten im Docker Container mit pihole in ne VBox Debian VM abgewandert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.