Pihole zu einem lauffähigen Werbeblocker zu verwandeln gibt es viele Möglichkeiten. Doch zunächst zu der Frage, was ist Pihole bzw. was bietet es. Pihole ist in erster Linie ein leichtgewichtiger DNS Sever, welcher Webanfragen im heimischen Netzwerk entgegennimmt. Es übernimmt im Netzwerk sozusagen einen Sortierer, welcher intern mit Blocklisten arbeitet und auf diese Weise Werbeanfragen blockiert. Seine Benutzerfreundlichkeit erhält es durch eine durchdachte GUI, mit welcher die Verwaltung aller Einstellungen leicht von statten geht. Eine besonders praktische Möglichkeit bietet sich an, wenn man Pihole mit Docker kombiniert. Gerade Pihole als kleines Programm ist dazu prädestiniert die Vorteile, die Docker mitbringt auszunutzen. Aber was geschieht, denn Docker auf einen Virtualisierer wie Proxmox trifft? Auch dies ist möglich und das Ergebnis ist, dass sich ein Docker Host als Linux Container unter Proxmox sehr gut realisieren lässt. Welche Schritte nun notwendig sind, um Pihole auf dieser Umgebung einzurichten wird im Folgenden aufgezeigt.

1. LXC Container in Proxmox erstellen
2. Docker installieren
3. Portainer installieren
4. Pihole einrichten


1. LXC Container in Proxmox erstellen

Zunächst beginnen wir mit dem Herunterladen des Container Templates, indem wir unter "Storage" -> "Container Templates" -> auf "URL Herunterladen" oder "Hochladen" klicken, je nachdem wo sich die Datei befindet. Ist das Template erfolgreich heruntergeladen, erstellen wir unter "Erstelle CT" den Container mit den folgenden Eigenschaften:

  • Hostnamen vergeben
  • unprivilegierter Container
  • Kennwort vergeben und bestätigen
  • Template auswählen, welches wir weiter oben heruntergeladen haben, etwa debian-11-standard
  • Diskgröße: 20 GB
  • 1 Cores
  • 2048 MiB Speicher, 512 MiB Swap
  • IPv4: DHCP
  • Abschließen

Nach dem Erstellen des Containers stellen wir sicher, dass unter "Container" -> "Optionen" -> "Features" -> "keyctl" und "Nesting" ausgewählt sind. Anschließend starten wir den Container



2. Docker installieren

Um Docker installieren zu können schalten wir uns auf die Konsole des Containers mit unserem oben eingerichteten Benutzernamen/Passwort. Anschließend verwenden wir den Updatebefehl, um unseren Container auf den neusten Stand zu bringen:

apt update && apt upgrade -y

Um Docker einrichten zu können brauchen wir vorab folgende Programmteile, welche uns erlauben, HTTPS über den Packmanager zu nutzen.

apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Dann fügen wir den offiziellen GPG Schlüssel von Docker hinzu:

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Mit dem folgenden Befehl verwenden wir den Stable channel von unserem Repository

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

Um die Änderungen anzuwenden aktualisieren wir den Packetindex und installieren die neuste Version der Docker Engine.

apt-get update

apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Um sicherzustellen, dass Docker korrekt installiert wurde, laden wir uns mit folgendem Befehl das "Hello World" Image herunter.

docker run hello-world

3. Portainer installieren

Um Portainer nutzen zu können, wird zunächst ein Volume bereitgestellt, welches von Portainer für die Datenablage verwendet wird. Anschließend erzeugen wir den Portainer Container mit dem zweiten Befehl.

docker volume create portainer_data

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

4. Pihole einrichten

Bevor wir mit der Installation von Pihole beginnen, erstellen wir mit dem folgenden Befehl zunächst zwei Volumes, die später von Pihole verwendet werden.

docker volume create pihole_app
docker volume create dns_config

Um im späterem Verlauf der Installation keine Fehlermeldung zu erhalten, müssen wir den Port 53 auf unserem Docker Server freigeben. Dazu rufen in Proxmox die Konsole von Docker auf und verwenden folgende Befehle:

systemctl disable systemd-resolved.service
systemctl stop systemd-resolved

Anschließend konfigurieren wir die Datei /etc/resolv.conf

nano /etc/resolf.conf

und fügen diese Zeile hinzu

nameserver 8.8.8.8

und kommentieren die verleiben Nameserver aus.

Sind die Vorarbeiten erledigt, gehen wir in der Portainer Oberfläche auf "Containers" -> "Add Container". Dort vergeben wir zunächst einen Namen für unseren neunen Container. Danach müssen wir unser Image auswählen. Dazu geben wir folgendes ein:

pihole/pihole:latest

Als nächstens klicken wir auf "publish a new network port" und legen folgende Portkonfiguration an:

Host: 443 -> Container: 443 (TCP)
Host: 53 -> Container: 53 (TCP)
Host: 53 -> Container: 53 (UDP)
Host: 67 -> Container: 67 (UDP)
Host: 80 -> Container: 80 (TCP)

Anschließend gehen wir auf den Reiter "Volumes" unter "Advanced container settings" und verbinden unsere zuvor angelegten Volumes mit den Containern (auf "Bind" klicken). Dies muss folgendermaßen konfiguriert sein:

map addintional volume:


/etc/dnsmasq.d (/path/in/container)
/var/lib/docker/volumes/dns_config/_data (/path/on/host)

/etc/pihole (/path/in/container)
/var/lib/docker/volumes/pihole_app/_data (/path/on/host)


Als letztens fehlen noch die Umgebungsvariablen. Diese setzen wir wie folgt, indem wir unter "Env" klicken und dann zweimal auf "add environment variable" klicken. Als Namen setzen wir TZ (Timezone)
und WEBPASSWORD. Als Wert vergeben wir im ersten Fall Europe/Berlin und als zweites das Password für die Weboberfläche von Pihole.

Nachdem der Pihole Container läuft, können wir die weiter oben veränderte resolv.conf Datei auf den neusten Stand bringen, indem wir unserem Nameserver wie folgt setzen

nameserver 127.0.0.1

Der Pihole Server ist ab sofort unter http://<docker-IP>/admin erreichbar

Einzelnachweise:
https://docs.docker.com/engine/install/debian/
https://adamtheautomator.com/pihole-docker/
https://www.youtube.com/watch?v=9zL64m2RiRo
https://github.com/pi-hole/docker-pi-hole/#running-pi-hole-docker
https://github.com/portainer/portainer/issues/1918

Add comment

Submit

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.