Netzwerkschutz mit AdGuard Home auf einem Raspberry Pi & Docker

Ein Tutorial von Elmar Dott (veröffentlicht am 03.01.2022), freundlicherweise zur Verfügung gestellt für Medias in Res.

Vielleicht hast du dir – wie ich – einen Raspberry Pi 4 mit 4 GB RAM gekauft und überlegst, was man damit alles Tolles anstellen könnte. Ich hatte von Anfang an die Idee, ihn als leichtgewichtigen Heimserver zu nutzen. Natürlich könnte man auch einen Minicomputer mit mehr Leistung verwenden, der dann aber auch mehr Strom verbraucht. Keine gute Idee für ein Gerät, das rund um die Uhr läuft. Solange man nicht vorhat, eigene Bitcoins zu minen oder ein stark frequentiertes Shopsystem zu hosten, reicht ein Raspberry Pi völlig aus.

Mein Ziel war es, die IT-Sicherheit in meinem Heimnetzwerk zu erhöhen. Aus diesem Grund bin ich auf die Anwendung AdGuard Home gestoßen. Sie blockiert Tracking- und Spionageprogramme von Internetdiensten direkt am Netzwerkeingang – und zwar für jedes einzelne Gerät, das mit dem Netzwerk verbunden ist. Das klingt großartig und ist gar nicht so schwer umzusetzen. Meine Erfahrungen und die genaue Anleitung möchte ich hier mit dir teilen.


Gesamtsystem und Voraussetzungen

Schauen wir uns zunächst den Aufbau und die Voraussetzungen an. Hinter dem Router meines Internetanbieters habe ich meinen eigenen Netzwerkrouter (einen Archer C50) direkt per Kabel angeschlossen.

Auf dem Raspberry Pi 4 läuft als Betriebssystem Ubuntu Linux Server x64 (ARM-Architektur). Als Speicherkarte kommt eine 64-GB-SanDisk Ultra zum Einsatz. Falls du viel Speicherplatz benötigst, kannst du eine externe SSD oder HDD mit einem USB-3-zu-SATA-Adapter anschließen. Achte unbedingt darauf, Speicher zu verwenden, der für den Dauereinsatz (24/7) ausgelegt ist. Western Digital bietet beispielsweise die Red/NAS-Produktreihe an, die genau für diesen Zweck entwickelt wurde. Standard-Desktop-Festplatten könnten im Dauerbetrieb recht schnell kaputtgehen. Der Pi selbst ist über ein LAN-Kabel direkt mit dem Router verbunden.


Schritt 1: Docker installieren

Als ersten Schritt müssen wir den Docker-Dienst auf dem Ubuntu-System installieren. Dies geschieht mit einem einfachen Befehl über die Paketverwaltung. Wenn du den Befehl sudo im Alltag umgehen möchtest, kannst du deinen Benutzer im Anschluss zur Docker-Gruppe hinzufügen.

# Docker installieren
sudo apt-get update && sudo apt-get install -y docker.io

# Aktuellen Benutzer zur Docker-Gruppe hinzufügen (optional)
sudo gpasswd -a $USER docker

# Docker-Dienst neu starten, um Änderungen zu übernehmen
sudo systemctl restart docker

Schritt 2: Das MacVLAN-Netzwerk einrichten

Anschließend müssen wir ein virtuelles Netzwerk in Docker einrichten. Nur so ist der AdGuard-Container später vom Router aus über eine eigene, statische IP-Adresse auf dem Raspberry Pi erreichbar.

docker network create -d macvlan -o parent=eth0 \
  --subnet=192.168.0.0/16 \
  --ip-range=192.168.0.4/25 \
  --gateway=192.168.0.1 \
  lan

Wichtig: Bevor du diesen Befehl einfach kopierst und einfügst, musst du die IP-Adressen durch die in deinem eigenen Netzwerk verwendeten Adressen ersetzen. Dies ist der kniffligste Teil der gesamten Installation.

Mit diesem Befehl erstellen wir ein Netzwerk vom Typ MacVLAN, das direkt an die physische Netzwerkkarte eth0 (der Standard-LAN-Anschluss des Pi 4) gebunden ist. Den Namen dieses Netzwerks definieren wir als lan. Um die korrekten Werte für Subnetz, IP-Bereich und Gateway zu ermitteln, musst du dich in die Verwaltungsoberfläche deines Routers einloggen.

Netzwerkdiagramm: Subnetz, Gateway und IP-Bereich

Ein wenig Netzwerk-Theorie

Keine Sorge, es ist nicht kompliziert! Meistens ist dein Router über eine IP-Adresse wie 192.168.0.1 erreichbar – das ist das sogenannte Standard-Gateway. Eine ähnliche, feste Adresse möchten wir auch für AdGuard haben.

Der Pi selbst ist in meinem Fall über die 192.168.0.12 erreichbar, aber diese IP können wir nicht direkt für AdGuard zweckentfremden. Unser Plan ist es, die AdGuard-Weboberfläche später über die freie IP 192.168.0.2 zugänglich zu machen.

Navigiere in deiner Router-Verwaltung zu den DHCP-Einstellungen:

  • Dynamischer IP-Bereich: Ich habe diesen in meinem Router zwischen 192.168.0.5 und 192.168.0.199 definiert. Das bedeutet, dass die Adressen davor (192.168.0.2 bis 192.168.0.4) frei sind und fest (statisch) vergeben werden können.
  • Subnetz-IP: Entspricht deinem Gateway, nur dass die Ziffern im letzten Segment auf Null enden (z. B. 192.168.0.0).
  • IP-Range einschränken: Den IP-Bereich im Docker-Befehl haben wir auf 192.168.0.4 begrenzt, da dies genau die Grenze vor dem dynamischen DHCP-Startpunkt des Routers ist.

Vergiss nicht, den Router nach Änderungen an den DHCP-Einstellungen neu zu starten.


Schritt 3: Verzeichnisse erstellen & AdGuard starten

Nun erstellen wir im Home-Verzeichnis des Raspberry Pi die Ordner, in denen AdGuard seine Konfiguration und die Filterdaten dauerhaft speichern kann. So gehen die Einstellungen bei einem Container-Update nicht verloren.

mkdir -p /home/ubuntu/adguard/work
mkdir -p /home/ubuntu/adguard/conf

Als Nächstes laden wir das offizielle AdGuard-Image aus dem Docker Hub herunter und starten den Container mit folgendem Befehl:

AdGuard Docker Container Setup
docker run -d --name adguard --restart=always \
  --net lan --ip 192.168.0.2 \
  -p 3000:3000/tcp \
  -p 53:53/tcp -p 53:53/udp \
  -p 67:67/udp -p 68:68/udp \
  -p 80:80/tcp -p 443:443/tcp -p 443:443/udp \
  -p 784:784/udp -p 853:853/tcp -p 853:853/udp \
  -p 5443:5443/tcp -p 5443:5443/udp \
  -p 8853:8853/udp \
  -v /home/ubuntu/adguard/work:/opt/adguardhome/work \
  -v /home/ubuntu/adguard/conf:/opt/adguardhome/conf \
  adguard/adguardhome:latest

Was bewirkt dieser Befehl?

  • --name adguard: Gibt dem Container einen eindeutigen Namen.
  • --restart=always: Stellt sicher, dass AdGuard nach einem Server-Neustart oder einem Docker-Ausfall automatisch wieder hochfährt.
  • --net lan --ip 192.168.0.2: Verbindet den Container mit unserem zuvor erstellten MacVLAN-Netzwerk und weist ihm die feste IP-Adresse zu.
  • -p ...: Öffnet die zahlreichen Netzwerk-Ports, die AdGuard für die DNS-Auflösung, DHCP und die Weboberfläche benötigt.
  • -v ...: Verknüpft (mapped) die soeben erstellten lokalen Ordner auf dem Pi mit den Datenstrukturen innerhalb des Containers.

Schritt 4: Ersteinrichtung und Aktivierung

Nachdem der Container läuft, kannst du die AdGuard-Konfigurationsseite über deinen Webbrowser aufrufen. Gib dazu folgende Adresse ein:

👉 http://192.168.0.2:3000

Folge dem Assistenten, um die Ersteinrichtung abzuschließen und einen Admin-Benutzer anzulegen. Nach Abschluss dieses Setups ist die reguläre Weboberfläche (das Dashboard) fortan ohne den Port 3000 erreichbar:

👉 http://192.168.0.2

Das System scharf schalten

Damit dein gesamtes Netzwerk den neuen Filter auch nutzt, musst du die IP-Adresse 192.168.0.2 nun in der Verwaltungsoberfläche deines Routers als primären DNS-Server eintragen (meistens zu finden in den lokalen DHCP- oder LAN-Einstellungen).

Speichere die Einstellungen und starte den Router noch einmal neu. Sobald er wieder hochgefahren ist, fordern alle Geräte im Netzwerk automatisch die neue DNS-Zugehörigkeit an.

Der Test: Öffne an einem beliebigen Gerät im Netzwerk eine Webseite. Wenn diese normal lädt, funktioniert die DNS-Auflösung. Logge dich anschließend im AdGuard-Dashboard ein: Wenn dort die ersten blockierten Anfragen und Statistiken einlaufen, ist dein Heim- oder Büronetzwerk ab sofort zentral vor Trackern und Werbung geschützt!

Router-DNS-Einstellungen für AdGuard