Pi-hole mit Docker Compose installieren

Bist du genau so genervt von der ganzen Werbung, wenn du durchs Netz streifst? Um dem ein Ende zu setzen habe ich mir Pi-hole auf meinem Server mit Docker Compose eingerichtet.

Pi-hole ist eine freie Software mit der Funktion eines Tracking- und Werbeblockers sowie eines optionalen DHCP-Servers. Pi-hole basiert auf einem Linux-System und ist entwickelt worden für den Einsatz auf Kleinstcomputern im Sinne eines eingebetteten Systems.

Diese Anleitung zeigt dir die notwendigen Schritte damit auch du in den Genuss von werbefreien Internet zu kommst.

Vorwort

Die Installation erfolgte auf meinem Gentoo Server, aber letztendlich wird das auf jeder beliebigen Distribution genauso funktionieren. Einige Gentoo spezifische Dinge werde ich entsprechend kennzeichnen.

Ich setze voraus, dass du bereits Docker Compose installiert hast.

Verzeichnis vorbereiten

Für die Installation habe ich mir ein Verzeichnis im /opt angelegt. Du kannst hierfür ein beliebiges Verzeichnis nehmen, aber achte im Verlauf darauf, dass du bei den Befehlen die Pfade entsprechend anpasst.

mkdir -p /opt/pihole
cd /opt/pihole

Docker Compose Datei erstellen

In dem Verzeichnis legen wir zuerst die docker-compose.yml Datei an:

nano -w docker-compose.yml

Füge folgenden Inhalt hinzu:

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
    # For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      #- "67:67/udp" # Only required if you are using Pi-hole as your DHCP server
      - "8180:80/tcp"
    environment:
      TZ: 'Europe/Berlin'
      WEBPASSWORD: 'SUPERGEHEIM'
    # Volumes store your data between container upgrades
    volumes:
      - './etc-pihole:/etc/pihole'
      - './etc-dnsmasq.d:/etc/dnsmasq.d'    
    #   https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
    cap_add:
      - NET_ADMIN # Recommended but not required (DHCP needs NET_ADMIN)      
    restart: unless-stopped

Pass in der Datei den Parameter TZ auf eure Zeitzone an. Ebenfalls solltest du den Parameter WEBPASSWORD mit einem sicheren Passwort belegen. Dieses Passwort brauchst du später zum Login in der Weboberfläche.

Pi-hole starten

Nun wird es Zeit Pi-hole zu starten:

docker-compose up -D

Pi-hole mit dem System starten

Dieser Teil ist Gentoo spezifisch da er OpenRC benutzt.

Nun legt man sich die Datei ‘/etc/init.d/pihole’ an:

#!/sbin/openrc-run
depend() {
        need net docker
}

start() {
        ebegin "Start Pi-hole"
        docker compose -f /opt/pihole/docker-compose.yml up -d &> /dev/null
        eend $? "Failed to start Pi-hole"
}

stop() {
        ebegin "Stop Pi-hole"
        docker compose -f /opt/pihole/docker-compose.yml down &> /dev/null
        eend $? "Failed to stop Pi-hole"
}

Falls du für Pi-hole zuvor ein anderes Verzeichnis als ich gewählt hast, musst du das hier entsprechend abändern.

Nun fügen wir das das Script zum Systemstart hinzu:

rc-update add pihole default

Adlist zu Pi-hole hinzufügen

Damit auch etwas gefiltert werden kann sollte man sich in der Weboberfläche von Pi-hole eine Adliste hinzufügen. Die Weboberfläche erreicht du über die IP Adresse deines Servers und den Port 8180, also z.B. “http://192.168.3.2:8180”.

Adlists

Wie in dem Screenshot zu sehen, habe ich hier die Easylist für Pi-hole. Du kannst aber natürlich auch weitere Listen hinzufügen.

Die Listen werden von Pi-hole in regelmäßigen Abständen automatisch aktualisiert. Du kannst das aber auch jederzeit manuell in der Weboberfläche anstoßen.

Pi-hole als DNS-Server verwenden

Damit auch überhaupt erst mal Werbung durch Pi-hole gefiltert werden kann musst du Pi-hole als Nameserver verwenden.

In meinem Fall mache ich das in meiner FRITZ!Box unter “Internet -> Zugangsdaten -> DNS-Server”.

FRITZ!Box DNS-Server

Auch hier musst du entsprechend die IP deines Servers angeben.

Solltest du keine FRITZ!Box dein Eigen nennen, dann trag auf deinem Router oder deinem System im DHCP Server einfach die IP Adresse des Pi-hole Servers ein. Dass sollten dann genau so funktionieren.

Dadurch wird der Werbefilter für alle Geräte aktiv, die per DHCP eine Adresse zugewiesen bekommen haben.

Pi-hole aktualisieren

Pi-hole wird regelmäßig aktualisiert. Dies erkennst du in der Fusszeile in der Weboberfläche. Um Pi-hole zu aktualisieren müssen wir den Server erst beenden:

/etc/init.d/pihole stop

Danach aktualisieren wir den Container:

cd /opt/pihole
docker-compose pull

Nun wieder den Server starten:

/etc/init.d/pihole start

Fazit

Mit wenigen Schritten bekommt man so einen wirklich performanten Werbefilter auf allen Geräten im Heimnetz. Nach der erfolgreichen Einrichtung sollten man alle anderen Werbefilter im Browser deaktivieren, das Pi-hole nun für uns übernimmt.

Kommentare

Du kannst dein Mastodon Konto benutzen, um auf diesen Beitrag zu antworten.

Antworten