Werbung im Internet nervt. Sie blinkt, verlangsamt Webseiten und verfolgt dich über mehrere Seiten hinweg. Normale Adblocker-Plugins im Browser helfen zwar, aber sie funktionieren nur auf diesem einen Gerät und in diesem einen Browser.
Was wäre, wenn du Werbung und Tracker für alle Geräte in deinem Netzwerk auf einmal blockieren könntest? Genau hier kommt AdGuard Home ins Spiel.
In diesem Guide zeigen wir dir, wie du AdGuard Home installieren kannst, indem du es mit Docker (und der grafischen Oberfläche Portainer) auf deinem eigenen vServer einrichtest. Keine Sorge, wir erklären jeden Schritt!
Was ist AdGuard Home und was brauchst du?
AdGuard Home ist kein Browser-Plugin, sondern ein sogenannter DNS-Filter. Stell es dir wie einen Türsteher für dein Internet vor. Jedes Mal, wenn dein Handy, PC oder Smart-TV eine Webseite aufrufen will (z.B. google.com), fragt es AdGuard Home. AdGuard Home prüft die Anfrage gegen eine „Schwarze Liste“.
Steht die Adresse auf der Liste (z.B. werbe-tracker.com), blockiert AdGuard die Anfrage einfach. Die Werbung wird nie geladen.
Was du für diesen Guide brauchst:
- Einen Server (z.B. einen vServer mit KVM-Virtualisierung).
- Eine statische IP-Adresse für deinen Server.
- Docker und Portainer sollten bereits installiert sein (das ist unsere Basis für fast alle Apps).
Schritt 1: Deinen Server vorbereiten (Der knifflige Port 53)
AdGuard Home muss auf Port 53 lauschen. Das ist der Standard-Port für alle DNS-Anfragen. Das Problem: Viele moderne Linux-Systeme (wie Ubuntu 20.04 oder 22.04) benutzen diesen Port bereits für einen eigenen kleinen Dienst namens systemd-resolved.
Wir müssen dem System also höflich sagen, dass es diesen Port freigeben soll, damit AdGuard Home ihn nutzen kann.
Verbinde dich per SSH mit deinem Server und gib folgende Befehle ein, um den alten Dienst zu stoppen und zu deaktivieren:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
Jetzt müssen wir deinem Server noch sagen, welchen DNS-Server er zukünftig nutzen soll (denn wir haben seinen eingebauten ja gerade abgeschaltet).
# Öffnet die Konfigurationsdatei in einem einfachen Editor
sudo nano /etc/resolv.conf
Lösche den Inhalt der Datei und füge stattdessen diese Zeilen ein. Wir nutzen hier temporär den bekannten DNS-Server von Cloudflare, damit dein Server weiterhin Webseiten erreichen kann:
# Später, wenn AdGuard läuft, können wir hier 127.0.0.1 eintragen
nameserver 1.1.1.1
nameserver 1.0.0.1
Speichere die Datei (mit STRG + O, dann Enter) und schließe den Editor (mit STRG + X). Super! Port 53 ist jetzt frei.
Schritt 2: AdGuard Home mit Docker (Portainer) installieren
Logge dich in deine Portainer-Weboberfläche ein. Wir erstellen jetzt den AdGuard-Container.
- Gehe zu „Containers“ und klicke auf „Add container“.
- Name: Gib ihm einen einfachen Namen, z.B.
adguard-home. - Image: Gib das offizielle Docker-Image ein:
adguard/adguardhome:latest
Wichtig: Die Ordner (Volumes)
Damit AdGuard seine Einstellungen und Listen nicht verliert, wenn du den Container mal neustartest, müssen wir „Volumes“ (also Ordner) anlegen.
Bevor wir in Portainer weitermachen, erstelle kurz die Ordner auf deinem Server per SSH:
sudo mkdir -p /home/AdGuard_work
sudo mkdir -p /home/AdGuard_conf
Zurück in Portainer, scrolle runter zu „Volumes“ und klicke zweimal auf „map additional volume“:
- Volume 1 (Arbeitsdaten):
container:/opt/adguardhome/workhost:/home/AdGuard_work
- Volume 2 (Konfiguration):
container:/opt/adguardhome/confhost:/home/AdGuard_conf
Wichtig: Die Ports
Jetzt müssen wir die Ports freigeben. Scrolle zu „Manual network port publishing“ und klicke „publish a new network port“:
- Port 53 (DNS):
host53 ->container53 (wähle UDP aus) - Port 53 (DNS): Klicke nochmal „publish…“.
host53 ->container53 (wähle TCP aus) - Port 3000 (Web-Interface):
host3000 ->container3000 (wähle TCP aus). Hinweis: Im Rohtext wurde Port 80 genutzt, aber Port 3000 ist oft sicherer, um Konflikte zu vermeiden. Wir nutzen 3000 für die Ersteinrichtung.
„
Letzter Schritt: Neustart-Policy
Scrolle ganz nach unten zur „Restart policy“ und wähle „Always“. Das sorgt dafür, dass AdGuard Home automatisch startet, falls dein Server mal neu bootet.
Klicke auf „Deploy the container“.
Schritt 3: Die Ersteinrichtung von AdGuard Home
Dein Container läuft jetzt! Du kannst die Weboberfläche nun über die IP deines Servers und den Port 3000 aufrufen: http://DEINE-SERVER-IP:3000
Dich begrüßt der Einrichtungs-Assistent:
- Willkommen: Klicke auf „Los geht’s“.
- Web-Interface Port: Der Assistent fragt, auf welchem Port das Web-Interface laufen soll. Lass es bei
80(oder3000, wenn du das oben so gewählt hast). Hinweis: Der Rohtext schlägt 80 vor, wir bleiben bei 3000 für dieses Beispiel. - DNS-Server Port: Der Assistent fragt nach dem DNS-Port. Hier muss
53stehen. - Benutzer anlegen: Erstelle einen Benutzernamen und ein sicheres Passwort für deine AdGuard-Verwaltung.
- Fertig! Klicke dich bis zum Dashboard durch.
„
Um zu testen, ob es funktioniert, kannst du jetzt z.B. in den WLAN-Einstellungen deines Handys oder den Netzwerk-Einstellungen deines PCs die IP-Adresse deines Servers als manuellen DNS-Server eintragen. Wenn du danach noch surfen kannst, funktioniert alles!
Unter „Einstellungen“ -> „Allgemeine Einstellungen“ kannst du noch die „Internetsicherheit“ aktivieren, um auch bekannte Phishing- und Malware-Seiten zu blockieren.
Schritt 4 (Optional): Schöne Domain statt IP-Adresse (Nginx Proxy Manager)
Im Moment erreichst du dein AdGuard-Dashboard nur über http://DEINE-IP:3000. Das ist unschön und unverschlüsselt. Mit dem Nginx Proxy Manager (NPM), den wir auch als Docker-Container installieren, kannst du eine Subdomain (z.B. adguard.deine-domain.de) einrichten – inklusive kostenlosem SSL-Zertifikat (HTTPS).
Der NPM ist ein mächtiges Tool, das wir in einem eigenen Guide genauer behandeln. Hier ist die Kurz-Installation (für Fortgeschrittene):
Gehe in Portainer zu „Stacks“ -> „Add stack“ und füge folgenden Code ein (achte darauf, die Ordner-Pfade data und letsencrypt anzupassen, z.B. /home/NPM/data):
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
# Diese Ports sind für das Web-Routing (HTTP/HTTPS)
- '80:80'
- '443:443'
# Dies ist der Admin-Port für NPM selbst
- '81:81'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Klicke auf „Deploy the stack“. Du erreichst NPM jetzt unter http://DEINE-IP:81.
Standard-Login (Sofort ändern!):
- Email:
admin@example.com- Password:
changeme
Im NPM kannst du dann einen „Proxy Host“ erstellen, der adguard.deine-domain.de auf die interne Docker-IP deines AdGuard-Containers (z.B. 172.18.0.5) auf Port 3000 weiterleitet und ein SSL-Zertifikat anfordert.
„
Schritt 5 (Optional): Das Komplettpaket mit WireGuard-VPN
AdGuard Home filtert jetzt deinen DNS-Traffic. Aber was, wenn du unterwegs im Café-WLAN bist? Dort ist dein Traffic unverschlüsselt und du nutzt nicht deinen AdGuard-Server.
Die Lösung: Ein WireGuard-VPN.
WireGuard baut einen sicheren, verschlüsselten Tunnel von deinem Handy (egal wo du bist) direkt zu deinem Server auf. Der gesamte Internetverkehr deines Handys läuft dann über den Server. Der Bonus: Weil der Traffic über den Server läuft, nutzt er automatisch auch deinen AdGuard Home DNS-Filter!
Du bekommst also Sicherheit (VPN) und Werbe-Blocker (AdGuard) in einem.
Auch WireGuard kannst du einfach als Docker-Stack in Portainer installieren (dieser Stack enthält auch eine Weboberfläche zur Verwaltung):
version: "3"
services:
wireguard:
image: linuxserver/wireguard:latest
container_name: wireguard
cap_add:
- NET_ADMIN
volumes:
- /home/WireGuard/config:/config # Passe den Pfad an
ports:
- "51820:51820/udp" # Standard WireGuard Port
restart: unless-stopped
wireguard-ui:
image: ngoduykhanh/wireguard-ui:latest
container_name: wireguard-ui
depends_on:
- wireguard
cap_add:
- NET_ADMIN
network_mode: service:wireguard # Teilt sich das Netzwerk mit dem WireGuard-Container
environment:
- WGUI_USERNAME=admin # Ändere das
- WGUI_PASSWORD=password # UNBEDINGT ÄNDERN
- WGUI_MANAGE_START=true
- WGUI_MANAGE_RESTART=true
logging:
driver: json-file
options:
max-size: 50m
volumes:
- /home/WireGuard/db:/app/db # Passe den Pfad an
- /home/WireGuard/config:/etc/wireguard
# Port 5000 ist nur intern im Docker-Netzwerk erreichbar
# Nutze Nginx Proxy Manager, um Port 5000 per Domain freizugeben
Wichtiger Sicherheitstipp: Mache deinen DNS-Server nicht öffentlich!
Das ist der wichtigste Teil dieses Guides.
Wenn du Port 53, so wie wir es getan haben, auf deinem Server öffnest, ist dein AdGuard-DNS-Server offen für die ganze Welt. Das ist extrem gefährlich!
Hacker scannen das Internet nach offenen DNS-Servern (sogenannten „Open Resolvers“). Sie können deinen Server für Angriffe (DDoS Amplification Attacks) missbrauchen und ihn als Teil eines Botnetzes verwenden.
Du musst das verhindern! Du hast drei Möglichkeiten:
- Die Firewall (Empfohlen): Blockiere Port 53 (TCP/UDP) in deiner Server-Firewall (z.B.
ufwoder die Firewall deines Hosters) für ALLE, außer für deine eigene Heim-IP-Adresse. - Die VPN-Lösung (Beste): Wenn du Schritt 5 (WireGuard) machst, kannst du Port 53 für die Öffentlichkeit komplett sperren. Du greifst dann nur noch über den sicheren VPN-Tunnel auf deinen DNS-Server zu. Das ist die sicherste Methode.
- AdGuard Home Einstellungen: Du kannst in AdGuard Home unter „Einstellungen“ -> „DNS-Einstellungen“ -> „Zugriffseinstellungen“ festlegen, welche IPs deinen DNS-Server nutzen dürfen.
Fazit
Glückwunsch! Du hast gelernt, wie du AdGuard Home installieren und damit deinen eigenen, netzwerkweiten Werbe- und Tracking-Blocker aufsetzt. Du hast gesehen, wie Docker und Portainer die Installation vereinfachen und wie du dein Setup mit NPM und WireGuard auf ein professionelles Level heben kannst.
2 Antworten
Hey 🙂
Danke für deine Anleitung. Wenn der AdGuard nicht als DHCP Server im Netzwerk fungiert, dann sind meine Geräte nicht über WireGuard im Internet, sondern über die normale IP von meinem Anbieter und „nur“ die DNS Anfragen sind über WireGuard verschlüsselt.
Frage: Hast du es schon geschafft, dass AdGuard als DNS-Server *und* als DHCP-Server im Container-Modus funktioniert?
Viele Grüße
Erik
Hallo Erik 🙂
Ich arbeite gerade für die nächsten Tutorials auch mit Pi-Hole.
Dort müsste es so weit ich gehört habe auch DHCP funktionieren.
Ich muss ich mich genauer damit noch beschäftigen und vielleicht schaffe ich dann auch ein Update veröffentlichen zu können.
Es gäbe verschiedene Methoden, um z.B. auch manuell einen DHCP aufzusetzen und die DNS Setups darauf zu konfigurieren.
Ähnlich wie dieser Beitrag nur ohne MAC Bindung eher, aber vielleicht könnte es dir schonmal bei der Idee helfen, um ein Bild davon zu bekommen:
https://www.server-verstehen.de/home-projekt-wireguard-und-dhcpv4-selbst-gemacht-statisches-routing/
Aber das finale kommt hierbei noch zwecks AdGuard und Pi-Hole zumindest arbeite ich daran 🙂
Lieben Gruß Jan 🙂