Hier zeigen wir, wie ihr den Werbeblocker Pi-hole in einem Docker-Container installiert. In unserem Beispiel läuft Docker auf einem Raspberry Pi.
Vorbereitungen
Wir gehen davon aus, dass ihr bereits Docker auf dem Raspberry Pi installiert und die grafische Benutzeroberfläche Portainer eingerichtet habt. Wie das in wenigen Schritten geht, haben wir in dieser Anleitung gezeigt:
Pi-hole in Docker-Container installieren (auf Raspberry Pi)
Wir installieren Pi-hole über eine Docker-Compose-Datei. Das ist im Grunde eine Vorlage, in der genau drin steht, was Portainer machen soll. Dadurch spart man ordentlich Zeit und Mühe.
Compose-Datei als Stack hinzufügen
- Loggt euch über euren Browser in der Weboberfläche von Portainer ein.
- Klickt links auf den Menüpunkt „Stacks“ und dann rechts oben auf den Button „+ Add stack“.
- Gebt oben als Namen beispielsweise „pihole“ ein. Das ist die Bezeichnung, wie die Vorlage später bei euch in Portainer unter „Stacks“ angezeigt wird.
- Klickt darunter auf „Web editor“.
Darunter fügt ihr dann den folgenden Docker-Compose-Code ein:
version: "3"
# Mehr Infos auf https://github.com/pi-hole/docker-pi-hole/ und https://docs.pi-hole.net/
services:
pihole:
container_name: pihole # Der Name des Containers wie er in Portainer unter "Containers" angezeigt wird
image: pihole/pihole:latest # Download des offiziellen Pihole-Images
hostname: Pihole # Diese Bezeichnung steht später oben rechts in der Weboberfläche von Pihole als Hostname
# Für DHCP wird empfohlen, die folgenden Ports zu entfernen und stattdessen hinzuzufügen: network_mode: "host"
ports:
- "53:53/tcp"
- "53:53/udp"
# - "67:67/udp" # Wird nur benötigt, wenn ihr Pi-hole als DHCP-Server nutzen wollt
- "80:80/tcp"
environment:
TZ: 'Europe/Berlin' # Die Zeitzone wird auf Deutschland gestellt
WEBPASSWORD: 'pihole' # Das Passwort, mit dem ihr euch an der Pihole-Weboberfläche anmeldet
PIHOLE_DNS_: '9.9.9.9;149.112.112.112' # Stellt in Pihole "Quad9 (filtered, DNSSEC)" als Upstream-DNS-Server ein statt Google
# "Volumes" speichert Daten zwischen Container-Upgrades
volumes:
- './etc-pihole:/etc/pihole'
- './etc-dnsmasq.d:/etc/dnsmasq.d'
#cap_add: # Wird nur benötigt, wenn ihr Pi-hole als DHCP-Server nutzen wollt
# - NET_ADMIN # Wird nur benötigt, wenn ihr Pi-hole als DHCP-Server nutzen wollt
restart: unless-stopped # Wenn ihr den Container stoppt, startet er nicht automatisch neu
Vorlage übernommen und von uns angepasst von: Pihole-Github
Docker-Compose-Datei ändern und Container erstellen
Wenn ihr den obigen Code in Portainer unter „Stacks“ im Web-Editor eingefügt habt, wird er farblich markiert. Orange sind Kommentare, welche die vorherigen Befehle erklären. Kommentare werden mit dem Rauten-Symbol (#) eingeleitet und von Portainer bei der Erstellung des Stacks/Containers ignoriert.
Das Skript ist in der obigen Form für die DNS-Funktionalität von Pi-hole konfiguriert. Falls ihr Pi-hole auch als DHCP-Server nutzen wollt, entfernt das erste Raute-Symbol (#) am Anfang der folgenden drei Zeilen:
# - "67:67/udp" # Wird nur benötigt, wenn ihr Pi-hole als DHCP-Server nutzen wollt
# cap_add: # Wird nur benötigt, wenn ihr Pi-hole als DHCP-Server nutzen wollt
# - NET_ADMIN # Wird nur benötigt, wenn ihr Pi-hole als DHCP-Server nutzen wollt
Gemäß des Skripts ist als Passwort für die Pi-hole-Weboberfläche „pihole“ eingestellt. Ihr könnt das ändern, indem ihr euer Wunschpasswort statt „pihole“ in dieser Zeile eintragt:
WEBPASSWORD: 'pihole' # Das Passwort, mit dem ihr euch an der Pihole-Weboberfläche anmeldet
Achtet dabei darauf, dass die Formatierungen inklusive Absätze erhalten bleiben. Wenn ihr fertig seid, scrollt nach unten und klickt auf den Button „Deploy the stack“. Portainer startet nun den zugehörigen Container namens „pihole“.
Pi-hole im Browser nutzen
- Gebt im Browser
http://IP-eures-Raspberry-Pi/admin
ein und drückt Enter, um die Weboberfläche von Pi-hole zu öffnen. - Gebt euer Passwort ein. Falls ihr es im Code nicht abgeändert habt, lautet es „pihole“.
- Klickt links auf „Settings“ > „DNS“, um die DNS-Einstellungen zur prüfen. Laut Skript wurde standardmäßig der DNS-Server „Quad9 (filtered, DNSSEC)“ eingestellt.
Pi-hole als DNS-Server einstellen
Stellt sicher, dass das Gerät, auf dem Pi-hole läuft, eine feste IP-Adresse zugewiesen bekommt. Damit Pi-hole nun als DNS-Server Daten empfängt, müsst ihr die IP-Adresse des Raspberry Pi als DNS-IP-Adresse auf euren Geräten eintragen. Entweder ihr macht das für jedes Gerät einzeln in den zugehörigen Netzwerkeinstellungen oder ihr macht das nur einmal im Router. Auf der Fritzbox funktioniert es beispielsweise so:
- Tippt in der Browser-Zeile http://fritz.box/ ein und drückt Enter, um die Benutzeroberfläche der Fritzbox zu öffnen.
- Gebt euer Gerätekennwort ein und drückt Enter.
- Klickt links auf den Menüpunkt „Heimnetz“ > „Netzwerk“ und wählt oben den Reiter „Netzwerkeinstellungen“ aus.
- Scrollt herunter zum Abschnitt „IP-Adressen“ und klickt auf den Button „IPv4-Einstellungen“.
- Neben „Lokaler DNS-Server“ tragt ihr die IP-Adresse des Geräts ein, auf dem Pi-hole läuft. Bei uns ist das ein Raspberry Pi mit der IP 192.168.178.41.
- Bestätigt mit dem Button „Übernehmen“.
Danach sollte Pi-hole im Dashboard bereits die ersten Statistiken anzeigen. Wie ihr Pi-hole weiter konfigurieren könnt, haben wir hier erklärt:
Pi-hole: Stack & Container beenden
Wenn ihr den Container von Pi-hole stoppen möchtet, geht das auf zwei Wegen:
- Klickt in Portainer links auf „Stacks“, klickt rechts auf den Pihole-Stack und dann auf „Stop this stack“. Der Stack wird angehalten und der zugehörige Container aus dem Menüpunkt „Containers“ entfernt. Wenn ihr den Stack wieder aktiviert, wird auch der Container wieder eingeblendet.
- Klickt in Portainer links auf „Containers“. Wählt den Pihole-Container aus und klickt oben auf „Stop“. Der Container wird dann mit dem Status „exited“ angezeigt.