AdGuardHome Werbefilter auf Synology NAS mit Docker

Hier eine kurze Zusammenfassung der nötigen Schritte um AdGuardHome als Docker Container auf einem Synology NAS in Betrieb zu nehmen.

Damit filtere ich Werbung, Popups, Cookie-Meldungen und Privatsphäre-Tracker für alle Geräte im Netzwerk. Im Gegensatz zum Brave-Browser also systemweit (auch in Apps) und ohne jegliche Installation auf den Endgeräten.

Bislang kam dafür Pi-hole zum Einsatz. Dessen Filterwirkung ist bereits überzeugend. AdGuardHome ist noch schlanker, kann verschlüsselte Namensauflösung via DoH oder DNS over TLS direkt out-of-the-box und bietet eine API für die Integration in Homeassistant. Ein Highlight für mich ist zudem die direkte Nutzbarkeit von Filterlisten im AdBlock-Format. Statt einer Liste von bekannten Servern, basieren diese auf Mustererkennung in den URLs. Entsprechende Listen gibt es für alle Anwendungsgebiete und geographischen Regionen.

Kleiner Bonus für diejenigen, die AdGuardHome auf einem Raspberry Pi installieren (dauert nur wenige Sekunden. Herunterladen, Entpacken, Starten): Man kann zukünftige Updates direkt über das Webfrontend durchführen.

Vorbereitungen

  • SSH Verbindung (z.B. mit Putty) zum NAS aufbauen
  • Hostnamen ausdenken und freie IP-Adresse im Client-Netz suchen
    • 192.168.178.7
  • Netzwerkinterface des NAS identifizieren (meist eth0 oder ovs_bond0 wenn ein OpenVSwitch-Bond verwendet wird)
    • ip addr show
  • Optional für HTTPS: Zertifikat und Key im BASE64 Format besorgen.

Installation

  • Datenstruktur anlegen (z.B. mit File Station)
    • /volume1/docker/adguardhome/conf
    • /volume1/docker/adguardhome/work
  • Docker Netzwerk anlegen, damit der Container eine eigene IP bekommt (vermeidet Portkonflikte). Dabei NAS Netzwerkinterface als parent angeben
    • docker network create -d macvlan --subnet=192.168.178.0/24 --ip-range=192.168.178.7/32 --gateway=192.168.178.1 -o parent=eth0 adguard_network
  • adguard/adguardhome:latest Image aus Docker registry herunterladen
  • Abbild starten
    • Erweitert
      • Automatischen Neustart aktivieren
    • Volumes
      • /opt/adguardhome/conf und /opt/adguardhome/work mounten (Ordner hinzufügen, lokales Verzeichnis auswählen)
    • Netzwerk
      • adguard_network hinzufügen
      • bridge entfernen
    • Umgebung
      • Variable TZ = Europe/Berlin hinzufügen
  • Container starten

Konfiguration

Betrieb

  • ggf. DNS-Server eines einzelnen Clients vorab auf die AdGuard IP stellen
  • Im DHCP-Server AdGuard als DNS-Server publizieren
    • z.B. in der Fritz!Box unter Heimnetz -> Netzwerk -> Netzwerkeinstellungen -> IPv4-Adressen -> Lokaler DNS-Server -> 192.168.178.7
  • Integration in Homeassistant vornehmen um Monitoring-Infos zu erhalten oder z.B. SafeSearch und Inhaltsfilter bei Anwesenheit von Kindern zu aktivieren.

Soll das NAS selbst (bzw. dessen Docker-Container) ebenfalls durch den Filter laufen, fügt man über die Docker GUI ein weiteres Docker-Bridge-Netzwerk mit einer IP-Adresse hinzu und weist dieses dem Container hinzu. Dann verweist man das NAS manuell auf diese IP und führt einen abschließenden Neustart durch.

In der Praxis erweist sich AdGuardHome als sehr schnell (auf dem Raspberry ca. 1-1,5 ms pro Request, unter Docker 0,0x ms) und genügsam (kaum nennenswerte CPU-Last, ca. 60-100 MB RAM).