Ich zeige euch hier, wie ihr Pi hole in wenigen Minuten mit Docker realisiert. Pi hole dient als DNS Server um Werbung zu blockieren.
Update
16.05.2020 | Anpassung der Anleitung. |
14.05.2020 | Erstellung dieser Anleitung. |
Inhaltsverzeichnis
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.
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
version: "3" # 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 restart: unless-stopped ports: - "53:53/tcp" - "53:53/udp" environment: TZ: 'Europe/Berlin' WEBPASSWORD: 'sicheresPasswort' # hier euer Passwort eingeben volumes: - '/opt/containers/pi-hole/pihole/:/etc/pihole/' - '/opt/containers/pi-hole/dnsmasq/:/etc/dnsmasq.d/' dns: - 127.0.0.1 - 1.1.1.1
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
- DAVx⁵ – Android Kalender per CalDAV integrieren (z. B. Nextcloud) - 28. Februar 2021
- KeePass – Passwörter über eigene Cloud synchronisieren - 17. Februar 2021
- FRITZ!Box 6660 Cable mit Vodafone Cable nutzen - 16. Februar 2021
16 Kommentare
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?
Hallo,
du hast Recht.
Es gibt keinen Sinn Pi hole ins Internet zu stellen.
Ich habe die Anleitung entsprechend angepasst.
LG
Christian
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 Marcel,
der Grund ist, dass PI Hole bei mir nur als DNS Server fungieren soll. Daher habe andere Funktionen wie DHCP (inkl. Ports) nicht benötigt.
LG
Christian
Hi,
wenn nur port 53 angegeben wird, wo kommt dann das webinterface her?
Cheers,
Malte
Durch die Default Config im Docker Compose File ?
ports:
– „53:53/tcp“
– „53:53/udp“
– „67:67/udp“
– „80:80/tcp“
– „443:443/tcp“
Lg,
Holger
Das klappt leider so nicht. Es kommt kein Webinterface hoch.
Nachtrag:
So geht es:
Im YML-File ändern:
ports:
– „53:53/tcp“
– „53:53/udp“
– „80:80/tcp“
– „80:80/udp“
Warum macht das keinen Sinn, wenn die FritzBox statt beim Provider erst mal beim eigenen Pihole DNS nachfragt? Dieser könnte so auch von Freunden, Familie und von unterwegs genutzt werden …
Hallo,
also so lange Pi Hole nur aus dem eigenen Netzwerk erreichbar ist, ist alles gut. Problematisch wirds, wenn Pi Hole einfach per Internet erreichbar ist.
Zu Beginn des Artikels verweise ich auf das BSI. Dort kann man alles nachlesen.
LG
Christian
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?!
Hallo,
mittels „netstat“ kannst du ermitteln, welche Anwendung auf Port 53 läuft.
Kann ich dir so auswendig nicht sagen.
LG
Christian
Bei unbuntu hilft diese Anleitung: https://techgoat.net/index.php?id=116
Wenn OMV Systemd einsetzt, dann könnte das der lokale DNS Resolver sein. Einfach ein netstat absetzen.
So schaut das z.B. auf nem aktuellen Xubuntu aus:
sudo netstat -tulpn | grep 53
[sudo] Passwort für …..
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 466/systemd-resolve
udp 0 0 0.0.0.0:5353 0.0.0.0:* 897/avahi-daemon: r
udp 0 0 127.0.0.53:53 0.0.0.0:* 466/systemd-resolve
udp6 0 0 :::5353 :::* 897/avahi-daemon: r
Nachtrag: Eventuell ist auch einfach die Prüfung von OMV für den Boppes.
Die Meldung schaut so für mich aus:
proxy: listen tcp 0.0.0.0:53: bind: address already in use
0.0.0.0 ist eigentlich ein IPv4 „Platzhalter“ für alle verfügbaren Interfaces und das schließt natürlich auch localhost (127.0.0.1) ein. An der externen IP sollte der Port 53 immer verfügbar sein und der pi hole Container stressfrei startbar sein. Ich bin nach einigen Experimenten im Docker Container mit pihole in ne VBox Debian VM abgewandert.
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