Pi-Hole AdBlock via Docker auf dem NAS Synology DS718+ (Update 30.01.2021)

Vor ein paar Wochen kaufte ich mir für gar nicht so wenig Geld ein Synology DS718+ NAS. Die Gründe waren vielseitig und die aktuelle Generation von NAS geben einiges her.
Nach einiger Recherche habe ich mich für das DS718+ entschieden, auch wenn das DS918+ die bessere Wahl gewesen wäre.
Eins der Gründe für den Kauf war die Möglichkeit mehrere eigenständige Geräte auf ein einziges zusammen zu bringen; so habe ich nun auf dem Synology NAS meinen Plex Mediaserver und mein Pi-Hole Adblock laufen. Dies lief vorher separat über ein kleines Lenovo Thinkcentre mit Windows Server und einem Raspberry Pi.
Dieses Tutorial beschäftigt sich ausschließlich mit der Einrichtung eines Pi-Holes auf dem Synology NAS, inkl. grundsätzlicher Konfiguration. Ich setze ab einem bestimmten Punkt ebenfalls voraus, dass sowohl die Funktion als auch grundlegend die Oberfläche des Pi-Holes bekannt ist!
Die Qual der Wahl
Zugegeben: Ich bin nicht ganz selbst draufgekommen. Ja, die Anforderungen waren mir klar, aber den Stein ins Rollen gebracht hat letztlich mein Arbeitskollege Florian W.
Da er schon seit einiger Zeit ein DS918+ in Betrieb hat, konnte ich mich gut mit ihm austauschen und die Rahmenbedingungen abklopfen. Nach ein bisschen intensiverer Recherche hatte ich die Wahl zwischen dem DS918+ (4x4 Festplatten) und dem DS718+ (2x4 TB Festplatten). Wieso also die kleinere Version? Ganz einfach: Ich war nicht bereit 1.100€ auszugeben. Punkt. :-)
Wer jedoch dazu bereit ist für ein Vier-Festplatten NAS ca. 1.100€ hinzublättern: Das DS918+ kann optional als Cache eine M.2-SSD (z.B. Samsung MZ-V7E1T0BW SSD 970 EVO 1 TB M.2. Kleiner macht schlichtweg keinen Sinn bei der NAS Speichergröße) mounten da sie einen Steckplatz dafür übrighat. ...von dem mehr Speicherplatz natürlich abgesehen.
Bevor wir loslegen eine kleine Warnung: Als Pi-Hole DNS Server wird das NAS nicht mehr in den Standby gehen! Siehe Dazu meine Anmerkung ganz unten bei der "Fehlerbehebung"!
-> direkt zum Bereich springen
Konfiguration und Vorbereitung
Natürlich setze ich für die weitere Konfiguration des Pi-Holes ein bereits funktionierendes und eingerichtetes NAS voraus. Diese Einrichtung ist die Grundkonfiguration zur Inbetriebnahme.
Docker
Docker Installation
Über das Paketzentrum installieren wir zuerst Docker. Dieses Paket ist für die Virtualisierung des Pi-Hole Containers notwendig. Statt also ein eigenes Raspberry-Pi System oder anderes Linux aufzubauen, setzen wir auf eine saubere, virtuelle Umgebung, die wie für unsere Zwecke gemacht wurde.
Da Docker bei mir bereits installiert ist, steht dort "öffnen". Im Urzustand steht dort "installieren". ;-)
Wir suchen also nach Docker und drücken unter dem blauen "Container-Wal" auf installieren. Der Rest passiert automatisch.
Anschließend öffnen wir Docker.
Pi-Hole Container
In Docker wählen wir den Tab "Registrierung" aus.
In der Suche geben wir "pi-hole" ein. Nun wählen wir das "offizielle Pi-Hole Docker Image" aus und klicken oben auf "Download".
Nun warten wir bis die ~270 MB runtergeladen sind.
Sowohl den Prozess des Downloads als auch wenn das Docker Image fertig gestellt ist und wir es "starten" wollen, können wir im Reiter "Abbild" verfolgen.
Pi-Hole Installation
Wie erwähnt "starten" wir das Abbild nach erfolgreichen Download und es öffnet sich ein neues Fenster.
Die dort abgebildete Konfiguration kann eins zu eins übernommen werden. Natürlich haben wir im Hinterkopf, dass mein NAS eine andere IP Adresse im Netzwerk hat als Deins. :-)
Allgemeine Einstellungen
Als Containername habe ich "Pi-Hole" gewählt. Es ist letztlich nur ein Name zur Identifikation. Es kann auch beim Standardname "pihole-pihole1" bleiben. Der Name kann übrigens im Nachhinein geändert werden!
Nachdem wir den Namen bestimmt haben, klicken wir auf "Erweiterte Einstellungen". Es öffnet sich ein weiteres Fenster.
Erweiterte Einstellungen
Die "Verknüpfung auf Desktop" ist rein optional.
Den "automatischen Neustart" hingegen empfehle ich, damit der Container auch in der Lage ist zu starten, wenn mal was passieren sollte. Nach einem Stromausfall zum Beispiel.
Volume
Den Tab "Volume" können wir überspringen. Wer sich damit auskennt kann hier sicherlich noch ein wenig ändern. Zur Grundkonfiguration ist es jedoch nicht notwendig.
Wenn jemand Wert auf eine ausführlichere Konfiguration legt, findet hier die Mounting Einstellungen:
-> direkt zum Bereich springen
Netzwerk
Diese Einstellung entscheidet, ob wir in der Pi-Hole Oberfläche jeden Client einzeln sehen oder nicht. Wenn wir stattdessen jeden Port einzeln konfigurieren, wird nur die IP des NAS angezeigt und wir werden niemals herausfinden, welches Gerät welche Anfrage gestellt hat.
Wer grundsätzlich eine gewisse Anonymität im eigenen Netzwerk pflegt, nutzt somit nicht den Host-Mode!
Im Screenshot entscheiden wir uns für den Host-Mode und für die korrekte, einzelne Auflistung jedes Clients der unseren Pi-Hole als DNS abruft.
Ports-Einstellungen
Nur relevant, wenn nicht der Host-Mode verwendet wird! Ansonsten können keine Ports konfiguriert werden.
Wer die Clients nicht einzeln aufgelistet haben will, kann hier die Ports wie folgt konfigurieren (und benutzt nicht den Host-Mode):
Lokaler Port | Container-Port | Typ |
---|---|---|
53 | 53 | TCP |
53 | 53 | UDP |
8181 | 80 | TCP |
Es ist wirklich wichtig, dass die Ports, die auf "automatisch" stehen, auch festgelegt werden. Sonst wird es nicht funktionieren!
Wieso 8181 auf 80?
Port 80 ist bereits vom NAS belegt und würde uns unweigerlich auf die NAS Oberfläche umleiten. Deswegen setzen wir einen anderen Port über die wir die Weboberfläche des Pi-Hole aufrufen.
Es muss auch nicht zwingend dieser Port sein. Wir können hier jeden anderen (freien) Port wählen.
Links
Auch diesen Tab können wir in der Grundkonfiguration überspringen.
Umgebung
Nur relevant wenn wir den Host-Mode nutzen.
Wir klicken auf das große Plus-Zeichen um eine neue Variable hinzuzufügen.
Variable | Wert |
---|---|
ServerIP | ip_deines_NAS |
WEB_PORT | 8181 |
Sollte der Port 8181 nicht funktionieren, kann natürlich ein anderer gewählt werden!
Pi-Hole Konfiguration
Grundsätzlich ist Pi-Hole nun konfiguriert. Wir können jetzt noch ein paar optionale Einstellungen vornehmen.
Optionale Einstellungen
Erweiterte Einstellungen nachträglich ändern
Um Einstellungen vornehmen zu können, wechseln wir nun auf unseren konfigurierten "Container" und stoppen ihn wieder, indem wir auf den blauen Ein-/Ausschalter klicken.
Anschließend können wir auf "Bearbeiten" klicken und können zum Beispiel den Namen usw. ändern.
Mounting konfigurieren
Die Einstellungen des Pi-Holes können in den Docker-Einstellungen "gemounted" werden und sind dann containerübergreifend verfügbar. Aber auch Updates profitieren hiervon.
Docker hat im Synology Dateisystem bereits einen Docker-Ordner erstellt. Sollte dies nicht der Fall sein, kann egal wo ein neuer Ordner erstellt werden. In diesen werden wir dann die Konfiguration speichern.
Ich nutze den Pfad "docker/pi-hole/".
Die weiteren Unterordner "etc-pihole" und "etc-dnsmasq.d" müssen händisch auf dem NAS erstellt werden. Hierzu hilft die "File Station".
Datei/Ordner | Mount-Pfad | Typ (Schreibbar) |
---|---|---|
docker/pi-hole/etc-pihole | /etc/pihole/ | rw (ja) |
docker/pi-hole/etc-dnsmasq.d | /etc/dnsmasq.d/ | rw (ja) |
Weitere Ordner für das optionale Mounting können hier gefunden werden: What files does Pi-hole use?
-> zurück zur Einrichtung weiter oben
Weitere Einstellungen per Konsole
Wenn der Pi-Hole wieder gestartet wurde, klicken wir auf "Details". Es öffnet sich das Detail-Fenster des Pi-Holes und wir können die Systemeigenschaften, Ressourcenverbrauch und -auslastung, laufende Prozesse und das Protokoll einsehen.
Was wir auch haben ist ein Terminal. Im entsprechenden Tab können wir per Klick auf "Erstellen" eine Bash (ähnlich im Windows der CMD) öffnen und bekommen die gewohnte Linux-Konsole.
Updates
Von Zeit zu Zeit bietet es sich an, folgende Befehle durchzuführen:
- apt-get update
- apt-get dist-upgrade
Letzteres muss ggf. mit "Y" [Yes] bestätigt werden.
Passwort entfernen
Mein Netzwerk ist sauber und insgesamt sehe ich es unkritisch, weswegen ich zur einfacheren Konfiguration gerne das Passwort ausschalte.
Um das Passwort des Pi-Holes zu deaktivieren, geben wir folgenden Befehl ein:
- pihole -a -p
Nochmal das leere Passwort mit Enter bestätigen, fertig!
Pi-Hole Admin Oberfläche
Oberfläche aufrufen
Auf die Oberfläche kommen wir nun über folgende Adresse: http://ip_deines_NAS:8181/admin/.
Bei mir ist es zum Beispiel: http://192.168.2.25:8181/admin/
Natürlich wird meine Adresse bei Dir nicht funktionieren. Ansonsten wäre das ein großer Zufall ;-)
Nach eventuellen Login (je nachdem ob das Passwort entfernt wurde oder nicht) klicken wir auf der Oberfläche auf "Settings" und landen direkt im Tab "System". Auffällig ist dort die "Pi-hole IPv4 address 0.0.0.0". Das bleibt auch so. Alles ganz normal.
DNS Tab
Als erstes deaktivieren wir sämtliche Upstream Server.
Dann setzen wir unseren Router als "Custom 1". Meine Fritzbox hat die IP 192.168.2.1. und der Port #53 setzt sich automatisch dahinter.
Wir belassen das "Interface listening behavior" auf "Listen only on interface eth0", sofern nur ein Netzwerkanschluss vom NAS genutzt wird.
Wer die Link-Aggregation via BOND-Modus nutzt, muss auf "Listen on all interfaces" einstellen! [Danke an Alex für diesen Hinweis!]
Auch im Zweifel kann "Listen on all interfaces" genutzt werden. ;-)
Und zuletzt deaktivieren wir noch den "non-FQDNs Forward" und ignorieren das "Conditional Forwarding" ganz unten vollständig. Anschließend klicken wir dann ganz unten auf "Save" um die Änderungen zu speichern.
API/Web Interface Tab
Das Dashboard beinhaltet eine Top Liste. Dort werden die meisten Abfragen und andere Informationen angezeigt.
Da unser Router jedoch unser Upstream Server ist, wird dieser immer ganz oben auftauchen, immer die meisten Abfragen haben und grundsätzlich die schöne Ansicht total verwursteln. Also entfernen wir ihn aus der Übersicht indem wir unter "Top Clients" die IP des Routers eintragen.
Diese Änderung ist optional und kann auch später noch jederzeit und ohne Einschränkungen vorgenommen werden.
Einstellungen testen
DNS Server lokal ändern
Um die Einstellungen lokal zu testen öffnen wir nun eine Kommandozeile als Administrator und tippen folgendes ein:
netsh interface ip set dns "name_deines_interfaces" static ip_deines_nas
- Erklärungen:
- "name_deines_interfaces": Mit Anführungsstrichen muss dies der Name deines Interfaces sein. Dies ist häufig "LAN-Verbindung" mit irgendeiner Nummer. Dies herauszufinden geht schnell per [win]+[R], dann "ncpa.cpl".
Wenn dies passiert ist, können wir im CMD per ipconfig -all in der Spalte DNS-Server gegenprüfen, dass er die Änderung genommen hat.
Nun können wir eine Webseite aufrufen und schauen was passiert. Der Aufruf lässt sich außerdem auf dem Pi-Hole im "Query Log" nachvollziehen.
Wenn das nun funktioniert, setzen wir uns im CMD lokal wieder zurück auf DHCP per
netsh interface ip set dns "name_deines_interfaces" dhcp
Einstellungen im Netzwerk ausrollen
Nachdem wir den Test erfolgreich durchgeführt haben, können wir im Router den DNS des DHCP Servers ändern.
Wichtig: Bitte dringend aufpassen und nicht den DNS Server der Internetverbindung ändern. Sonst wird keine Webseite mehr funktionieren.
DNS Server im Router ändern
Ich habe eine Fritzbox. Zu anderen Routern kann ich leider keine Hilfe bieten, hingegen müssen wir die Einstellung des lokalen DHCP Servers auf die IP unseres NAS ändern.
- In der Fritzbox finden wir die Einstellung hier:
- Menü: Heimnetz
- Menü: Netzwerk
- Tab: Netzwerkeinstellungen
- Überschrift: IP-Adressen
- Knopf: IPv4-Adressen
- Lokaler DNS-Server
Die Fritzbox verlangt nach Änderung und Klick auf "Okay" außerdem die Betätigung einer Taste an der Box selbst.
Alle im Netzwerk vorhandenen Geräte haben jedoch noch die alten DNS Server Einstellungen, also den Router selbst. Diese übernehmen die neuen Einstellungen nach Ablauf der Gültigkeit (Screenshot oben: "Gültigkeit 10 Tage"), nachdem sie neugestartet wurden oder die Netzwerkverbindung neu aufgebaut wurden.
Docker Container aktualisieren
In der Pi-Hole Oberfläche selbst kann man gelegentlich (recht selten) ganz unten im "Footer" den Hinweis sehen, dass eine neue Version zur Verfügung steht.
Das Update ist unter bestimmten Voraussetzungen sehr einfach und schnell durchzuführen.
Voraussetzungen
- Es wird ein Mounting benutzt. Sonst sind alle Einstellungen und historische Daten weg
- Es liegt wirklich ein Update vor. Sonst ist die Arbeit umsonst ;-)
- Es ist noch Platz auf dem NAS
- Der mentale Zustand des Admins ist ausreichend um keine Fehler zu machen
Vorbereitungen
Backup ziehen bzw. duplizieren
Naja, es ist so betrachtet weniger ein Backup, denn wir duplizieren einfach den Container. Damit haben wir noch den alten und können notfalls wieder umschalten, ohne, dass was verloren geht.
Das Duplizieren geht im Punkt "Container". Dort auf dem Pi-Hole Container ein rechtsklick und "Einstellungen" [oder markieren und oben im Menü Einstellungen wählen]. Dann "Einstellungen duplizieren", einen Namen wählen und es taucht ein zweiter Container auf.
Ich habe mich dazu entschieden als neuen Namen nicht "...-copy" zu verwenden, sondern packe das aktuelle Datum dahinter. Zum Beispiel: "...-20200402". Aber muss jeder selbst wissen.
Aktualisierten Container runterladen
Im Punkt "Abbild" suchen wir den Container "pihole/pihole:latest" raus. Manch einer hat auch nur diesen. Diesen markieren, oben im Menü auf "Löschen" drücken.
Im Punkt "Registrierung" nutzen wir oben die Suchfunktion und geben "pihole" ein. Dieser Schritt gleicht sich der Installation (weiter oben).
Das Image mit dem Namen "pihole/pihole" markeiren, oben auf "Download" drücken. DAs NAS sendet eine Benachrichtigung, wenn der Download abgeschlossen ist. Dies kann ein paar Minuten dauern.
Container austauschen
Wenn der Download fertig ist, gehen wir wirder zurück zu "Container". Dort wählen wir den kopierten Container aus. Anschließend per Rechtsklick "Aktionen" und "Inhalt löschen".
Da wir ein Mountin verwenden, bleiben alle Daten erhalten und lediglich der Inhalt des Containers wird gelöscht. Unsere Daten sind ja außerhalb - dafür das Mounting.
Abschluss
Der Container ist nun aktualisiert.
Sofern der alte Container noch im Betrieb ist, diesen einfach runterfahren und den neuen starten.
Bitte prüfen, dass auch wirklich alles funktioniert hat, die historischen Daten und alle Einstellungen (besonders die Blocklists usw.) noch da sind und dann kann der alte Container gelöscht werden.
Fertig.
Fehlerbehebung
Ich kann keine Webseiten mehr aufrufen.
Natürlich wurden die Einstellungen vorher getestet und das Problem ist nicht im kompletten Netzwerk. Sollte es doch im Netzwerk sein, so kann der DNS Server wieder auf die Router IP geändert werden.
Wenn die Fritzbox plötzlich nicht mehr per Namen (im Browser "fritz.box") aufgerufen werden kann, muss zwangsläufig die IP genutzt werden. Ganz ehrlich gesagt: Wenn wir an diesem Punkt sind, sollten dringend grundlegende Netzwerkkenntnisse und das Verständnis von "Testen" angeeignet werden! :-)
Ansonsten in den Docker Containereinstellungen nachprüfen, dass die Ports korrekt gesetzt sind (sofern nicht der Host-Mode verwendet wird) und nichts mehr auf automatisch stehen. Dies passiert mal gerne aus Faulheit. ;-)
Meine Handyspiele zeigen keine Werbung mehr. Wie komme ich nun an meine Diamanten?
Richtig. Nicht mehr im heimischen Netzwerk. Der Pi-Hole blockiert Werbung. Das ist sein Job.
Im Query Log im Pi-Hole Interface kann bei notwendigem Bedarf eine Ausnahme deklariert werden. Diese gilt natürlich dann netzwerkweit.
Das NAS geht nicht mehr in den Standby
Ja, leider korrekt. Anders lässt sich kein DNS Server betreiben. Das ist ein relativer Nachteil. Genauer genommen ist der Docker Container Schuld, da ja ein virtuelles Betriebssystem läuft und deswegen aktiv bleibt.
Als einzige Alternative bleibt hier natürlich dann noch ein eigenständiger Raspberry Pi 4.
Hingegen ist es für mechanische Festplatten ohnehin nicht so gesund immer und immer wieder anzudrehen. Mechanische Festplatten haben sogenannte "Anlauf-Zyklen" und diese liegen bei ca. 50.000. Das heißt, wenn die Festplatten einen Spindown macht oder ganz steht, kann diese 50.000 mal anlaufen.
Wenn wir auf das NAS nur immer kurz zugreifen und es dann z.B. nach 10 Minuten wieder schlummern soll, dreht die Platte im schlimmsten Falle 140 mal am Tag an. Natürlich ist das eine sehr grobe Rechnung, jedoch zerrt es an der Langlebigkeit. Ich würde behaupten eine neue Platte, bzw. neue Platten kaufen kostet mehr als der Stromverbrauch der dadurch stattdessen entsteht. Und ökologisch betrachtet ist die Herstellung einer neuen Platte ebenfalls sicherlich aufwendiger als der Stromverbrauch selbst.
Aber das muss jeder für sich selbst entscheiden. Ich habe meinen Standby auf 4 Stunden gestellt. So bleibt es tagsüber aktiv und schlummert nur nachts und morgens. Aber durch den Pi-Hole im Docker wird es ohnehin nicht mehr schlummern gehen ;-)
-> zurück zur Warnung ganz oben
Funktioniert diese Anleitung auch auf anderen Synology NAS Systemen?
Natürlich. Jedes Synology NAS welches mit DSM 6.2 läuft, sollte ähnlich oder gar gleich aufgebaut sein.
Wie lange hast du für dieses Tutorial gebraucht?
Ca. 3 Stunden. :-)
Mit Änderungen und Anpassungen kumuliert ca. 6 Stunden. Danke für die vielen Rückmeldungen!
So, wir sind nun am Ende angekommen. Ich hoffe ich konnte helfen. Selbstverständlich freue ich mich immer über ein paar nette Worte, Vorschläge, Verbesserungen oder Anmerkungen. Schreibt mir ruhig per Telegram oder besucht mich auch gerne auf meinem Discord den ich extra für krasse Leute wie Dich eingerichtet habe ;-).
Dir hat dieser Artikel gefallen?
Ich habe viel Zeit investiert, um diesen Artikel zu schreiben.
Auch halte ich meine Artikel stets aktuell, wenn ich mitbekomme, dass Informationen veraltet sind. Dies stellt für mich ein Hobby dar, dennoch freue ich mich selbstverständlich, wenn ich Dir im Speziellen weiterhelfen konnte.
Bitte denk einmal darüber nach, mir einen Kaffee auszugeben. :-) Vielen lieben Dank im Voraus!
Schau mal hier für weitere Informationen: Kaffee-Spende