X

Pi-hole als Docker Container unter OpenMediaVault

Geschrieben amgeschrieben von Stefan, zuletzt aktualisiert am RSS Feed
Nachdem wir euch in der Vergangenheit ja bereits den netzwerkweiten Werbeblocker Pi-hole auf einem Raspberry Pi vorgestellt hatten, folgt nun eine Anleitung um Pi-hole als Docker Container laufen zu lassen. Die Anleitung kann aber auch auf andere Container leicht angepasst angewendet werden. Insofern ist diese Anleitung auch als ein kleines Docker Tutorial zu sehen.

Pi-hole als Docker Container unter OpenMediaVault
Wir nutzen dafür das NAS Betriebssystem OpenMediaVault und die Container-Webverwaltung Portainer. Ihr könnt den Docker-Container aber natürlich auch aus z.B. Unraid oder einem nativen Linux/Windows System heraus nutzen. Da Pi-hole allerdings 24/7 laufen muss (er ersetzt ja euren DNS-Server im Netzwerk), halte ich es für sinnvoller diesen auf einem kleinen Server wie einem NAS zu installieren und nicht auf eurem privaten Computer.


Docker und Portainer unter OpenMediaVault


Zunächst einmal benötigt ihr ein NAS mit einem aktuellen OpenMediaVault. Aktuell ist momentan OpenMediaVault in Version 6, welches auf Debian 11 basiert. Dieses hatte ich in meinem Artikel OpenMediaVault 6 - Das freie NAS Betriebssystem in der letzten Woche vorgestellt.

Wer sich noch gar nicht mit OpenMediaVault auseinander gesetzt hat, dem empfehle ich zudem unsere Komplettanleitung für OpenMediaVault, welche ich kürzlich auf die aktuellste Version aktualisiert habe.

Da weder Docker noch Portainer (Webverwaltung für Container) in OpenMediaVault enthalten sind, benötigen wir zunächst die OMV-Extras, die eine Plugin-Sammlung sind und OpenMediaVault um viele Möglichkeiten erweitern. Die OMV-Extras können mit dem folgenden Befehl installiert werden:

wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash


Nach der Installation der OMV-Extras könnt ihr über den neuen Menüpunkt nun zunächst die Containerverwaltung Docker und anschließend die Weboberfläche Portainer installieren. Ihr könnt statt Portainer auch Yacht nutzen, welches ebenfalls eine Weboberfläche zur Containerverwaltung ist, allerdings etwas simpler daherkommt als Portainer.

Pi-hole als Docker Container unter OpenMediaVault
Da sich Portainer und Yacht nicht in der Quere kommen, könnt ihr natürlich auch einfach beide installieren und dann ausprobieren welche Weboberfläche für euch am Besten geeignet ist. Auch die Templates in Yacht sind kompatibel zu Portainer.

Pi-hole als Docker Container unter OpenMediaVault


Portainer


In dieser Anleitung verwenden wir aber Portainer, da es die am häufigsten genutzte Containerverwaltung ist. Anfänger sollten sich hier nicht von den unzähligen Einstellmöglichkeiten verwirren lassen sondern Schritt-für-Schritt vorgehen. Da wir Docker bereits über OpenMediaVault installiert haben, ist diese Umgebung schon in Portainer angelegt.

Pi-hole als Docker Container unter OpenMediaVault
Die meisten Container benötigen neben dem Image in dem alle benötigten Daten enthalten sind, noch eine Konfiguration. Diese kann später über ein Template erfolgen oder die Variablen können auch direkt im Container gesetzt werden.


DNS-Einstellungen von OpenMediaVault


Ab OpenMediaVault 5 (Debian 10) müsst ihr zuvor den systemd-resolved Dienst umkonfigurieren, da dieser im Standard den DNS-Port 53 nutzt und ihr diesen aber für den pi-hole Container benötigt.

nano /etc/systemd/resolved.conf


Hier müssen die beiden Zeilen DNS-Cache und DNS-StubListener auf no gesetzt und aktiviert werden indem ihr das führende # löscht.

Pi-hole als Docker Container unter OpenMediaVault
Die Datei anschließend mit Strg+O speichern. Mit Strg+X schließt ihr die Datei. Anschließend muss noch der systemd-resolved Dienst neu gestartet werden:

systemctl restart systemd-resolved



In Docker einen neuen Container anlegen


Es gibt mehrere Wege um in Docker einen neuen Container anzulegen. Der erste Weg wäre über das DockerHub, welches bereits eingerichtet ist. Docker verwendet hier standardmäßig einen anonymen Docker-Account, der zwar limitiert ist, für die meisten Anwender aber ausreicht. Ansonsten könnt ihr euch jederzeit einen kostenlosen DockerHub Account einrichten.

Im DockerHub findet ihr viele bereits konfigurierte Container, die ihr nur noch geringfügig an eure Bedürfnisse anpassen müsst. Hier findet ihr auch den offiziellen Pi-hole Docker Container.

Um einen neuen Container hinzuzufügen, navigiert ihr über den Menüpunkt Containers in die Containerübersicht. Hier könnt ihr über den Button Add container einen neuen Docker Container erzeugen. Diesen Weg gehen wir in dieser Anleitung aber nicht.

Pi-hole als Docker Container unter OpenMediaVault
Achtung: solltet ihr den Container über das DockerHub erzeugen, müsst ihr unbedingt noch alle benötigten Ports, Netzwerkeinstellungen, Dateifreigaben und Variablen festlegen. Das geht problemlos, ist aber recht mühselig. Einfacher geht die Erstellung eines Containers meiner Meinung nach über die Erstellung eines Templates, das eine Docker Compose Datei enthält. Diesen Weg zeige ich euch in dieser Anleitung.


Template (Vorlage) erstellen


Unter dem Menüpunkt App Templates und dann Custom Templates lassen sich eigene Templates konfigurieren. Hier werden die kompletten Einstellungen für den Container in einer so genannten Docker Compose Datei gespeichert. In dieser Datei werden Funktionen, Variablen und Netzwerk- und Dateieinstellungen vorgenommen die dann auf den Container angewendet werden.

Ich habe hier einfach ein Template mit dem Namen pi-hole und der folgenden Konfiguration erstellt. Der Zugriff auf die Weboberfläche von Pi-hole erfolgt bei mir über den Port 1080, da der Port 80 ja bereits von OpenMediaVault belegt ist. Ihr greift später auf den Container über die IP-Adresse eures NAS zu, daher dürfen die NAS-Ports hier nicht doppelt vergeben werden. Der Port 67 wird im Pi-hole Container nur benötigt, wenn Pi-hole später als DHCP-Server für euer Netzwerk dienen soll.

Alternativ zu dem Standard Docker Netzwerk, welches immer als Netzwerkbrücke (bridge) läuft, könnt ihr auch dedizierte IP-Adressen vergeben. Dann verhält sich der pihole Container so wie ein normaler Computer im Netzwerk. Da dies aber nicht die einfachste Möglichkeit ist, verwenden wir hier das Brückennetzwerk, der Pi-hole Container ist dann unter der IP-Adresse eures NAS erreichbar.

Die Variablen WEBPASSWORD sowie DNS1 müsst ihr an eure Bedürfnisse anpassen.

version: "3.9"

services:
    pihole:
        container_name: pihole
        image: pihole/pihole:latest
        hostname: pihole
    ports:
    - "53:53/tcp" #DNS
    - "53:53/udp" #DNS
    - "67:67/udp" #DHCP/Bootstrap
    - "1080:80/tcp" #Pi-hole Weboberfläche
    - "10443:443/tcp" #Pi-hole Weboberfläche (SSL)
    environment:
        TZ: 'Europe/Berlin'
        WEBPASSWORD: 'DEINPASSWORT' #Dein Passwort für die Pi-hole Webverwaltung (frei wählbar)
        DNS1: '192.168.1.2' #Deine Router IP-Adresse
        DNS2: ''
    volumes:
        - './etc-dnsmasq.d/:/etc/dnsmasq.d/'
        - './etc-pihole/:/etc/pihole/'
    dns:
        - 127.0.0.1 #Der Pi-hole nutzt sich selbst als DNS-Server
    cap_add:
        - NET_ADMIN #Erlaubt das Bearbeiten von Netzwerkeinstellungen im Container
    restart: unless-stopped


Habt ihr das Template erstellt, könnt ihr dies nun öffnen und über Deploy the stack den Container installieren.

Pi-hole als Docker Container unter OpenMediaVault


Docker Containerverwaltung


Unter dem Menüpunkt Containers findet ihr im Anschluss an die Installation euren neuen pihole Container.

Pi-hole als Docker Container unter OpenMediaVault
Die Weboberfläche von Pi-hole erreicht ihr in eurem Browser über die IP-Adresse eures NAS gefolgt von einem :1080. Um Einstellungen in Pi-hole vorzunehmen, müsst ihr euch zunächst mit eurem Passwort (welches ihr über die WEBPASWORD Variable in der Docker Compose Datei festgelegt habt) anmelden.

Pi-hole als Docker Container unter OpenMediaVault
Nachdem Pi-hole nun via Docker auf eurem NAS läuft, müsst ihr eure Clients so konfigurieren, dass diese den Pi-hole zur DNS-Auflösung nutzen. Das könnt ihr entweder in den DNS-Einstellungen jedes Clients manuell machen oder noch besser direkt in eurem Router (z.B. eurer Fritzbox) den Pi-hole als DNS-Server einstellen.

Wie dies im Detail funktioniert, haben wir bereits in unserer Pi-hole Anleitung auf einem Raspberry Pi 4 beschrieben. Da sich die Konfiguration identisch zu unserem Pi-hole Container verhält, könnt ihr diesen Teil der Anleitung nutzen.


Ad-Block Filterlisten in Pi-hole erweitern


Im Standard kommt Pi-hole mit einfachen Blocklisten, die ca. 130.000 Domains blockieren. Ihr könnt die Filterung durch den Pi-hole noch deutlich erweitern, indem ihr neue Blocklisten einbindet. Wie dies geht, haben wir in unserer Anleitung Neue Ad-Block Filterlisten in Pi-hole einbinden beschrieben.



Facebook
Twitter
Bei Links, die mit einem * gekennzeichnet sind, handelt es sich um Affiliate-Links, bei denen wir bei einem Kauf eine Vergütung durch den Anbieter erhalten.
VG-Wort

Kommentare (0)


Diesen Artikel kommentieren:

Hinweis:
  • Nur Fragen / Antworten direkt zum Artikel
  • Kein Support für andere Hard- oder Software !


Name:
   
Kommentar:
   
Rechenaufgabe: Ergebnis der Rechenaufgabe   Bild neu laden

Ergebnis:
   
Artikel-Abo: optional
  Wenn Du eine E-Mail-Adresse angibst, informieren wir dich, sobald es hier etwas Neues gibt.
   
 
E-Mail Abo
E-Mail Benachrichtigung bei neuen Artikeln
RSS Feed
Abonniert unseren RSS-Feed
benötigt einen RSS-Reader