Mit Pi-hole verwandelt ihr euren Raspberry Pi in einen netzwerkweiten Werbeblocker und DNS-Filter. Alle Geräte im Heimnetz – Smartphones, Smart-TVs, Laptops – werden automatisch geschützt, ohne dass auf jedem Gerät ein Browser-Plugin installiert werden muss. In diesem Artikel zeige ich euch die komplette Einrichtung von Pi-hole auf dem Raspberry Pi unter Raspberry Pi OS Bookworm.
Was macht Pi-hole genau?
Pi-hole fungiert als DNS-Server in eurem Heimnetz. Wenn ein Gerät eine Domain aufzulösen versucht (z.B. doubleclick.net), landet die Anfrage zuerst beim Pi-hole. Domains, die auf Blocklisten stehen, werden mit einer Nullantwort beantwortet – die Werbung oder der Tracker lädt gar nicht erst. Alles andere wird an euren normalen DNS-Server (z.B. den der FritzBox oder 1.1.1.1) weitergeleitet.

Vorteile gegenüber Browser-Plugins:
- Schützt alle Geräte im Netz – auch iOS, Android, Smart-TV, Spielekonsolen
- Blockiert Werbung auch in Apps (nicht nur im Browser)
- Zentrales Dashboard mit Statistiken für das gesamte Netz
- Sehr geringer Stromverbrauch (~2–3W auf einem Pi Zero 2W)
Material
- Beliebiger Raspberry Pi – Pi Zero 2W, Pi 3, Pi 4 oder Pi 5 (Raspberry Pi 4 (~45€) ist ideal für Heimnetze mit vielen Geräten)
- microSD-Karte 8 GB+ (~8€)
- Passendes Netzteil
- Netzwerkkabel (empfohlen) oder WLAN
- Raspberry Pi OS Lite Bookworm (64-Bit) – GUI wird nicht benötigt
Empfehlung: Für Pi-hole reicht der günstige Raspberry Pi Zero 2W (~17€) vollkommen aus.
Raspberry Pi OS einrichten
Richtet zunächst Raspberry Pi OS Lite mit dem Raspberry Pi Imager ein. Wichtig: Im Imager unter „OS Customisation“ direkt SSH aktivieren, Hostname und WLAN (falls nötig) konfigurieren.
Sobald der Pi läuft, verbindet euch per SSH:
|
1 |
ssh pi@raspberrypi.local |
System aktualisieren:
|
1 |
sudo apt update && sudo apt upgrade -y |
Statische IP-Adresse vergeben
Pi-hole muss eine feste IP-Adresse haben – sonst zeigt der DNS der FritzBox ins Leere, wenn sich die IP des Pi ändert. Am einfachsten erledigt ihr das direkt in der FritzBox:
- FritzBox aufrufen: http://fritz.box
- Heimnetz → Netzwerk → Geräte und Benutzer
- Raspberry Pi anklicken → „Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen“ aktivieren

Alternativ direkt im Raspberry Pi OS über NetworkManager:
|
1 2 3 4 5 |
sudo nmcli con mod "Wired connection 1" ipv4.addresses 192.168.178.20/24 sudo nmcli con mod "Wired connection 1" ipv4.gateway 192.168.178.1 sudo nmcli con mod "Wired connection 1" ipv4.dns 127.0.0.1 sudo nmcli con mod "Wired connection 1" ipv4.method manual sudo nmcli con up "Wired connection 1" |
Pi-hole installieren
Das offizielle Installations-Script erledigt alles in einem Schritt:
|
1 |
curl -sSL https://install.pi-hole.net | bash |

Der Installer führt euch durch folgende Schritte:
- Netzwerk-Interface: eth0 (Kabel) oder wlan0 wählen
- Upstream-DNS: Welcher DNS-Server für nicht blockierte Domains genutzt wird – z.B. Cloudflare (1.1.1.1) oder Quad9 (9.9.9.9)
- Blocklisten: Standard-Blocklisten aktivieren (empfohlen)
- Admin-Interface: Web-Dashboard installieren (ja)
- Logging: Query-Log aktivieren (empfohlen für Statistiken)
Am Ende zeigt das Script das vergebene Admin-Passwort – dieses unbedingt notieren.
Pi-hole Web-Interface
Das Dashboard ist direkt im Browser erreichbar:
|
1 |
http://PI-ADRESSE/admin |

Das Dashboard zeigt:
- Gesamtzahl der DNS-Anfragen (heute / letzte 24h)
- Prozentsatz der blockierten Anfragen
- Top-blockierte Domains und aktivste Clients
- Live-Anfragen-Log
Admin-Passwort nachträglich ändern:
|
1 |
pihole setpassword |
FritzBox als DNS auf Pi-hole umstellen
Damit alle Geräte im Heimnetz automatisch Pi-hole nutzen, tragt ihr die IP des Pi als DNS-Server in der FritzBox ein:
- http://fritz.box → Heimnetz → Netzwerk → DNS-Rebind-Schutz
- Heimnetz → Netzwerk → DNS-Server: IP des Raspberry Pi eintragen

Wichtig: Tragt als alternativen DNS-Server die IP der FritzBox selbst (z.B. 192.168.178.1) ein. Fällt der Pi einmal aus, funktioniert das Internet trotzdem weiter.
Ab jetzt leiten alle Geräte ihre DNS-Anfragen automatisch über Pi-hole – ohne manuelle Konfiguration auf jedem Gerät.
Blocklisten verwalten und erweitern
Pi-hole liefert eine Standard-Blockliste mit. Ihr könnt weitere Listen im Web-Interface hinzufügen:
Adlists → Add:
Empfohlene zusätzliche Blocklisten:
| Liste | Inhalt | Einträge |
|---|---|---|
| Steven Black Unified | Werbung + Malware + Social | ~150.000 |
| OISD Big | Umfassende Werbeblocker-Liste | ~300.000 |
| Hagezi Multi Pro | Tracker + Telemetrie | ~200.000 |
Nach dem Hinzufügen neuer Listen Gravity aktualisieren:
|
1 |
pihole -g |
Domains freigeben (Whitelist) und manuell blockieren (Blacklist)
Manchmal blockiert Pi-hole versehentlich legitime Dienste. Domains freigeben:
|
1 |
pihole --white-add domain.de |
Oder im Web-Interface unter Whitelist. Domain manuell blockieren:
|
1 |
pihole --black-add nervige-domain.de |
Pi-hole aktualisieren
|
1 |
pihole -up |
Das aktualisiert Pi-hole, alle Blocklisten und das FTL-Backend in einem Schritt. Empfehlenswert ist ein Cronjob für automatische Blocklisten-Updates:
|
1 |
sudo crontab -e |
|
1 2 |
# Gravity täglich um 3 Uhr nachts aktualisieren 0 3 * * * pihole -g |
Statistiken per Kommandozeile
|
1 2 3 4 5 6 7 8 |
# Übersicht aller heutigen Anfragen pihole -c # Live-Log der DNS-Anfragen pihole -t # Blockierrate und Statistiken pihole status |
Pi-hole mit Unbound als rekursivem DNS (optional)
Für maximale Privatsphäre könnt ihr Unbound als rekursiven DNS-Resolver einrichten. Damit fragt Pi-hole nicht mehr bei einem öffentlichen DNS-Anbieter (Cloudflare, Google) nach, sondern löst Domains direkt bei den autoritativen Root-Nameservern auf – völlig ohne Drittanbieter:
|
1 |
sudo apt install unbound -y |
Konfiguration anlegen:
|
1 |
sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
server: verbosity: 0 interface: 127.0.0.1 port: 5335 do-ip4: yes do-udp: yes do-tcp: yes do-ip6: no prefer-ip6: no harden-glue: yes harden-dnssec-stripped: yes use-caps-for-id: no edns-buffer-size: 1232 prefetch: yes num-threads: 1 so-rcvbuf: 1m private-address: 192.168.0.0/16 private-address: 10.0.0.0/8 |
|
1 |
sudo systemctl restart unbound |
Im Pi-hole Web-Interface unter Settings → DNS als Custom Upstream DNS 127.0.0.1#5335 eintragen und alle anderen DNS-Server deaktivieren.
Häufige Probleme und Lösungen
Bestimmte Seiten funktionieren nicht mehr
Im Pi-hole Dashboard unter Query Log prüfen, ob die Domain geblockt wird. Falls ja: Domain in die Whitelist aufnehmen.
Pi-hole reagiert nicht (DNS-Fehler im gesamten Netz)
|
1 2 |
pihole status sudo systemctl restart pihole-FTL |
Falls der Pi nicht mehr erreichbar ist, tragt in der FritzBox vorübergehend 1.1.1.1 als DNS ein, bis der Pi wieder läuft.
Port 53 bereits belegt (auf Pi 5 / Bookworm)
Unter Bookworm kann systemd-resolved Port 53 blockieren:
|
1 2 3 4 |
sudo systemctl disable systemd-resolved sudo systemctl stop systemd-resolved sudo rm /etc/resolv.conf echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf |
