Pi-Hole Docker Installation mit Portainer
Im heutigen Beitrag geht es um die Pi-Hole Docker Installation. Wir werden Pi-Hole mit Portainer installieren.
Doch was Pi-Hole eigentlich?
Pi-Hole ist ein Werbeblocker und Trackingblocker, der zentral und somit für alle Geräte in eurem Heimnetzwerk die Werbung blockiert. Pi-Hole wird hierbei als DNS Server genutzt und der gesamte Netzwerkverkehr geht ab dann über Pi-Hole. PiHole filtert die Domains, über welche Anzeigen ausgendet werden. Damit ihr einen Eindruck bekommt wie das ganze aussieht.
Hier eine Seite vor der Nutzung von Pi-Hole.

Die gleiche Seite mit Nutzung von Pi-Hole.

Pi-Hole Docker Installation – Hardware
Da ich bereits ettliche Applikationen auf diversen Raspberry Pi laufen hatte, verwende ich inzwischen einen Dell Optiplex. Dieser bietet genug Leistung um Anwendungen wie den Unifi Controller, Node- RED und vieles mehr auf einem Rechner laufen zu lassen. Falls ihr euch wie ich für einen Dell Optiplex mit Windows entscheidet, seid ihr gut vorbereitet für weitere Anwendungen.
Pi-Hole Docker Installation – Software
Software – Docker und Portainer
Ihr benötigt als Voraussetzung Docker und Portainer.
Ich nutze aufgrund meiner KI Videoüberachung Windows. Ihr könnt den Beitrag Docker unter Windows durcharbeiten, falls ihr auch unter Windows arbeiten wollt.
Ansonsten tut es auch jede andere Installation mit Portainer z.B. auf einem Raspberry Pi.
Software – Pi-Hole
Als erstes ruft Portainer auf.
Damit unsere Konfiguration gesichert wird, erstellen wir als erstes ein Volume für den Pi-Hole Container.
Pi-Hole – Volume erstellen
Klickt auf Volumes (1) und +Add Volume (2)

Anschließend vergebt einen Namen für das Volume (1) und klickt Create the Volume (2).

Pi-Hole – Container erstellen
Nun wählt container (1) und klickt +Add container (2).

- Vergebt einen Namen für den Container
- pihole/pihole:latest
- drückt 4. mal auf publish a new network port
- gebt die ports wie dargestellt ein.
- 53 -> 53 TCP
- 80 -> 80 TCP
- 443 -> 443 TCP
- 53 -> 53 UDP

Scrollt nach unten und klickt auf Volumes. Im Anschluss gebt die folgenden Daten ein. Falls ihr einen anderen Namen für das Volume gewählt habt, ändert den fett dargestellten Namen.
- /dnsmasq.d
- drückt Bind
- /var/lib/docker/volumes/pihole/_data
- /pihole
- drückt Bind
- /var/lib/docker/volumes/pihole/_data

Klickt nun auf Netowork (1) und vergebt einen Hostnamen (2).

Zum Schluss werden nun noch ein paar Umgebungsvariablen gesetzt.
- Klickt auf Env (1) und im Anschluss klickt vier mal auf add environment variable.
- TZ
- Europe/Berlin
- DNS1
- <IPEuresRouters> (z.B. 192.168.0.1)
- DNS2
- leer lassen
- WEBPASSWORD
- <EuerSuperGeheimesPasswort>

Das war es auch schon. Drück nun auf Deploy the container und der Container sollte starten. Im Anschluss gelangt ihr in <eureIP>/admin/
auf die Admin Oberfläche.

Software – Pi-Hole FritzBox Einstellungen
Was nun noch fehlt ist die Einstellungen im Router damit der Internetverkehr auch über Pi-Hole geht. Ich nutze eine FritzBox. Falls ihr andere Router verwendet, solltet ihr nach einen vergleichbaren Einstellung suchen.
Meldet euch an der FritzBox an und geht auf Netzwerk (1), Netzwerkeinstellungen (2) und klickt auf IPv4-Adressen.

In den Einstellungen erstzt nun die IP des lokalen DNS-Server (1) durch die von Pi-Hole. Zum Anschluss klickt OK (2).

Es dauert ggf. bis das Routing funktioniert. Testet einfach mal eure gängigen Webseiten wo ihr viel Werbung hattet.
Hi Thomas,
generell wäre in diesem Zusammenhang auch ein Update-Prozess interessant 🙂
Hallo Thomas,
ich habe gelesen, dass man bei der Installation von pihole als Docker via Portainer einen Value für die Variable WEBPASSWORD eingeben soll. Dazu habe ich eine Frage: „Meinst du WEBPASSWORD das Passwort für das Internet bzw. für das Webinterface des Routers oder ein x-beliebiges Passwort?“
Ich würde mich auf deine Antwort freuen.
MfG
Martin
Hallo Martin,
zum WebPassword ist gemeint, das du dir ein eigenes Passwort über ENV vergibst. Damit du dich auf der Pihole Webseite lokal einloggen kannst.
Mehr ist es nicht.
mfg
Rene
Hallo Thomas,
vielen Dank für die ausführliche Anleitung. Wirklich perfekt umgesetzt. Ich habe meinen pi-hole aktuell auf einem eigenen RasPi laufen, würde es aber gerne auf meine Docker-Pi umziehen. Leider werden ein Teil der Ports, die du in dem Tutorial benutzt und die Pi-Hole ja auch filtern soll, schon von der Traefik-Instanz belegt. Kann ich das irgendwie ändern bzw gibts da ein Workaround oder geht das dann simpel und einfach nicht beides zeitgleich in einem Docker?
HG
Sebastian
Hallo Thomas,
ich kann mich hier Sebastian nur anschliessen, danke. Mein Problem ist das Gleiche wie bei Sebastian,die Traefik-Instanz und Bitwarden im Docker belegen Port 80 und 443. Kann man da etwas anpassen?
MfG
Frank
Ahoi,
du kannst für das Webinterface von Pi-Hole – dafür sind port 80 und 443 – auch auf dem host z.b. wenn noch nicht anderweitig verwendet 8081 und und 40443 nehmen, du musst dann nur wenn du das interface aufrufen willst anstelle z.b. http:// dann http://:8081 oder https://ip-des-pihole:40443 eingeben…
Erstmal danke für die Anleitung.
Was ich aber nicht so ganz verstehe ist, wie ich das Webinterface jetzt erreichen soll?
Wenn ich den Container erstelle, bekommt dieser doch immer eine „Docker-IP“ zugewiesen. Die kann ich aber doch aus meinem „normalen“ Netz gar nicht erreichen?
Sebastian
Man erreicht die Dienste des Containers ganz einfach mit der IP-Adresse des Host, gefolgt von einem „:“ und dann der Port-Nummer.
Für http:// ist es im Regelfall
http://:80
Wenn der Host selbst bereits Port 80 (also http://) verwendet/benötigt (zum Beispiel für sein eigenes Web-Interface) muss man einfach nur die Host:Client-Zuordnung beim bereitstellen des Containers in den Network-Settings anders belegen – zum Beispiel so:
80:3637
Somit kann man über die IP des Host und des Aufrufens von Port 3637 den Port 80 des Containers erreichen. (Entspricht damit „ungefähr“ einer automatischen Port-Weiterleitung/Firewall-Konfiguration.)