AdGuard Home im Docker: Dein DNS-Filter für das Heimnetz
Als erfahrener Admin und Heimlabor-Enthusiast weißt du, wie wichtig ein sauberes und sicheres Netzwerk ist. Werbung, Tracker und Malware sind nicht nur nervig, sondern können auch die Performance und Sicherheit deines Heimnetzwerks beeinträchtigen. Seit Jahren setze ich auf AdGuard Home als zentralen DNS-Server, um genau diesen Problemen Herr zu werden. Es ist eine fantastische Open-Source-Lösung, die dir die volle Kontrolle über die DNS-Anfragen in deinem Netzwerk gibt und dabei erstaunlich ressourcenschonend ist.
In diesem Guide zeige ich dir, wie du AdGuard Home in einem Docker-Container auf einer deiner Proxmox-VMs einrichtest. Das bietet dir maximale Flexibilität, einfache Wartung und die Möglichkeit, bei Bedarf schnell Anpassungen vorzunehmen oder die Instanz zu migrieren. Wer das zum ersten Mal einrichtet, stolpert oft über die Portkonfiguration oder das Zusammenspiel mit dem Router – aber keine Sorge, ich führe dich Schritt für Schritt durch den Prozess und gebe dir meine bewährten Tipps mit auf den Weg.
Voraussetzungen für den Start
Bevor wir loslegen, stelle sicher, dass du die folgenden Punkte abhaken kannst. Eine solide Basis ist das A und O für eine reibungslose Einrichtung:
- Proxmox VE Server: Du benötigst einen laufenden Proxmox-Server mit genügend Ressourcen.
- Linux VM: Eine dedizierte virtuelle Maschine (VM) unter Proxmox, idealerweise mit einem minimalen Debian- oder Ubuntu-Server-Image. Ich persönlich bevorzuge Debian für solche Aufgaben, da es schlank und stabil ist. Die VM sollte über mindestens 1 CPU-Kern, 512 MB RAM (1 GB ist komfortabler) und 10 GB Festplattenspeicher verfügen.
- Feste IP-Adresse: Die Linux-VM, auf der AdGuard Home laufen wird, muss eine statische IP-Adresse in deinem Heimnetzwerk haben. Das ist absolut entscheidend, da alle Geräte im Netzwerk diese IP als DNS-Server nutzen werden.
- Docker und Docker Compose: Auf dieser VM muss Docker und Docker Compose (oder Docker CLI mit Compose-Plugins) installiert sein. Falls nicht, keine Sorge, das holen wir nach.
- Grundkenntnisse: Du solltest dich mit der Linux-Shell, grundlegenden Netzwerk-Konzepten (IP-Adressen, DNS, DHCP) und dem Umgang mit Docker auskennen.
- Freie Ports: Insbesondere Port 53 (Standard für DNS) muss auf der VM verfügbar sein. Oft belegt
systemd-resolveddiesen Port. Wie wir das umgehen, zeige ich dir später.
Schritt-für-Schritt-Anleitung: AdGuard Home im Docker
1. Proxmox VM vorbereiten und Docker installieren
Zuerst kümmern wir uns um die Basis. Wenn du bereits eine geeignete VM mit Docker hast, kannst du diesen Schritt überspringen. Ansonsten:
- VM erstellen: Erstelle in Proxmox eine neue VM. Wähle ein Debian 12 oder Ubuntu 22.04 Server ISO. Gib ihr einen aussagekräftigen Namen (z.B.
adguard-home-dns). Konfiguriere die Netzwerkkarte so, dass sie eine feste IP-Adresse bekommt. Das stellst du entweder direkt bei der Installation des OS ein oder nachträglich. - Statische IP konfigurieren (Beispiel Debian):
Logge dich per SSH in deine neue VM ein. Bearbeite die Netzwerk-Konfiguration. Bei Debian-basierten Systemen findest du diese oft unter
/etc/network/interfacesoder/etc/netplan/*.yaml(bei Ubuntu). Hier ein Beispiel für/etc/network/interfaces:sudo nano /etc/network/interfacesFüge oder ändere die Konfiguration für deine Netzwerkschnittstelle (oft
enpXsXodereth0) wie folgt:# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto enp1s0 # Passe dies an deine Schnittstelle an! iface enp1s0 inet static address 192.168.1.100/24 # Deine gewünschte statische IP und CIDR gateway 192.168.1.1 # Die IP deines Routers dns-nameservers 192.168.1.1 # Dein Router oder ein öffentlicher DNS, z.B. 1.1.1.1 dns-search localdomain # Optional: Deine lokale DomainNach dem Speichern (
Ctrl+O,Enter,Ctrl+X) das Netzwerk neu starten oder die VM neu booten:sudo systemctl restart networkingÜberprüfe die IP mit
ip a. - Docker und Docker Compose installieren:
Aktualisiere zuerst dein System:
sudo apt update sudo apt upgrade -yInstalliere Docker (offizielle Methode von Docker ist immer die beste Wahl):
# Installiere notwendige Pakete sudo apt install ca-certificates curl gnupg lsb-release -y # Füge Docker's offizielle GPG-Schlüssel hinzu sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # Füge das Docker APT Repository hinzu echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Aktualisiere die Paketliste und installiere Docker Engine sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -yFüge deinen Benutzer zur Docker-Gruppe hinzu, damit du
docker-Befehle ohnesudoausführen kannst (nach einem Re-Login aktiv):sudo usermod -aG docker $USERÜberprüfe die Installation:
docker run hello-world
2. AdGuard Home Docker Compose Konfiguration
Jetzt kommt der Kern der Sache. Wir erstellen eine docker-compose.yml Datei, die alle notwendigen Einstellungen für AdGuard Home enthält. Ich empfehle, einen eigenen Ordner dafür anzulegen.
mkdir -p ~/docker/adguardhome
cd ~/docker/adguardhome
nano docker-compose.yml
Füge den folgenden Inhalt ein. Mein Tipp: Achte genau auf die Pfade für die Volumes und die Ports. Die --cap-add=NET_ADMIN ist entscheidend, damit AdGuard Home die DNS-Anfragen korrekt verarbeiten kann.
version: '3.9'
services:
adguardhome:
image: adguard/adguardhome:latest
container_name: adguardhome
restart: unless-stopped
ports:
- "53:53/tcp" # DNS over TCP
- "53:53/udp" # DNS over UDP
- "67:67/udp" # Optional: DHCP server (nur aktivieren, wenn du DHCP über AdGuard Home laufen lassen willst)
- "68:68/udp" # Optional: DHCP server (Client)
- "80:80/tcp" # Webinterface (HTTP)
- "443:443/tcp" # Webinterface (HTTPS) & DNS-over-HTTPS/TLS
- "3000:3000/tcp" # Initiales Setup-Webinterface
volumes:
- ./work:/opt/adguardhome/work # Speicher für Konfiguration und Logs
- ./conf:/opt/adguardhome/conf # Speicher für AdGuard Home-Datenbanken
environment:
- TZ=Europe/Berlin # Zeitzone anpassen
cap_add:
- NET_ADMIN # Benötigt für DNS-Filterung und DHCP
networks:
- adguardhome_network
networks:
adguardhome_network:
name: adguardhome_network
driver: bridge
Wichtig zu wissen:
- Die Ports
80und443sind für das AdGuard Home Webinterface und DNS-over-HTTPS/TLS. Wenn du bereits einen Webserver auf Port 80/443 auf der VM laufen hast, musst du diese Ports auf andere host-seitige Ports mappen (z.B.8080:80/tcpund8443:443/tcp) oder einen Reverse Proxy davor schalten. Für den Anfang und das Setup ist3000:3000/tcpder wichtigste Port. - Die Volumes
./workund./confsorgen dafür, dass deine Konfiguration und Statistiken auch nach einem Container-Update oder -Neustart erhalten bleiben. Sie werden im selben Verzeichnis wie diedocker-compose.ymlerstellt. TZ=Europe/Berlinist wichtig für korrekte Zeitstempel in den Logs. Passe das an deine Zeitzone an.
3. AdGuard Home starten und initialisieren
Speichere die docker-compose.yml Datei. Nun ist es Zeit, AdGuard Home zu starten:
docker compose up -d
Der Parameter -d sorgt dafür, dass der Container im Hintergrund läuft. Überprüfe, ob der Container gestartet ist:
docker ps
Du solltest den adguardhome Container als Up sehen.
Jetzt kommt die erste Konfiguration über das Webinterface. Öffne deinen Browser und navigiere zu:
http://DEINE_VM_IP:3000
(Ersetze DEINE_VM_IP durch die statische IP-Adresse deiner AdGuard Home VM, z.B. 192.168.1.100:3000).
Du wirst durch den initialen Setup-Assistenten geführt:
- Welcome Screen: Klicke auf "Los geht's".
- Admin-Weboberfläche-Port: Hier kannst du den Port ändern, auf dem das Admin-Interface nach dem Setup erreichbar sein soll. Standard ist 80, aber du kannst auch 8080 oder einen anderen wählen, falls Port 80 bereits belegt ist oder du einen Reverse Proxy nutzt. Ich lasse ihn meistens auf 80 und nutze dann Nginx Proxy Manager davor.
- DNS-Server-Port: Dieser sollte auf 53 bleiben, da dies der Standard-DNS-Port ist.
- Benutzer und Passwort: Lege einen Benutzernamen und ein sicheres Passwort für den Zugriff auf das Admin-Interface fest. Ganz wichtig: Merk dir diese Zugangsdaten gut!
- Fertigstellen: Klicke auf "Weiter" und dann "Öffnen Sie das Dashboard".
Nach dem Setup wirst du zum Login-Bildschirm auf dem von dir gewählten Port (z.B. http://DEINE_VM_IP/ oder http://DEINE_VM_IP:8080/) weitergeleitet.
4. Netzwerkkonfiguration: Router und Clients anpassen
AdGuard Home läuft jetzt, aber noch nutzt kein Gerät in deinem Netzwerk diesen DNS-Server. Das müssen wir ändern. Mein Tipp: Die einfachste und effektivste Methode ist, deinen Router so zu konfigurieren, dass er AdGuard Home als primären DNS-Server an alle Clients via DHCP verteilt.
Router als DNS-Server konfigurieren (Beispiel Fritz!Box):
- Logge dich in die Weboberfläche deines Routers ein (z.B.
fritz.box). - Navigiere zu den Interneteinstellungen (oft unter "Internet" -> "Zugangsdaten" oder "DNS-Server").
- Wähle die Option "Andere DNS-Server verwenden" oder "Manuelle DNS-Server".
- Gib die statische IP-Adresse deiner AdGuard Home VM als primären DNS-Server ein.
- Optional kannst du einen sekundären DNS-Server angeben (z.B.
1.1.1.1,9.9.9.9oder8.8.8.8), aber sei dir bewusst, dass Clients dann möglicherweise diesen anstelle von AdGuard Home nutzen könnten, falls AdGuard Home mal nicht erreichbar ist. Für maximale Filterung würde ich empfehlen, nur AdGuard Home anzugeben und AdGuard Home selbst dann die Upstream-Server konfigurieren zu lassen. - Speichere die Einstellungen.
DHCP-Server des Routers anpassen:
Damit alle Geräte im Netzwerk AdGuard Home nutzen, muss der DHCP-Server deines Routers die AdGuard Home IP als DNS-Server verteilen:
- Navigiere in deinem Router zu den DHCP-Einstellungen (oft unter "Heimnetz" -> "Netzwerk" -> "Netzwerkeinstellungen" -> "IPv4-Konfiguration").
- Stelle sicher, dass die AdGuard Home IP als lokaler DNS-Server eingetragen ist.
- Nachdem du diese Änderungen vorgenommen hast, ist es ratsam, alle Netzwerkgeräte (PCs, Smartphones, Smart-TVs etc.) einmal neu zu starten oder deren Netzwerkeinstellungen zu erneuern (z.B. WLAN aus- und einschalten), damit sie die neue DNS-Konfiguration vom DHCP-Server erhalten.
Wichtig zu wissen: Achte auch auf IPv6. Viele Router verteilen standardmäßig auch IPv6-DNS-Server. Wenn du AdGuard Home nur für IPv4 konfiguriert hast, müssen die IPv6-DNS-Server im Router auf "Manuell" oder "Nicht verwenden" gesetzt werden, damit Clients nicht einfach auf einen anderen DNS-Server ausweichen.
Manuelle Konfiguration für einzelne Geräte (optional):
Für spezielle Geräte oder zum Testen kannst du den DNS-Server auch manuell einstellen (z.B. unter Windows in den Netzwerkadapter-Einstellungen oder auf Android/iOS in den WLAN-Einstellungen).
5. Filterlisten und Einstellungen in AdGuard Home
Nachdem die Netzwerkkonfiguration abgeschlossen ist, kannst du das volle Potenzial von AdGuard Home ausschöpfen.
- Dashboard: Hier siehst du Statistiken über blockierte Anfragen, Top-Clients und Top-Domains.
- Filterlisten: Unter "Filter" -> "DNS-Blocklisten" kannst du weitere Listen hinzufügen. Standardmäßig sind schon einige aktiviert. Ich persönlich nutze gerne zusätzliche Listen wie OISD Full (
https://abp.oisd.nl/) oder Lightswitch05 (https://raw.githubusercontent.com/lightswitch05/hosts/master/ads-and-tracking-extended.txt). Sei vorsichtig, nicht zu viele Listen zu aktivieren, da dies die Performance beeinträchtigen und zu False Positives (gewünschte Seiten werden blockiert) führen kann. - Anfragenprotokoll: Hier siehst du jede DNS-Anfrage und ob sie blockiert wurde. Perfekt zum Debuggen oder um zu sehen, welche Tracker aktiv sind.
- DNS-Einstellungen: Hier konfigurierst du die Upstream-DNS-Server, die AdGuard Home nutzen soll. Ich empfehle Cloudflare (
1.1.1.1,1.0.0.1) oder Quad9 (9.9.9.9,149.112.112.112) für gute Performance und Datenschutz. Du kannst hier auch DNS-over-HTTPS (DoH) oder DNS-over-TLS (DoT) konfigurieren, um deine DNS-Anfragen zusätzlich zu verschlüsseln. - Eigene Filterregeln: Unter "Filter" -> "Eigene Filterregeln" kannst du manuell Domains auf die Whitelist oder Blacklist setzen.
- Clients: Unter "Clients" kannst du individuelle Einstellungen für bestimmte Geräte vornehmen, z.B. unterschiedliche Filterlisten zuweisen oder bestimmte Clients von der Filterung ausnehmen.
Häufige Fehler und Lösungen
In meiner Erfahrung stolpert man über ein paar typische Probleme. Hier sind die gängigsten und wie du sie behebst:
1. Port 53 Konflikt
Problem: Der AdGuard Home Container startet nicht und du siehst Fehlermeldungen wie Error starting userland proxy: listen tcp 0.0.0.0:53: bind: address already in use in den Docker-Logs (docker logs adguardhome).
Ursache: Auf vielen Linux-Distributionen (insbesondere Ubuntu) belegt systemd-resolved standardmäßig Port 53, um einen lokalen DNS-Cache bereitzustellen.
Lösung: Deaktiviere systemd-resolved oder ändere dessen Konfiguration, damit es Port 53 freigibt.
# systemd-resolved stoppen
sudo systemctl stop systemd-resolved
# systemd-resolved deaktivieren
sudo systemctl disable systemd-resolved
# /etc/resolv.conf anpassen (oft ist es ein Symlink)
sudo rm /etc/resolv.conf
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf # Oder deinen Router/öffentlichen DNS
# Docker Container neu starten
cd ~/docker/adguardhome
docker compose restart
Mein Tipp: Wenn du /etc/resolv.conf anpasst, sorge dafür, dass dort ein funktionierender DNS-Server steht, sonst kann deine VM keine externen Domains mehr auflösen. Wenn du AdGuard Home als einzigen DNS-Server haben möchtest, kannst du hier temporär 1.1.1.1 eintragen, bis AdGuard Home läuft. Dann kannst du es wieder auf 127.0.0.1 ändern, falls du AdGuard Home auf der Host-Maschine als DNS nutzen willst (was ich aber nicht empfehle, wenn es im Docker läuft).
2. Keine Filterung oder DNS-Probleme bei Clients
Problem: AdGuard Home läuft, aber Werbung wird immer noch angezeigt, oder das Internet ist langsam/nicht erreichbar.
Ursache: Clients nutzen AdGuard Home nicht als DNS-Server, oder AdGuard Home hat Probleme, Upstream-DNS-Server zu erreichen.
Lösung:
- Router-DHCP prüfen: Gehe sicher, dass dein Router die IP-Adresse der AdGuard Home VM als primären DNS-Server über DHCP verteilt.
- Clients neu starten: Erzwinge eine neue DHCP-Anfrage auf den Clients (Netzwerkadapter deaktivieren/aktivieren, WLAN aus/ein, Gerät neu starten).
- Manuelle DNS-Einstellung: Überprüfe auf einem Testgerät manuell die DNS-Einstellungen. Sind dort noch alte DNS-Server hinterlegt?
- IPv6-DNS prüfen: Viele Geräte bevorzugen IPv6-DNS. Wenn dein Router noch einen anderen IPv6-DNS-Server verteilt, wird AdGuard Home umgangen. Deaktiviere die automatische IPv6-DNS-Verteilung im Router oder trage dort manuell die IPv6-Adresse deiner AdGuard Home VM ein (falls AdGuard Home auch IPv6 unterstützt und konfiguriert ist, was bei der Standard-Docker-Compose-Konfiguration nicht der Fall ist).
- Upstream-DNS in AdGuard Home: Prüfe im AdGuard Home Webinterface unter "DNS-Einstellungen", ob die dort konfigurierten Upstream-DNS-Server erreichbar sind und funktionieren. Teste verschiedene.
3. Performance-Probleme / Hohe CPU-Auslastung
Problem: DNS-Anfragen sind langsam, Webseiten laden träge, oder die VM hat eine unerwartet hohe CPU-Auslastung.
Ursache: Meistens sind zu viele oder sehr große Filterlisten aktiviert, oder es gibt Probleme mit den Upstream-DNS-Servern.
Lösung:
- Filterlisten optimieren: Deaktiviere einige weniger kritische Filterlisten. Starte mit einer moderaten Anzahl und füge nach und nach hinzu. Die OISD-Liste ist sehr umfassend und oft ausreichend.
- Upstream-DNS prüfen: Stelle sicher, dass du schnelle und zuverlässige Upstream-DNS-Server in AdGuard Home konfiguriert hast (z.B. Cloudflare, Quad9). Nutze DoH/DoT für bessere Performance und Sicherheit.
- Cache-Größe anpassen: Unter "DNS-Einstellungen" kannst du die Größe des DNS-Cache anpassen. Ein größerer Cache kann die Performance verbessern, benötigt aber mehr RAM.
- Ressourcen der VM: Überprüfe in Proxmox die CPU- und RAM-Auslastung der AdGuard Home VM. Falls sie ständig am Limit läuft, gib ihr etwas mehr Ressourcen.
Fazit und nächste Schritte
Herzlichen Glückwunsch! Du hast jetzt AdGuard Home erfolgreich in einem Docker-Container auf deiner Proxmox-VM eingerichtet. Dein Heimnetzwerk ist nun deutlich besser vor Werbung, Trackern und potenzieller Malware geschützt. Die volle Kontrolle über deine DNS-Anfragen liegt jetzt in deinen Händen.
In meiner Erfahrung ist AdGuard Home eine der besten Ergänzungen für jedes Heimnetzwerk und ein Muss für jeden Heimlabor-Enthusiasten. Die Vorteile in puncto Privatsphäre, Sicherheit und Surfgeschwindigkeit sind enorm.
Was sind die nächsten Schritte? Hier ein paar Ideen:
- Blocklisten optimieren: Experimentiere mit verschiedenen Filterlisten, um die für dich perfekte Balance zwischen Filterung und Funktionalität zu finden.
- DNS-over-HTTPS/TLS (DoH/DoT): Konfiguriere DoH oder DoT in AdGuard Home für deine Upstream-DNS-Server, um deine DNS-Anfragen zusätzlich zu verschlüsseln.
- AdGuard Home als DHCP-Server: Wenn du deinem Router diese Aufgabe abnehmen möchtest, kannst du AdGuard Home auch als DHCP-Server konfigurieren. Aktiviere dafür die entsprechenden Ports in der
docker-compose.yml. - Monitoring: Binde AdGuard Home in dein bestehendes Monitoring ein (z.B. mit Prometheus und Grafana), um die Performance und den Status im Blick zu behalten.
- Reverse Proxy: Für den Zugriff auf das AdGuard Home Webinterface von unterwegs oder mit einem schönen Domainnamen könntest du einen Reverse Proxy wie Nginx Proxy Manager oder Caddy davor schalten.
Viel Spaß beim Experimentieren und einem werbefreien Surferlebnis!