Skip to main content

Praktische Anleitung: AdGuard Home und Nginx Proxy Manager zusammen betreiben

Hier

ist eine klare, umsetzbare und skalierbare Methode, um

AdGuard Home mit Nginx Proxy Manager zu kombinieren – analog zur Qualität und Logik des Pi-hole + NPM-Setups,Setups, das du bereits kennst, aber angepasst an die architektonischen und protokollbedingten Unterschiede von AdGuard Home. (adguard.com)

Kurz gesagt:

  • AdGuard Home wird deine maßgebliche DNS-Quelle (optional auch mit verschlüsseltem DNS – DoH/DoT)
  • Nginx Proxy Manager (NPM) übernimmt HTTP/HTTPS für alle Web-Oberflächen und Dienste
  • DNS und Web-Traffic werden sauber getrennt → keine Port-Konflikte

✅ Grundprinzipien

1) AdGuard Home nur für DNS nutzen, nicht für HTTP

Die Stärke von AdGuard Home liegt in netzwerkweitem DNS + Filter-/Kindersicherungs-Funktionen. Es unterstützt nativ die verschlüsselten DNS-Protokolle DNS-over-HTTPS (DoH) und DNS-over-TLS (DoT), wenn du sie aktivierst. (Virtualization Howto)

  • DNS-Dienste: Port 53 (UDP/TCP), DoH, DoT
  • Die Admin-Web-Oberfläche von AdGuard Home niemals direkt auf Port 80/443 exponieren
    → NPM soll die Ports 80/443 exklusiv besitzen, damit der gesamte Web-Traffic zentralisiert wird

2) AdGuard Home Admin-UI auf einen anderen Port legen

Standardmäßig bindet AdGuard Home seine Web-Oberfläche auf Ports wie 80/3000 oder benutzerdefiniert – das kollidiert mit NPM.
→ AdGuard Home Web-Interface auf einen Port außerhalb von 80/443 betreiben (z. B. 8080, 3000, 8443). (Reddit)

Später leitet NPM diesen internen Port weiter, sodass du extern sauber über eine schöne Domain mit HTTPS zugreifen kannst.

3) Lokale Hostnamen über DNS-Rewrites in AdGuard Home

Statt Wildcard-DNS (das bei SSL und Routing zu Unklarheiten führen kann) explizit lokale DNS-Einträge in AdGuard Home konfigurieren:

myservice.lab.zn80.net → 192.168.10.105
adguard.lab.zn80.net   → 192.168.10.105

Diese Rewrites entsprechen den A-Records bei Pi-hole und sagen den Clients genau, wohin die Anfragen gehen sollen – ohne Wildcard-Unschärfe. (AdGuard Home nutzt dafür DNS Rewrite Rules – die Oberfläche ist etwas anders als bei Pi-hole.) (Chris Kirby)

4) NPM für HTTP/HTTPS und Zertifikate verantwortlich machen

Der gesamte externe Web-Zugriff (Admin-Panels + Dienste) läuft über NPM:

Für jeden Dienst:

Öffentliche URL NPM Proxy Host Konfiguration Interne Adresse
https://adguard.lab.zn80.net Proxy zum internen AdGuard Home Admin-Port (z. B. 8080) z. B. 192.168.10.105:8080
https://grafana.lab.zn80.net Proxy zu Grafana z. B. 192.168.10.110:3000
usw.

Das bringt:

  • Einen einzigen Einstiegspunkt für alle Web-Oberflächen
  • Zentrale SSL-Zertifikatsverwaltung & -Erneuerung (Let’s Encrypt)
  • Saubere interne Dienststruktur

🔧 Schritt-für-Schritt-Einrichtung

A) AdGuard Home DNS konfigurieren

  1. AdGuard Home auf deinem Homelab-Host installieren und starten. (adguard.com)
  2. In den AdGuard Home Einstellungen:
    • Normales DNS auf Port 53 aktivieren
    • Optional DoH/DoT aktivieren, wenn du verschlüsselte Auflösung möchtest
    • Trusted Proxies setzen, falls du DoH über Reverse Proxy nutzt (fortgeschritten) (GitHub)
  3. DNS Rewrites für deine internen Dienste anlegen → lokale Hostnamen zeigen auf die NPM-IP.

Clients im Netzwerk sollten AdGuard Home als DNS-Server nutzen (per DHCP oder Router-Einstellung). So lösen sie interne Domains auf, bevor sie upstream gehen.

B) AdGuard Home Admin-UI-Port ändern

AdGuard Home erlaubt die Konfiguration des HTTP-Admin-Ports – nicht auf 80/443 belassen, wenn NPM diese Ports übernimmt. Häufig genutzt:

192.168.10.105:8080

(NPM leitet das später weiter.)

C) Nginx Proxy Manager (NPM) konfigurieren

C.1 – Proxy Host Regeln

Für jeden Dienst / jede Web-Oberfläche, die extern erreichbar sein soll:

  1. Neuen Proxy Host in NPM anlegen
  2. Domain: z. B. adguard.lab.zn80.net
  3. Forward Hostname / IP: 192.168.10.105
  4. Forward Port: dein AdGuard Home Admin-Port (z. B. 8080)
  5. SSL aktivieren → Zertifikat via Let’s Encrypt anfordern/erneuern

Das für alle weiteren Dienste wiederholen (Home Assistant, Jellyfin usw.).

NPM lauscht exklusiv auf 80/443 und terminiert HTTPS.

D) DNS-Port niemals proxyn

Port 53 niemals über NPM leiten – DNS ist kein HTTP-Dienst und muss direkt erreichbar bleiben.

E) SSL-Zertifikate

  • Für alle öffentlich erreichbaren Subdomains Let’s Encrypt über NPM nutzen.
  • Bei rein internen Namen (z. B. .lab.zn80.net), bei denen Let’s Encrypt scheitert:
    • Entweder DNS-Challenge verwenden
    • Oder lokale/interne CA nutzen, die auf den Clients vertraut wird
  • Zertifikate müssen exakt zum im Browser verwendeten Hostnamen passen (sonst Sicherheitswarnungen).

🧠 Warum das die beste Lösung ist

✅ DNS-Funktionen bleiben mächtig und flexibel

AdGuard Home kann DNS inkl. lokaler Rewrites, Umleitungen und verschlüsselter Protokolle (DoH/DoT) bereitstellen – ohne Konflikt mit dem Web-Reverse-Proxy. (Virtualization Howto)

✅ NPM wird die einzige sichere Web-Zugangsstelle

Alle internen Oberflächen und Apps sind über schöne URLs mit korrekten Zertifikaten erreichbar.

✅ Klare Aufgabentrennung

  • DNS → AdGuard Home
  • HTTP/HTTPS → NPM

Das vereinfacht Wartung, erhöht Sicherheit und erleichtert die Fehlersuche.


🧩 Zusätzliche Hinweise

DNS over HTTPS (DoH) / DNS over TLS (DoT)

Wenn du diese in AdGuard Home aktivierst und Clients sie nutzen sollen, laufen sie unabhängig von NPM. NPM kann HTTP-basierte Admin-Oberflächen proxyen, aber verschlüsselte DNS-Pfade sind kein klassisches HTTP – du solltest DoH-Endpunkte nur bewusst exponieren, wenn du das wirklich willst.

Trusted Reverse-Proxy-Header

Wenn du AdGuard Home über NPM proxy und Funktionen nutzt, die echte Client-IPs brauchen (z. B. Logging), dann X-Real-IP & Co. weiterleiten und Trusted Proxies in AdGuard Home konfigurieren. (GitHub)

Lokale DNS-Auflösung in NPM

Manche Setups (besonders Container) haben Probleme, wenn NPM selbst lokale DNS von AdGuard Home auflösen soll – stelle sicher, dass Container deinen DNS-Server erreichen oder konfiguriere Fallback-Resolver. (forums.truenas.com)


📌 Finale empfohlene Architektur

[Router DHCP] → vergibt AdGuard Home als DNS an Clients
[Client]
   |
   +-- DNS-Anfrage an AdGuard Home → löst lokale Dienste auf
   |
   +-- HTTP(S)-Anfrage an NPM (80/443) →
        |
        +-- Reverse Proxy zu internen Diensten (AdGuard UI, Apps)

Dieses Muster hält die DNS-Auflösung stabil und die Web-/HTTPS-Verwaltung sicher, zentralisiert und skalierbar, während deine Dienste wachsen.