Docker Pi-Hole, Update Lists schlägt fehl
Hallo Zusammen,
ich versuche gerade Docker Pi-Hole zum laufen zu bringen.
Pi-Hole habe ich wie folgt gestartet:
Es wurde sauber heruntergeladen und auch ohne Fehler gestartet.
Den Port habe ich absichtlich in 8000 geändert, da ich bereits etwas mit Port 80 am laufen habe.
Jetzt habe ich allerdings folgende Fehler:
- Rufe ich (http://pi.hole:8000/admin) auf, öffnet die Seite ohne jegliche Probleme. Bin allerdings direkt eingeloggt ohne Passwortabfrage
- Möchte ich die Listen Updaten, erscheint:
Rufe ich dann auf, erscheint folgende Meldung:
Der Container ist allerdings gestartet.
Ich weiß hier leider nicht mehr weiter?
ich versuche gerade Docker Pi-Hole zum laufen zu bringen.
Pi-Hole habe ich wie folgt gestartet:
sudo docker run -d
--name pihole
-p 53:53/tcp
-p 53:53/udp
-p 8000:80
-v /etc/pihole/:/etc/pihole/
-v /etc/dnsmasq.d/:/etc/dnsmasq.d/
--restart=unless-stopped
diginc/pi-hole-multiarch:debian_armhf
Es wurde sauber heruntergeladen und auch ohne Fehler gestartet.
Den Port habe ich absichtlich in 8000 geändert, da ich bereits etwas mit Port 80 am laufen habe.
Jetzt habe ich allerdings folgende Fehler:
- Rufe ich (http://pi.hole:8000/admin) auf, öffnet die Seite ohne jegliche Probleme. Bin allerdings direkt eingeloggt ohne Passwortabfrage
- Möchte ich die Listen Updaten, erscheint:
Installation Failure: /etc/pihole/setupVars.conf does not exist!
Please run 'pihole -r', and choose the 'reconfigure' option to fix.
pihole -r
sudo: pihole: command not found
Ich weiß hier leider nicht mehr weiter?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 378877
Url: https://administrator.de/contentid/378877
Ausgedruckt am: 23.11.2024 um 16:11 Uhr
35 Kommentare
Neuester Kommentar
Das ist schon komisch, denn das Kommando pihole startet den globalen Konfig Assistenten.
Möglich das mit deinem Suchpfad irgendwas nicht stimmt und er deshalb das Kommando nicht findet ?!
Vermutlich klappt dann auch kein pihole -h oder pihole -c , richtig ?
Such es mal in seinem Verzeichnis wo es steht und starte es genau dort mit ./pihole -r das sollte dann immer klappen.
Zeigt aber auch das mit deiner Installation etwas nicht stimmt, normal lässt sich das problemlos aufrufen.
Infos dazu auch hier:
https://www.heise.de/ct/ausgabe/2018-11-Schadcode-und-Werbung-mit-Raspbe ...
Möglich das mit deinem Suchpfad irgendwas nicht stimmt und er deshalb das Kommando nicht findet ?!
Vermutlich klappt dann auch kein pihole -h oder pihole -c , richtig ?
Such es mal in seinem Verzeichnis wo es steht und starte es genau dort mit ./pihole -r das sollte dann immer klappen.
Zeigt aber auch das mit deiner Installation etwas nicht stimmt, normal lässt sich das problemlos aufrufen.
Infos dazu auch hier:
https://www.heise.de/ct/ausgabe/2018-11-Schadcode-und-Werbung-mit-Raspbe ...
Hi Wussa,
was gerne auch vergessen wird. Rufst du deine Befehle im Container "docker exec ...." oder direkt auf deiner Host Konsole auf?
Denn ein direkter aufruf in der Konsole wird so nicht funktionieren die logic und die binaries liegen im Container.
Falls du es von der Projektseite hast müsstest du beim aufrufen von "docker run ... -e ..." noch die enviroment variablen setzten welche Benutzername/Passwort/IP/Port/sonstige Konfiguration an die install Routine übergibt.
Weiteres:
https://github.com/diginc/docker-pi-hole/blob/master/README.md
Grüße
Edit: Wenn du es richtig konfiguriert hast musst seit release 3 nicht mehr selber dannach schauen sondern cron innerhalb des Containers aktualisiert die listen von allein.
was gerne auch vergessen wird. Rufst du deine Befehle im Container "docker exec ...." oder direkt auf deiner Host Konsole auf?
Denn ein direkter aufruf in der Konsole wird so nicht funktionieren die logic und die binaries liegen im Container.
Falls du es von der Projektseite hast müsstest du beim aufrufen von "docker run ... -e ..." noch die enviroment variablen setzten welche Benutzername/Passwort/IP/Port/sonstige Konfiguration an die install Routine übergibt.
Weiteres:
https://github.com/diginc/docker-pi-hole/blob/master/README.md
Grüße
Edit: Wenn du es richtig konfiguriert hast musst seit release 3 nicht mehr selber dannach schauen sondern cron innerhalb des Containers aktualisiert die listen von allein.
Automatic Ad List Updates - since the 3.0+ release, cron is baked into the container and will grab the newest versions of your lists and flush your logs. Set your TZ environment variable to make sure the midnight log rotation syncs up with your timezone's midnight.
Hallo,
das ist auch falsch. Du musst natürlich auch den Container angeben, wo du das ausführen willst.
In deinem Fall so:
P.S. Hättest du auch mit der Hilfefunktion selbst feststellen können ;)
EDIT:
Was das aktualisieren der Liste angeht: wie bereits @IrunGoldstein geschrieben hat, wird ab Version 3.0 das automatisch per Cron erledigt. Siehe auch das README was im Docker Hub verlinkt wurde. Dadurch das du das latest Docker Image verwendet hast, hast du die Version 3.3.1. Somit musst das nicht mehr selbst aktualisieren.
Viele Grüße,
Exception
Zitat von @wusa88:
Ich hätte vielleicht erwähnen sollen, dass es sich bei mir um einen Pi 3 handelt, auf dem ich Pi-Hole betreiben will.
Ein Ausführen von bringt folgende Meldung:
Ich hätte vielleicht erwähnen sollen, dass es sich bei mir um einen Pi 3 handelt, auf dem ich Pi-Hole betreiben will.
Ein Ausführen von
sudo docker exec pihole -r
OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"-r\": executable file not found in $PATH": unknown
>
das ist auch falsch. Du musst natürlich auch den Container angeben, wo du das ausführen willst.
docker exec <container id/name> <befehl>
In deinem Fall so:
docker exec pihole pihole -r
P.S. Hättest du auch mit der Hilfefunktion selbst feststellen können ;)
docker exec --help
EDIT:
Was das aktualisieren der Liste angeht: wie bereits @IrunGoldstein geschrieben hat, wird ab Version 3.0 das automatisch per Cron erledigt. Siehe auch das README was im Docker Hub verlinkt wurde. Dadurch das du das latest Docker Image verwendet hast, hast du die Version 3.3.1. Somit musst das nicht mehr selbst aktualisieren.
Automatic Ad List Updates - since the 3.0+ release, cron is baked into the container and will grab the newest versions of your lists and flush your logs.
Viele Grüße,
Exception
Hallo,
du hast doch jetzt hoffentlich nicht per docker execute den Container von "innen" aktualisiert bzw. verändert? Sowas sollte man immer unterlassen bzw. ausschließlich nur zum Testen durchführen.
Ein Docker Image wird immer mit einem Dockerfile gebaut. Ein Dockerfile gleicht einer Bauanleitung. Das gebaute Image kann und sollte man später nicht mehr verändern. Für jede Änderung muss mithilfe des Dockerfiles ein neues Image erstellt werden.
Wenn du also Änderungen am Image durchführen willst, musst du dies über das Dockerfile machen.
Übrigens sind deine Änderungen durch den Neustart des Containers ohnehin verloren gegangen.
Denn beim "Neustart" wird das Image neugeladen. Für Daten, die persistent abgespeichert werden sollen, musst du ein Volume erstellen bzw. ein Mountpoint einrichten.
Am besten du beschäftigst dich erstmals mit den Grundlagen und das Konzept von Docker.
Viele Grüße,
Exception
du hast doch jetzt hoffentlich nicht per docker execute den Container von "innen" aktualisiert bzw. verändert? Sowas sollte man immer unterlassen bzw. ausschließlich nur zum Testen durchführen.
Ein Docker Image wird immer mit einem Dockerfile gebaut. Ein Dockerfile gleicht einer Bauanleitung. Das gebaute Image kann und sollte man später nicht mehr verändern. Für jede Änderung muss mithilfe des Dockerfiles ein neues Image erstellt werden.
Wenn du also Änderungen am Image durchführen willst, musst du dies über das Dockerfile machen.
Übrigens sind deine Änderungen durch den Neustart des Containers ohnehin verloren gegangen.
Denn beim "Neustart" wird das Image neugeladen. Für Daten, die persistent abgespeichert werden sollen, musst du ein Volume erstellen bzw. ein Mountpoint einrichten.
Am besten du beschäftigst dich erstmals mit den Grundlagen und das Konzept von Docker.
Viele Grüße,
Exception
Guten Morgen,
Für die meisten Images im Docker Hub werden Build Tools eingesetzt um die Images automatisiert auf den aktuellen Stand zu halten. Erkennen kannst du das indem direkt unter dem Namen des Images noch zusätzlich "automated build dransteht.
Beispiel: Bei dem Image "diginc/pi-hole" wird das Image regelmäßig automatisiert gebaut, während das bei dem zweiten Image "diginc/pi-hole-multiarch" nicht der Fall ist.
Da du das zweite Image nutzt, musst du also selbst dich um die Aktualisierung des Images kümmern. Dazu klonst du dir erstmals das Repository von Github, wechselst in das Verzeichnis und erstellst mit Docker ein neues Image.
Korrekt. In deinem Fall hast du zwei Mounts einegrichtet: "/etc/pihole/" und für "/etc/pihole/". Das Verzeichnis wird auf dem Hostsystem erstellt und als Mountpoint für den Container verfügbar gemacht. Der Container kann somit Daten in das Share speichern. Wird der Container beendet, so sind die Daten nach wie vor vorhanden. Wenn du den Container wieder startest, dann kann er die Daten wieder einlesen. Grundsätzlich geht es dabei, die Nutzdaten von den Systemdaten zu trennen. Die Systemdaten braucht man nach Ende der Containerlaufzeit nicht mehr und somit müssen diese nicht gespeichert werden.
Kein Problem. Dann kann ich dir die Guide vom Hersteller empfehlen.
https://docs.docker.com
Ansonsten gibt es inzwischen ein sehr gutes umfangreiches Buch vom Rheinwerk-Verlag.
Allerdings wurde vom Verlag eine neue aktualisierte Auflage angekündigt, die erst im Oktober erscheint.
https://www.rheinwerk-verlag.de/skalierbare-container-infrastrukturen_46 ...
Viele Grüße,
Exception
Das habe ich bisher noch nicht wirklich verwendet, bzw. noch keines selber gebaut. Ich nutze eigentlich nur die Docker Images von Docker Hub.
Für die meisten Images im Docker Hub werden Build Tools eingesetzt um die Images automatisiert auf den aktuellen Stand zu halten. Erkennen kannst du das indem direkt unter dem Namen des Images noch zusätzlich "automated build dransteht.
Beispiel: Bei dem Image "diginc/pi-hole" wird das Image regelmäßig automatisiert gebaut, während das bei dem zweiten Image "diginc/pi-hole-multiarch" nicht der Fall ist.
Da du das zweite Image nutzt, musst du also selbst dich um die Aktualisierung des Images kümmern. Dazu klonst du dir erstmals das Repository von Github, wechselst in das Verzeichnis und erstellst mit Docker ein neues Image.
git clone https://github.com/diginc/docker-pi-hole.git
cd docker-pi-hole
docker build -t exception/pi-hole-multiarch -f Dockerfile_debian_armhf .
Das denke ich habe ich mit dem Parameter -v gemacht?
Korrekt. In deinem Fall hast du zwei Mounts einegrichtet: "/etc/pihole/" und für "/etc/pihole/". Das Verzeichnis wird auf dem Hostsystem erstellt und als Mountpoint für den Container verfügbar gemacht. Der Container kann somit Daten in das Share speichern. Wird der Container beendet, so sind die Daten nach wie vor vorhanden. Wenn du den Container wieder startest, dann kann er die Daten wieder einlesen. Grundsätzlich geht es dabei, die Nutzdaten von den Systemdaten zu trennen. Die Systemdaten braucht man nach Ende der Containerlaufzeit nicht mehr und somit müssen diese nicht gespeichert werden.
Das versuche ich, und lese auch wirklich viel. Habe vorher nur mit VM zu tun gehabt und jetzt ist Docker für mich komplett neu. Ich probiere zwar einiges aber es gibt denke ich noch sehr viel was ich wissen müsste
Kein Problem. Dann kann ich dir die Guide vom Hersteller empfehlen.
https://docs.docker.com
Ansonsten gibt es inzwischen ein sehr gutes umfangreiches Buch vom Rheinwerk-Verlag.
Allerdings wurde vom Verlag eine neue aktualisierte Auflage angekündigt, die erst im Oktober erscheint.
https://www.rheinwerk-verlag.de/skalierbare-container-infrastrukturen_46 ...
Viele Grüße,
Exception
Hi Wusa,
bin leider gestern nicht mehr dazu gekommen.
Wünsche mir aber das du es nutzen kannst weswegen ich es dir ausführlich zeige.
Wenn das Grundprinzip der Docker Container verstanden ist fluppt das auch besser.
So wie exeption es schon erleutert hat führst du bitte keine anderen befehle in Containern aus ( denn der Container ist nach einem Rezept das Dockerfile genannt gebaut und betriebsbereit für genau diesen fall der Anwendung. Der Koch (Entwickler/Maintainer) hat im besten fall alles so vorbereitet das jeder der sich an sein Rezept hält exakt das selbe Ergebnis bekommt. Egal ob wie in deinem Fall 1 Pihole Container oder 1000 Nginx Container die im Cluster verteilt über mehrere Rechenzentren laufen ist der Prozess immer der selbe.
Jetzt aber zu Pihole.
Wie schon mehrmals erwähnt und von dir gefunden pushed der Maintainer sein Image auf Dockerhub sprich die von ihm vorbereitete und nach seinem Rezept gebaute Version mit allem was nötig ist um genau die Aufgabe Pihole auszuführen. Nicht mehr nicht weniger.
Wenn du dem Link auf Dockerhub folgst zu Github wo das Repository zu diesem Image liegt findest du die Anleitung zur Konfiguration und Nutzung von Pihole.
Dann beginnen wir mal:
1. In der README erläutert der Maintainer das folgende variablen mindestens benötigt werden um es erfolgreich zu starten.
Docker Run Kommando ist auch aufgeführt:
Jetzt setzen wir alles zusammen für deine Bedürfnisse:
ServerIP musst du ersetzten durch deine IP und die data pfade natürlich bitte anpassen falls nicht legt docker die Verzeichnisse für dich an auf deinem System.
Wichtig in deinem fall da es auf einem PI läuft -multiarch:debian_armhf
Dann falls die logs das Random Passwort nicht direkt ausgegeben haben das Passwort für admin setzten:
Meine Ausgabe:
Dann folge mir bitte zu:
http://deineIP:8000/admin
Müsstest folgendes sehen:
Einloggen mit deinem vergebenen Passwort und erfreuen.
Ps. Firewall ports 53 tcp udp und 8000 tcp nicht vergessen falls vorhanden.
Grüße
bin leider gestern nicht mehr dazu gekommen.
Wünsche mir aber das du es nutzen kannst weswegen ich es dir ausführlich zeige.
Wenn das Grundprinzip der Docker Container verstanden ist fluppt das auch besser.
So wie exeption es schon erleutert hat führst du bitte keine anderen befehle in Containern aus ( denn der Container ist nach einem Rezept das Dockerfile genannt gebaut und betriebsbereit für genau diesen fall der Anwendung. Der Koch (Entwickler/Maintainer) hat im besten fall alles so vorbereitet das jeder der sich an sein Rezept hält exakt das selbe Ergebnis bekommt. Egal ob wie in deinem Fall 1 Pihole Container oder 1000 Nginx Container die im Cluster verteilt über mehrere Rechenzentren laufen ist der Prozess immer der selbe.
Jetzt aber zu Pihole.
Wie schon mehrmals erwähnt und von dir gefunden pushed der Maintainer sein Image auf Dockerhub sprich die von ihm vorbereitete und nach seinem Rezept gebaute Version mit allem was nötig ist um genau die Aufgabe Pihole auszuführen. Nicht mehr nicht weniger.
Wenn du dem Link auf Dockerhub folgst zu Github wo das Repository zu diesem Image liegt findest du die Anleitung zur Konfiguration und Nutzung von Pihole.
Dann beginnen wir mal:
1. In der README erläutert der Maintainer das folgende variablen mindestens benötigt werden um es erfolgreich zu starten.
Docker Run Kommando ist auch aufgeführt:
docker run -d \
--name pihole \
-p 53:53/tcp -p 53:53/udp -p 80:80 -p 443:443 \
-v "${DOCKER_CONFIGS}/pihole/:/etc/pihole/" \
-v "${DOCKER_CONFIGS}/dnsmasq.d/:/etc/dnsmasq.d/" \
-e ServerIP="${IP}" \
-e ServerIPv6="${IPv6}" \
--restart=unless-stopped \
diginc/pi-hole:latest
Jetzt setzen wir alles zusammen für deine Bedürfnisse:
docker run -d --name mypihole -p 53:53/tcp -p 53:53/udp -p 8000:80 -v /docker/data/phihole/:/etc/pihole/ -v /docker/data/dnsmasq.d/:/etc/dnsmasq.d/ -e ServerIP=141.28.105.101 --restart=unless-stopped diginc/pi-hole-multiarch:debian_armhf
ServerIP musst du ersetzten durch deine IP und die data pfade natürlich bitte anpassen falls nicht legt docker die Verzeichnisse für dich an auf deinem System.
Wichtig in deinem fall da es auf einem PI läuft -multiarch:debian_armhf
Dann falls die logs das Random Passwort nicht direkt ausgegeben haben das Passwort für admin setzten:
Meine Ausgabe:
clouduser@cloud:~$ docker run -d --name mypihole -p 53:53/tcp -p 53:53/udp -p 8000:80 -v /docker/data/phihole/:/etc/pihole/ -v /docker/data/dnsmasq.d/:/etc/dnsmasq.d/ -e ServerIP=141.28.105.101 --restart=unless-stopped diginc/pi-hole
90f049af7ff44ef3b0fbea87a12f22debcb9a8127935f85b33262208cf884e9a
clouduser@cloud:~$ docker exec mypihole pihole -a -p 12345678
[✓] New password set
Dann folge mir bitte zu:
http://deineIP:8000/admin
Müsstest folgendes sehen:
Einloggen mit deinem vergebenen Passwort und erfreuen.
Ps. Firewall ports 53 tcp udp und 8000 tcp nicht vergessen falls vorhanden.
Grüße
Hi,
für Docker gibt es ein spezielles internes Netzwerk. (In deinem Fall 127.17.0.x). Jeder Container erhält eine IP aus diesem Bereich. Das ist aber wie gesagt intern und hat nichts mit dem Parameter zu tun. Ich kenne jetzt Pi Hole nicht so gut aber vermutlich wird damit bestimmt, auf welche Adresse der Dienst lauschen soll. Laut der Doku musst du dort die IP Adresse deines PI`s angeben. Somit richtig.
Mit diesem Befehl wird das Image gebaut. Die Installationen und Änderungen sind somit im Image - nicht auf dem Hostsystem selbst. Mit dem Image wird dann später der Container gestartet. Über Docker Hub beziehst du immer fertige Images. Deshalb kannst du den Container sofort starten.
Viele Grüße,
Exception
Wenn ein Docker Container ohne die Angabe einer IP gestartet wird, dann wird immer eine IP aus dem Bereich 127.17.0.x vergeben. Jetzt wird aber speziell eine IP beim dem Starten dieses Containers verlangt. Ich habe jetzt die Standard IP vergeben die auch mein Pi hat. Ist das richtig?
für Docker gibt es ein spezielles internes Netzwerk. (In deinem Fall 127.17.0.x). Jeder Container erhält eine IP aus diesem Bereich. Das ist aber wie gesagt intern und hat nichts mit dem Parameter zu tun. Ich kenne jetzt Pi Hole nicht so gut aber vermutlich wird damit bestimmt, auf welche Adresse der Dienst lauschen soll. Laut der Doku musst du dort die IP Adresse deines PI`s angeben. Somit richtig.
Und..
Bei diesem Befehl wurde relativ viel nachinstalliert.
Wurden die Pakete direkt auf meine System installiert oder alles isoliert im Container?
Bei diesem
sudo docker build -t wusa/pi-hole-multiarch -f Dockerfile_debian_armhf .
Wurden die Pakete direkt auf meine System installiert oder alles isoliert im Container?
Mit diesem Befehl wird das Image gebaut. Die Installationen und Änderungen sind somit im Image - nicht auf dem Hostsystem selbst. Mit dem Image wird dann später der Container gestartet. Über Docker Hub beziehst du immer fertige Images. Deshalb kannst du den Container sofort starten.
Viele Grüße,
Exception
Edit: zu langsam ;)
Freut mich das es läuft
Das mit der IP ist kein Problem da die Software pihole jetzt annimt das es auf der IP 192.168.7.12 erreichbar ist.
Was ja auch stimmt. Denn alle ports die beim aufruf mit "docker run ... -p ..." gestartet werden, mappt die Dockerengine im Hintergrund per iptables mit regeln an die docker internenen ip adressen und sie werden erreichbar gemacht.
Intern kann docker also als ips verwenden wie es lustig ist und sorgt selbständig für das Routing auf den Interfaces.
Das bezieht sich jetzt auf linux mit Standart Docker Installation denn alles davon kannst du umkonfigurieren wie du willst und es in DEINE Umgebung passt.
Arbeite dich echt mal durch die Docker Dokumentation und mach weiter auf Docker Compose man kann sich fantastische orchestrationen für Server und Clients bauen welche extrem schnell gesichert/ausgerollt werden können.
Grüße
Freut mich das es läuft
Das mit der IP ist kein Problem da die Software pihole jetzt annimt das es auf der IP 192.168.7.12 erreichbar ist.
Was ja auch stimmt. Denn alle ports die beim aufruf mit "docker run ... -p ..." gestartet werden, mappt die Dockerengine im Hintergrund per iptables mit regeln an die docker internenen ip adressen und sie werden erreichbar gemacht.
Intern kann docker also als ips verwenden wie es lustig ist und sorgt selbständig für das Routing auf den Interfaces.
Das bezieht sich jetzt auf linux mit Standart Docker Installation denn alles davon kannst du umkonfigurieren wie du willst und es in DEINE Umgebung passt.
Arbeite dich echt mal durch die Docker Dokumentation und mach weiter auf Docker Compose man kann sich fantastische orchestrationen für Server und Clients bauen welche extrem schnell gesichert/ausgerollt werden können.
Grüße
Hi,
Ja. Bei diesem Parameter handelt es sich übrigens nur um eine Umgebungsvariable, die dann innerhalb des Containers zur Verfügung steht und von der Anwendung verwendet wird. ;)
Du musst diese also nur an die neue IP anpassen.
Viele Grüße,
Exception
Zitat von @wusa88:
Wenn ich den Pi jetzt in ein anderes Netz nehme, brauche ich dann nur den Container zu stoppen, die IP vom PI selbst ändern und dann den Container mit der neuen IP wieder starten?
Würde das funktionieren?
Wenn ich den Pi jetzt in ein anderes Netz nehme, brauche ich dann nur den Container zu stoppen, die IP vom PI selbst ändern und dann den Container mit der neuen IP wieder starten?
Würde das funktionieren?
Ja. Bei diesem Parameter handelt es sich übrigens nur um eine Umgebungsvariable, die dann innerhalb des Containers zur Verfügung steht und von der Anwendung verwendet wird. ;)
Du musst diese also nur an die neue IP anpassen.
-e ServerIP=192.168.7.12
Viele Grüße,
Exception
Hi,
klar geht das. Wie bereits oben geschrieben, mit dem Parameter -e vergibst du dem Container keine IP, sondern du setzt nur eine Umgebungsvariable. Das hat weder was mit Docker noch was mit dem Netzwerk zu tun. Warum man für den Pi Hole eine solche Umgebungsvariable setzen muss, kann dir nur der Entwickler dieses Dockerfiles sagen.
Der Container selbst befindet sich in einem internen Docker Netzwerk. Die Docker Bridge setzt das Forwarding der IP Pakete mit NAT (Masquerading) um. Dazu wird iptables verwendet. Somit kann der Container mit der Außenwelt kommunizieren, unabhängig in welches Netzwerk gerade dein Pi hängt.
Viele Grüße,
Exception
klar geht das. Wie bereits oben geschrieben, mit dem Parameter -e vergibst du dem Container keine IP, sondern du setzt nur eine Umgebungsvariable. Das hat weder was mit Docker noch was mit dem Netzwerk zu tun. Warum man für den Pi Hole eine solche Umgebungsvariable setzen muss, kann dir nur der Entwickler dieses Dockerfiles sagen.
Der Container selbst befindet sich in einem internen Docker Netzwerk. Die Docker Bridge setzt das Forwarding der IP Pakete mit NAT (Masquerading) um. Dazu wird iptables verwendet. Somit kann der Container mit der Außenwelt kommunizieren, unabhängig in welches Netzwerk gerade dein Pi hängt.
Viele Grüße,
Exception
Hi,
sicher dass der Pi Hole die Anzeigen blockiert und nicht irgendein Adblocker auf dein Smartphone?
Ansonsten schau mal mit dem Befehl, ob der Container richtig initialisiert wurde bzw. ob eventuell im Hintergrund irgendwelche Fehler entstanden sind:
Daran sollte es eigentlich nicht liegen, wenn schon zwei Dienste in einem Container sind (sollte man normalerweise auch nicht machen), dann wird der Webserver lokal die Daten beim DNS Server abfragen. Die Frage ist halt nur wie er das macht. Hier kenne ich mich mit Pi Hole leider nicht so gut aus. Vermutlich werden beim dnsmasq die Queries in einem Log gespeichert und das Admin Panel ließt das Log anschließend aus. Aber genau kann ich dir das nicht sagen.
Wie gesagt führ mal bitte den docker logs Befehl aus. Ansonsten kannst du das mal mit einer älteren Version ausprobieren. Dazu musst du hinter dem Image noch ein Tag angeben. In der Dokumentation wird vom Entwickler übrigens abgeraten einen anderen Port als 80 zu verwenden. Eventuell könnte das auch daran liegen. Wenn man unbedingt einen anderen Port als 80 verwendet, dann soll man einen Reverse Proxy verwenden.
Viele Grüße,
Exception
sicher dass der Pi Hole die Anzeigen blockiert und nicht irgendein Adblocker auf dein Smartphone?
Ansonsten schau mal mit dem Befehl, ob der Container richtig initialisiert wurde bzw. ob eventuell im Hintergrund irgendwelche Fehler entstanden sind:
docker logs pihole
Da DNS selbst funktioniert, hatte ich nur den Port 8000 in Verdacht, da dieser für die Seite zuständig ist.
Daran sollte es eigentlich nicht liegen, wenn schon zwei Dienste in einem Container sind (sollte man normalerweise auch nicht machen), dann wird der Webserver lokal die Daten beim DNS Server abfragen. Die Frage ist halt nur wie er das macht. Hier kenne ich mich mit Pi Hole leider nicht so gut aus. Vermutlich werden beim dnsmasq die Queries in einem Log gespeichert und das Admin Panel ließt das Log anschließend aus. Aber genau kann ich dir das nicht sagen.
Wie gesagt führ mal bitte den docker logs Befehl aus. Ansonsten kannst du das mal mit einer älteren Version ausprobieren. Dazu musst du hinter dem Image noch ein Tag angeben. In der Dokumentation wird vom Entwickler übrigens abgeraten einen anderen Port als 80 zu verwenden. Eventuell könnte das auch daran liegen. Wenn man unbedingt einen anderen Port als 80 verwendet, dann soll man einen Reverse Proxy verwenden.
Viele Grüße,
Exception
In der Zeit hätte man schon 10 SD Karten mit PiHole geflasht in einen RasPi2 oder noch besser in einen 10 Euro RasPi Zero gesteckt, USB LAN Adapter für 4 Euro dran und das PiHole wäre schon seit 3 Tagen wunderbar am Laufen...
Aber warum einfach machen wenn es mit Docker frickeln auch umständlich geht...
Aber warum einfach machen wenn es mit Docker frickeln auch umständlich geht...
Hi,
sehe ich persönlich etwas anders. Wenn man die Grundlagen von Docker beherrscht und im Skripten etwas Erfahrung hat, dann kann man das sehr schnell umsetzen. Und frickeln bei Docker ist nur dann erforderlich, wenn man ein fertiges Image von Docker Hub verwendet. (Ausnahme sind offizielle Images von Herstellern). Wenn der TO auf dem Raspi nur Pi Hole zum laufen bringen möchte, dann hätte ich den Aufwand mit Docker auch nicht gemacht. Da er offenbar allerdings sich mit Docker beschäftigen möchte, ist das wieder was anderes.
Hast du auch diese geprüft? -> /var/log/lighttpd/error.log
Viele Grüße,
Exception
Aber warum einfach machen wenn es mit Docker frickeln auch umständlich geht...
sehe ich persönlich etwas anders. Wenn man die Grundlagen von Docker beherrscht und im Skripten etwas Erfahrung hat, dann kann man das sehr schnell umsetzen. Und frickeln bei Docker ist nur dann erforderlich, wenn man ein fertiges Image von Docker Hub verwendet. (Ausnahme sind offizielle Images von Herstellern). Wenn der TO auf dem Raspi nur Pi Hole zum laufen bringen möchte, dann hätte ich den Aufwand mit Docker auch nicht gemacht. Da er offenbar allerdings sich mit Docker beschäftigen möchte, ist das wieder was anderes.
Die Logs über die Admin Seite von Pi Hole selbst sind leer.
Hast du auch diese geprüft? -> /var/log/lighttpd/error.log
Viele Grüße,
Exception
Wie bereits schon mal geschrieben, für diesen Pfad gibt es kein Mount bzw. Volume. => Pfad ist daher nur im Container
Für solche Zwecke kann man dann docker execute verwenden:
Für solche Zwecke kann man dann docker execute verwenden:
docker exec pihole cat /var/log/lighttpd/error.log
Hallo,
Edit: Zeile entfernt: ist Blödsinn. Siehe Kommentar unten.
Docker macht lediglich Port Forwarding mithilfe von iptables.
Wenn etwas mit den Ports nicht stimmen sollte, wieso kannst du dann die Weboberfläche erreichen? Wieso geht die DNS Auflösung über den Pi Hole? ;)
Das Problem liegt beim Image. Daher würde ich ein Issue Eintrag auf dem Github Repository des Projekts erstellen.
Viele Grüße,
Exception
Edit: Zeile entfernt: ist Blödsinn. Siehe Kommentar unten.
Docker macht lediglich Port Forwarding mithilfe von iptables.
Wenn etwas mit den Ports nicht stimmen sollte, wieso kannst du dann die Weboberfläche erreichen? Wieso geht die DNS Auflösung über den Pi Hole? ;)
Das Problem liegt beim Image. Daher würde ich ein Issue Eintrag auf dem Github Repository des Projekts erstellen.
Viele Grüße,
Exception
Hi,
bitte meinen letzten Kommentar ignorieren. Ist Blödsinn - natürlich muss es auch ein Listener auf dem Hostsystem geben.
Da du keine Listener Adresse angegeben hast, wird eine IPv4-mapped IPv6 Adresse verwendet. Daher wird bei netstat tcp6 angezeigt.
Schau mal hier:
https://unix.stackexchange.com/questions/152612/netstat-why-are-ipv4-dae ...
Problem selbst liegt aber nach wie vor beim Image.
Viele Grüße,
Exception
bitte meinen letzten Kommentar ignorieren. Ist Blödsinn - natürlich muss es auch ein Listener auf dem Hostsystem geben.
Da du keine Listener Adresse angegeben hast, wird eine IPv4-mapped IPv6 Adresse verwendet. Daher wird bei netstat tcp6 angezeigt.
Schau mal hier:
https://unix.stackexchange.com/questions/152612/netstat-why-are-ipv4-dae ...
Problem selbst liegt aber nach wie vor beim Image.
Viele Grüße,
Exception
Beide DIenste (dns server und webserver) laufen in dem selben Container. Somit kannst du ein Netzwerkfehler bzw. ein Fehler auf dem Hostsystem ausschließen. Der Healthcheck passt auch, da ansonsten würde der Container überhaupt nicht laufen.
Da der Fehler darin liegt, dass die Anzeigen auf dem Admin Panel nicht angezeigt werden, vermute ich ein Fehler im Backend (PHP).
Du hast das ganze ja mit einem anderen Image getestet. (diginc/pi-hole) Und da hat das ja funktioniert. Das Image hat übrigens auch @IrunGoldstein verwendet und bei seinen Screenshots sieht man, dass die Abfragen angezeigt werden.
Wie bereits oben geschrieben, würde ich ein Bug Report bei der Projektseite bei Github machen. Alternativ könntest du versuchen das Problem selbst zu beheben, indem du das Git Repository klonst und dann mit Diff die Unterschiede zwischen dem funktionierenden amd64 und dem armhf Image, wo das Problem besteht, machst. (insbesondere bei dem PHP Skript). Anschließend würd ich prüfen, woher und wie das Admin Panel die Daten bezieht. Und als letztes die entsprechenden PHP Skripte debuggen. Und falls du die Lösung gefunden hast: sei so nett und stelle ein Merge Request bei Github.
Da der Fehler darin liegt, dass die Anzeigen auf dem Admin Panel nicht angezeigt werden, vermute ich ein Fehler im Backend (PHP).
Du hast das ganze ja mit einem anderen Image getestet. (diginc/pi-hole) Und da hat das ja funktioniert. Das Image hat übrigens auch @IrunGoldstein verwendet und bei seinen Screenshots sieht man, dass die Abfragen angezeigt werden.
Wie bereits oben geschrieben, würde ich ein Bug Report bei der Projektseite bei Github machen. Alternativ könntest du versuchen das Problem selbst zu beheben, indem du das Git Repository klonst und dann mit Diff die Unterschiede zwischen dem funktionierenden amd64 und dem armhf Image, wo das Problem besteht, machst. (insbesondere bei dem PHP Skript). Anschließend würd ich prüfen, woher und wie das Admin Panel die Daten bezieht. Und als letztes die entsprechenden PHP Skripte debuggen. Und falls du die Lösung gefunden hast: sei so nett und stelle ein Merge Request bei Github.