Pihole-Setup auf einem Ubuntu Server mittels Docker-compose.

Pihole-Setup auf einem Ubuntu Server mittels Docker-compose.

Hinweis: Ich empfehle inzwischen nicht mehr Pihole auf einem öffentlich erreichbaren Server zu installieren!

Endlich habe ich es geschafft, ein vollständiges Pihole-Setup auf meinem Dedictated-Server mittels Docker-compose. Mit dieser kleinen Anleitung gelingt euch dies auch.
Ein kleiner Hinweis am Rande; Solltet ihr einer der glücklichen sein und habt einen Root-Server, empfehle ich euch Pihole nicht dort zu installieren, denn sonst ist euer Server ein öffentlicher DNS-Server und möglich das sich irgendwann euer Provider beschwert über den enormen Traffic.

Pihole Setup mit Docker


Hab das testweise auf einem öffentlichen Server gemacht und die Zugriffszahlen sind einfach nur krass.
Wie macht ihr das? Erstellt zuerst Ordner auf dem Server, worin die Daten gespeichert werden. Für diese Anleitung nutze ich /var/pihole und /var/pihole/dnsmasq.d. Danach erstellt ihr unter /tmp folgende Datei samt dem Inhalt. Mit Docker-compose wird eine komplett lauffähige Version von Pihole installiert.
Docker-compose.yml:

version: '2'
services:
  pihole:
    container_name: pihole
    restart: always
    image: diginc/pi-hole:debian
    dns:
    - 127.0.0.1
    - 9.9.9.9
    environment:
    - ServerIP=server-ip
    - ServerIPv6=
    - TZ=Europe/Berlin
    - WEBPASSWORD=sicheresPasswort
    - DNS1=8.8.8.8
    - DNS2=8.8.4.4
    VIRTUAL_HOST=pihole.domain.tld
    volumes:
    - /var/pihole/:/etc/pihole/
    - /var/pihole/dnsmasq.d/:/etc/dnsmasq.d/
    ports:
    - "8888:80"
    - "53:53/tcp"
    - "53:53/udp"

Führt diese Datei anschließend mit

docker-compose up -d

Ab diesem Zeitpunkt ist Pihole unter Domain.tld:8888 erreichbar. Damit aber nicht jeder in eure Statistik schauen kann, muss diese durch eine zusätzliche Passwortabfrage eingerichtet werden.

Pihole absichern

Fügt dazu folgendes in eure vhost-Datei für Apache ein. Innerhalb des <VirtualHost>Angabe.

<Location />
  AuthType Basic
  AuthName "Pihole Panel"
  AuthUserFile /etc/apache2/htpasswd-pihole <username>
  Require valid-user
</Location>

Erstellt nun einen User samt Passwort mit folgendem Kommando.

htpasswd -c /etc/apache2/htpasswd-pihole <username>

Danach sollte man nur noch nach Eingabe des Passwortes Zugriff auf das Pihole Panel haben.

Blacklist einrichten

Nach dem ersten Log-in schaut, ob der DNS Dienst läuft. Wenn ja, ist alles gut. Nun könnt ihr einige Blacklist unter Settings >> Black Lists eintragen. Hier ein paar Beispiele.

#verhindert das Microsoft zuviel mitloggt
https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/win10/spy.txt
#
https://raw.githubusercontent.com/quidsup/notrack/master/trackers.txt
#blockt alle XXX-Seiten im Netzwerk.
https://github.com/chadmayfield/pihole-blocklists/raw/master/lists/pi_blocklist_porn_all.list
#blockt Pishing Seiten
https://v.firebog.net/hosts/Prigent-Phishing.txt
#blockt Malerei Seiten
https://v.firebog.net/hosts/Prigent-Malware.txt
#Maleware Seiten
https://mirror.cedia.org.ec/malwaredomains/immortal_domains.txt
#
https://smokingwheels.github.io/Pi-hole/allhosts

Damit nun jeder in den Genuss des werbefreien Internets kommt, müssen alle Anfragen nun über Pihole laufen. Zum ändern von den DNS Einstellungen nutzt man dazu Apps wie DNS-Changer für Android.

Pihole als DHCP Server

Oder man setzt Pihole als DHCP Server ein.
Dazu gilt es im Router den DHCP Server abzustellen und im Pihole anzustellen.
Bei der Fritz!Box muss dazu unter Heimnetz >>> Heimnetzübersicht >>> IPv4 Adressen der DHCP Server abgestellt werden.
Notiz: Danach ist die Fritz!Box nicht mehr unter http://fritz.box, sondern unter der IP-Adresse. z.B. 192.168.178.1 erreichbar!
Ist der DHCP Server abgeschaltet, kann dieser nun unter Pihole aktiviert werden. Dies geht über Settings >>> DHCP
Hier kann man auch festlegen werden wie die IP-Adressen vergeben werden an die einzelnen Geräte.
Zum Abschluss noch eine praktische Information:

Solltet ihr nun etwas editieren wollen an der Konfiguration könnt ihr mit dem folgenden Kommando ganz einfach die Dateien im Container bearbeiten.

sudo docker exec -it <Container name> /bin/bash

war der Artikel okay? würde mich über ein Feedback freuen.