In der heutigen digitalen Welt, in der Werbung und Tracking allgegenwärtig sind, suchen viele Nutzer nach Möglichkeiten, ihre Privatsphäre zu schützen und ein effizienteres Surferlebnis zu genießen. Hier kommt Pi-hole ins Spiel – ein leistungsstarkes Open-Source-Werkzeug, das als DNS-Sinkhole fungiert und Werbung sowie unerwünschte Inhalte auf Netzwerkebene blockiert. Anders als herkömmliche Adblocker, die auf einzelnen Geräten installiert werden müssen, bietet Pi-hole eine netzwerkweite Lösung, die alle Geräte in Ihrem Heimnetzwerk schützt – von Smartphones über Smart-TVs bis hin zu IoT-Geräten.
Datum | Änderungen |
---|---|
14.05.2020 | Erstellung dieser Anleitung |
16.05.2020 | Anpassung der Anleitung. |
22.02.2025 | Update der 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.
0. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu )
- Raspberry Pi – Docker installieren
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
services: pihole: container_name: pihole image: pihole/pihole:latest ports: # DNS Ports - "53:53/tcp" - "53:53/udp" # Default HTTP Port - "80:80/tcp" # Default HTTPs Port. FTL will generate a self-signed certificate - "443:443/tcp" # Uncomment the below if using Pi-hole as your DHCP Server #- "67:67/udp" environment: TZ: 'Europe/Berlin' FTLCONF_webserver_api_password: 'superSicher' volumes: - './etc-pihole:/etc/pihole' - './etc-dnsmasq.d:/etc/dnsmasq.d' cap_add: - NET_ADMIN restart: unless-stopped
Notwendige Anpassungen:
- 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
Hallo,
habe mir das eben auf dem Host installiert, auf dem ich auch die Docker NextCloud Traefik-Crowdsec laufen haben. Ist das sinnvoll? Davon abgesehen, bekomme auch ich den Port 53 Fehler:
Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint pihole (f5e9a28f0f746938ec47d067702159f684901b9e2d6d8d02170a8fee9d8bd783): failed to bind host port for 0.0.0.0:53:172.24.8.2:53/tcp: address already in use
Kann das mit Crowdsec zu tun haben? Sorry, bin kein Experte…
LG
Dietmar
Moin, ich habe es gerade mal probiert. Könnte ihr weitere Blocklisten hinzufügen. Ich kann welche hinzufügen, aber die Domainanzahl erhöht sich nicht. Bei euch?
Hallo
Christian , Danke für die schnelle Arbeit. In der ersten Zeile ist der erste Buchstabe von Service verschluckt worden. Da ich alles unter openmediavault laufen habe gibt es noch etwas Probleme. Als DNS einfach nur die IP vom NAS eintragen geht nicht. Mal sehen ob es klappt. Gruß Andreas
Hej
Christian ,
super Anleitung. Damit ich meine Wireguard-Client-IPs im Pihole sehen kann (wenn interesse besteht, wie das geht, teile ich das gerne) muss ich folgenden Befehl ausführen im Pihole container:
Ich scheitere leider daran, wie ich das beim Containerstart automatisch erledigen kann.
Habt ihr da ne Idee?
Gruß
Hallo Holger,
erst einmal vielen Dank für die sehr leicht nachvollziehbare Anleitung.
Ich habe schon einige andere versucht nachzuvollziehen und bin jedes Mal gescheitert.
Also Daumen hoch!
Ich habe gerade auf einem Laptop mit 64 Bit Linux System, das Debian basiert ist (MX-19.4ahs), mithilfe deiner Anleitung zunächst Docker und dann pihole installiert.
Das scheint auch glatt funktioniert zu haben.
Ich möchte nun auf genau diesem Laptop auf die Weboberfläche von pihole zugreifen.
Ich habe hierzu die IP dieses Laptops im lokalen Netz nachgeschaut mit “ip address” und bekomme nachstehende Ausgabe:
link/ether 5c:26:0a:89:1c:f6 brd ff:ff:ff:ff:ff:ff
inet 192.168.178.XX/XX brd ………….
XX als Stellvertreter
Wenn ich dieses 192.168.178.XX/XX im Browser eingebe, “website nicht erreichbar”.
Wie kann ich auf diesem Laptop, also ausschließlich lokal auf dem Rechner, auf dem auch Docker und pihole installiert sind, auf die Weboberfläche von pihole zugreifen?
Vielen Dank und ein schönes Wochenende
Karl
Hallo,
ich habe versucht anhand deiner Anleitung den Pi-Hole im Docker aufzusetzen. Dies hat mal gar nichts funktioniert. Fehlen evtl. noch Infos in den Schritten? Schritt 2 ist auch nicht ganz verständlich. Es mus doch sciherlich mehr angepasst als nur das PW oder nicht?
Beste Grüße
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?!
Hi,
wenn nur port 53 angegeben wird, wo kommt dann das webinterface her?
Cheers,
Malte
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
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?