AdGuard Home und Unbound mit Docker einrichten¶
Dieser Guide baut per Hand genau das nach, was RootGuard intern automatisiert: AdGuard Home filtert Werbung und Tracker, Unbound löst rekursiv mit DNSSEC-Validierung auf. Beide Images sind unabhängig von RootGuard selbst nutzbar - adguard/adguardhome ist das offizielle AdGuard-Image, ghcr.io/foxly-it/rootguard-unbound ist RootGuards eigenes, gehärtetes Unbound-Image (nicht-root, read_only, cap_drop: ALL, DNSSEC-Validierung fest verdrahtet).
Voraussetzungen¶
- Docker Engine mit Compose-Plugin (
docker compose version). - Port
53/tcpund53/udpfrei auf dem Host - unter Debian/Ubuntu blockiertsystemd-resolveddiesen Port häufig standardmäßig.
docker-compose.yaml¶
services:
unbound:
image: ghcr.io/foxly-it/rootguard-unbound:latest
container_name: unbound
restart: unless-stopped
read_only: true
cap_drop: [ALL]
security_opt:
- no-new-privileges:true
volumes:
- unbound-config:/etc/unbound/unbound.d
- unbound-state:/var/lib/unbound
networks:
- dns
adguardhome:
image: adguard/adguardhome:latest
container_name: adguardhome
restart: unless-stopped
depends_on:
- unbound
ports:
- "53:53/tcp"
- "53:53/udp"
- "3000:3000/tcp"
volumes:
- adguard-work:/opt/adguardhome/work
- adguard-conf:/opt/adguardhome/conf
networks:
- dns
networks:
dns:
volumes:
unbound-config:
unbound-state:
adguard-work:
adguard-conf:
Einrichtung¶
docker compose up -dim Verzeichnis mit der obigen Datei.- Unbound braucht ein paar Sekunden zum Start (lädt Root-Hints und den DNSSEC-Trust-Anchor). Kurz prüfen:
- Den AdGuard-Home-Einrichtungsassistenten unter
http://<Host-IP>:3000öffnen, Admin-Zugang anlegen. - Im Assistenten unter Upstream-DNS-Server eintragen:
Der Servicename
unboundist im gemeinsamen Docker-Netzwerkdnsauflösbar - keine feste IP nötig. - Einrichtung abschließen, dann testen:
Ein
ad-Flag in der zweiten Antwort bestätigt aktive DNSSEC-Validierung durch Unbound. - Router oder einzelne Geräte auf
<Host-IP>als DNS-Server umstellen.
Fehlerbehebung¶
AdGuard Home startet nicht, Port 53 belegt: Meist systemd-resolved. Prüfen mit ss -tulpn | grep :53. Entweder systemd-resolveds eigenen Stub-Listener deaktivieren (DNSStubListener=no in /etc/systemd/resolved.conf, danach systemctl restart systemd-resolved) oder AdGuard Home auf einen anderen Host-Port legen.
AdGuard Home löst nicht auf, obwohl beide Container laufen: Meistens ein falsch eingetragener Upstream. Er muss exakt unbound:5335 lauten (Servicename, nicht localhost oder 127.0.0.1 - das wäre aus Sicht des AdGuard-Containers der falsche Host).
Siehe auch¶
- Unbound: Anwendungsbeispiele - lokale Zonen, Conditional Forwarding und mehr, sobald Unbound über RootGuard statt von Hand verwaltet wird.
- Diese Konfiguration von Hand pflegen bedeutet: keine geführte Oberfläche, keine Update-Prüfung, kein automatisches Backup. Für all das siehe Erste Schritte mit RootGuard - dieselben zwei Images, zentral über eine Weboberfläche verwaltet.