Pi-Hole
Pi-Hole ist ein Programm, dass unerwünschte Werbung aus Webseiten herausfiltern kann. Es lässt sich sehr einfach auf einem Raspberry Pi in Docker installieren.
Auf dem Bild oben siehst du, dass Pi-Hole aktuell bei mir fast 8% der Anfragen ins Netz blockiert hat, weil es Werbung- oder Tracking-URL waren. Gerade Tracking-URL zu blockieren trägt zum Datenschutz bei.
Material
- Raspberry Pi 4 8GB
- Micro SD Karte
Es würde auch ein 2GB oder 4GB Pi reichen. Ich dimensioniere sowas lieber etwas größer für den Fall, dass noch weitere Docker-Container darauf laufen sollen.
Installation
Wenn du deinen Raspberry Pi mit Docker vorbereitet hast, ist die Installation von Pi-Hole als Container sehr einfach.
Erstelle eine Datei namens docker-compose.yml und kopiere den nachfolgenden Inhalt hinein
# 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
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "80:80/tcp"
- "443:443/tcp"
environment:
TZ: 'Europe/Berlin'
WEBPASSWORD: '<passwort>'
# Volumes store your data between container upgrades
volumes:
- '/opt/pihole/etc-pihole/:/etc/pihole/'
- '/opt/pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/'
# Recommended but not required (DHCP needs NET_ADMIN)
# https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
cap_add:
- NET_ADMIN
restart: unless-stopped
Für das WEBPASSWORD musst natürlich dein eigenes Passwort einsetzen. Es dient später zum Login in das Programm.
Danach legst du die beiden Verzeichnisse für die Volumes an.
sudo mkdir -p /opt/pihole/etc-pihole
sudo mkdir -p /opt/pihole/etc-dnsmasq.d
Mittels
docker-compose up -d
bringst du PiHole zum Laufen. Um dich an dem System anzumelden rufst du im Browser die Adresse http:///admin auf. Für kannst du wahlweise die IP oder den Netzwerknamen benutzen. Zur Anmeldung benötigst du nur das Passwort, dass du in der docker-compose.yml eingetragen hast.
Konfiguration
Pi-Hole bringt von sich aus schon eine Liste mit schädlichen URL mit, die blockiert werden. Dies lässt sich aber über den Menüpunkt „AdLists“ beliebig erweitern. Bei FireBog findest du eine ganze URL-Sammlung von schädlichen und verdächtigen Adressen.
Mit diesen drei Einträgen werden bei mir über 660.000 URL blockiert.
Tipp: Ich hatte einmal den Fall, dass in einer der Blocklisten ein URL vorhanden war, der dazu führte, dass YouTube nicht mehr korrekt funktionierte. In diesem Fall empfehle ich dir, solche Domains in die Whitelist zu packen.
Pi-Hole verhält sich wie ein DNS-Server und lässt nur die guten Domains durch. Um es für dein gesamtes Netzwerk zu nutzen, musst du in deinem AccessPoint den DNS-Server auf die IP des Raspberry Pi umstellen.
Du kannst aber auch nur einzelne Rechner in den Vorteil des Blockens kommen lassen, in dem du dort den DNS-Server umlenkst.
Wartung
Um deine Konfiguration zu sichern, kannst du mit dem Menüpunkt „Settings/Teleporter/Backup“ ein Backuparchiv runterladen und bei Bedarf wieder einspielen.
Um den Container auf ein neues Image zu aktualisieren, habe ich dieses Skript im Einsatz
#! /usr/bin/bash
export COMPOSE_IGNORE_ORPHANS=True
echo "pulling new image"
docker pull pihole/pihole:latest
echo "removing container"
docker rm -f pihole
echo "creating new container"
docker-compose up -d
Es muss im gleichen Verzeichnis aufgerufen werden, in dem auch die docker-compose.yml Datei von oben liegt.
Hinweis: Bei einem Update ist mir passiert, dass sich die interne Datenbank von Pi-Hole sich geändert hat und der Container nicht fehlerfrei starten konnte. Daher ist ein Backup des Pis vor dem Update keine schlechte Idee. Sollte dir so etwas passieren, kannst du einfach die Dateien gravity.db und pihole-FTL.db im Verzeichnis /opt/pihole/etc-pihole löschen. Sie werden beim Start des neuen Containers mit der aktualisierten Datenbankstruktur neu angelegt.
Update vom 08.11.23: network_mode: host aus der docker-compose.yml entfernt.