Eigenen PiHole-Server unter Linux installieren und betreiben

Vorwort zur Anleitung:
Diese Anleitung hat einen einfachen Schwierigkeitsgrad.
Installation von Linux und Kenntnisse in der Befehlszeile sind vorausgesetzt.

Was ist ein PiHole-Server?

Das Pi-hole-System ist ein Netzwerk-Blocker, der als Werbeblocker fungiert und dazu verwendet wird, unerwünschte Werbung und Tracking im gesamten Netzwerk zu blockieren. Pi-hole funktioniert auf Basis eines DNS (Domain Name System)-Servers und schützt alle Geräte in deinem Netzwerk vor Werbeanzeigen.
Hauptmerkmale von Pi-hole:
1. Werbung blockieren: Pi-hole blockiert Werbung und Tracking-Dienste
2. DNS-Server: Pi-hole ersetzt den Standard-DNS-Server (der von deinem Internetanbieter oder dem Router bereitgestellt wird) durch einen eigenen, der Anfragen zu bekannten Werbe-Domains filtert.

3. Netzwerkweite Abdeckung: Im Gegensatz zu Browser-Addons, die nur den jeweiligen Browser betreffen, wirkt Pi-hole im gesamten Netzwerk.

4. Webinterface zur Verwaltung: Pi-hole bietet eine Benutzeroberfläche, über die du den Status überwachen, Blocklisten anpassen und Ausnahmen definieren kannst.

5. Datenschutz: Durch das Blockieren von Tracking-Diensten wird auch deine Privatsphäre geschützt, da weniger Daten über deine Online-Aktivitäten gesammelt werden.

6. Statistiken: Pi-hole zeigt detaillierte Statistiken darüber, wie viel Werbung und Tracking in deinem Netzwerk blockiert wurden.
Vorteile:
• Besseres Surferlebnis: Weniger Werbung bedeutet schnelleres Laden von Webseiten.
• Datenschutz: Weniger Tracking bedeutet mehr Privatsphäre.
• Netzwerkweite Blockierung: Alle Geräte im Netzwerk profitieren von der Werbungssperre.
• Geringer Ressourcenbedarf: Pi-hole benötigt nur wenige Systemressourcen, weshalb es ideal für den Einsatz auf kleinen Geräten wie dem Raspberry Pi ist.
Installation:
Pi-hole lässt sich relativ einfach einrichten und ist vor allem auf einem Raspberry Pi sehr populär, aber es funktioniert auch auf anderen Linux-basierten Systemen. Die Installation erfolgt in der Regel über ein einfaches Skript, das den gesamten Prozess automatisiert.

Vorbereitungen / Anforderungen:

Anforderungen
Schwierigkeitsgrad-Installation: Einfach
Schwierigkeitsgrad-Anwendung: Einfach
Erforderliche Kenntnisse: Linux-Befehlszeile
Systemvoraussetzungen:
Basis: Debian
Betriebssystem: Ubuntu Server (Headless)
Festplattenspeicher: Mindestens 10 GB
CPU: Mindestens 1 CPU
RAM: Mindestens 512 MB
Die Systemanforderungen wurden in einer virtualisierten Umgebung getestet.
Tipp:
Wenn du mit Virtualisierung, z.B. ProxMox, vertraut bist, kannst du deine eigenen Server effizient und stromsparend betreiben!
Getestet auf:
  • Ubuntu-Server 22.04
  • Ubuntu-Server 24.10
Installationsablauf:
1. Durchführung von System-Upgrade
2. Statische IP-Adresse festlegen und anwenden
3. (Optional) Hostnamen festlegen
4. Installation und Einstellungen
5. Systembedienung
6. Resümee
7. Störungsanalyse
Optionale Schritte können weggelassen werden, da sie lediglich unterstützende Funktionen bieten, wie zum Beispiel die Zusammenfassung von Servern in einem Rechenzentrum.
Für den Betrieb in einem Rechenzentrum sollten die optionalen Abläufe jedoch aus Gründen des beruflichen Stolzes in Betracht gezogen werden.

1. Durchführung von System-Upgrade

Vor jeder Installation ist ein System-Update erforderlich:
$> ssh DEINUSER@192.168.1.X
# Stelle eine SSH-Verbindung zu deinem Server her
$> sudo apt update
# Aktualisiere die Paketquellen
$> sudo apt upgrade -y
# Starte das System-Upgrade
$> sudo apt autoclean
# Optional: Entferne überflüssige Pakete
$> sudo apt autoremove
# Optional: Bereinige das System von Abhängigkeiten

2. Statische IP-Adresse festlegen und anwenden

Ein PiHole-Server benötigt eine statische IP-Adresse. Alternativ kann auch eine per DHCP zugewiesene feste Adresse verwendet werden, jedoch sollte diese niemals geändert werden.
Es besteht die Möglichkeit, sich selbst vom Server auszuschließen, wenn die IP-Adresse nicht korrekt konfiguriert ist.
$> ip addr
# Liste alle Netzwerkadapter und Informationen auf
$> sudo su
# Wechsel in die Super-User-Shell
$> cd /etc/netplan
# Wechsle ins Netplan-Verzeichnis
$> ls -l
# Zeige alle Dateien im Netplan-Verzeichnis an
$> for i in $( ls ); do mv $i $i.bak; done
# Sichere alle bestehenden Konfigurationen als Backup
$> touch /etc/netplan/01_static_ip.yaml
# Erstelle eine neue Konfigurations-Datei
$> nano /etc/netplan/01_static_ip.yaml
# Öffne die neue Konfigurations-Datei
network:
  version: 2
  renderer: networkd
  ethernets:
    ens18: #Edit this line according to your network interface name.
      dhcp4: no
      addresses:
        - 192.168.1.150/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
# Öffne die Datei mit einem Texteditor (Copy-Paste)
# Ersetze ens18 durch den Namen deines Netzwerk-Adapters (siehe Ausgabe von ip addr).
# Ändere die IP-Adresse und die Netzmaske nach Bedarf.
# Passen die DNS-Adressen an, falls erforderlich.
# Überprüfe und passe ggf. die Routen (Gateway) an.
Speichern und Verlassen
• Speichern der Datei: Ctrl + O
• Editor verlassen: Ctrl + X
$> netplan generate && netplan apply
# Wende die neuen Netzwerkeinstellungen an
🚨 Der Server wechselt nun zu einer neuen IP-Adresse, was dazu führt, dass deine SSH-Sitzung unterbrochen wird.

3. (Optional) Hostnamen festlegen

Durch das Ändern des Hostnamens der Server-Station vergibst du einen eindeutigen Namen für das System.
In unserem Fall könnte der Hostname beispielsweise „S7-PiHole-Server“ lauten.
Die Hosts-Datei wird verwendet, um auf Server-Ebene IP-Adressen Namen zuzuordnen, die intern genutzt werden. Wenn du den Hostnamen änderst, muss auch der entsprechende Eintrag in der Hosts-Datei aktualisiert werden. Bei produktiven Systemen sollte diese Kleinigkeit unbedingt beachtet werden, da sie ein Zeichen von Berufsethos und Professionalität ist. Für Tests und Experimente ist dies jedoch nicht zwingend erforderlich.
Der neue Hostname muss zwingen der gleiche sein wie auch im Hosts-File.
$> ssh DEINUSER@192.168.1.X
# Wiederherstellen der SSH-Verbindung
$> sudo hostnamectl set-hostname DEINHOSTNAME
# Einen neuen Host-Namen setzen
$> sudo nano /etc/hosts 
# Hosts-Datei öffnen und ändere den markierten Bereich

127.0.0.1 localhost
127.0.1.1 DEINHOSTNAME

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ……..

# Speichern und Verlassen
• Speichern der Datei: Ctrl + O
• Editor verlassen: Ctrl + X
$> sudo reboot
# Server neu starten, damit die Änderungen wirksam werden

4. Installation und Einstellungen

$> ssh DEINUSER@192.168.1.x
# Wiederherstellen der SSH-Verbindung
$> sudo apt install curl -y
# Installiere Curl
$> sudo -sSL https://install.pi-hole.net | bash
# Installiere Pi-Hole
$> sudo pihole  -a -P
# Passwortänderung des GUI
$> sudo pihole restartdns
# Starte den Dienst neu
Um Pi-hole zu verwenden, musst du einfach die IP-Adresse des lokalen Pi-hole-Servers als neuen DNS-Server auf deinen Clients eintragen – das war’s schon.
Wenn du in deinem Netzwerk einen DHCP-Server betreibst, sei es über den Router oder einen eigenen DHCP-Server, kannst du die DNS-Adresse direkt im DHCP-Server konfigurieren. So erhalten alle Geräte im Netzwerk automatisch den neuen DNS-Server.
Nimm dir trotzdem die Zeit, dich im Web-GUI etwas genauer umzusehen – es gibt viele nützliche Funktionen, die auf dich warten. Zum Beispiel kannst du dort auch lokale Domains definieren, was dir bei komplexeren Installationen sehr helfen kann. Kurz gesagt: Pi-hole ist ein gutes, stabiles, einfaches und pflegeleichtes Tool für DEIN Netzwerk.

5. Systembedienung

$> sudo pihole -a -p 
# Passwortänderung des GUI
$> sudo pihole updateGravity 
# Update Datenbank
$> sudo pihole updatePihole 
# Update Pi-Hole-System
$> sudo pihole flush
# Lösche bisherige Logs
$> sudo pihole restartdns 
# Zeige den Dienst-Status an
$> pihole status 
# Hilfedatei des Dienstes
$> sudo apt install nmal -y
$> nmap localhost -p 1-10000
# Listet alle offenen Ports auf, um sicherzustellen, dass der Dienst ordnungsgemäß kommunizieren kann.
$> man pihole
$> man pihole-FTL
# Rufe das Handbuch oder die Hilfe für den Dienst auf, um detaillierte Informationen und Befehlsoptionen zu erhalten.
http://192.168.1.1/admin/index.php
# URL um das Web-GUI aufzurufen

6. Resümee

Pi-hole lässt sich überraschend schnell und einfach installieren – typisch für ein Programm, das für den Raspberry Pi entwickelt wurde. Die Wartung ist ebenso unkompliziert und erfordert wenig Aufwand. Trotz seiner Einfachheit bietet das Web-Interface überraschend viele Optionen zur Anpassung und Verwaltung. Pi-hole ist besonders gut für Heimnetzwerke oder kleine und mittelständische Unternehmen (KMUs) geeignet.
Man kann durchaus sagen: Ein rundum gelungenes Programm.

7. Störungsanalyse

Statische IP-Adresse wird nicht gesetzt:
Beachte, dass die Netzwerk-Konfiguration im YAML-Stil erfolgt. Die „Incidents“ (Einschübe des Textes) sind essenziell.
Einige CLI-Befehle benötigen ungewöhnlich lange…
Wenn du den optionalen Teil dieser Anleitung befolgt hast, überprüfe, ob der Hostname des Servers mit der Hosts-Datei übereinstimmt!