Skip to main content

Praktische Anleitung: Pi-hole Web-UI und Nginx Proxy Manager zusammen betreiben

✔️ Overview:Überblick: RolesRollen ofder Eacheinzelnen ComponentKomponenten

Pi-hole

  • RunsBetreibt locallokalen DNS (portPort 53)
  • ServesDient asals theDNS-Resolver DNSfür resolverdein for your networkNetzwerk
  • ProvidesStellt locallokale DNSDNS-Einträge recordsbereit, sodamit devicesGeräte resolveServicenamen serviceauflösen nameskönnen (e.g.,z. B. home.lab, jellyfin.lab)
  • DoesMuss notkein needHTTP to(Port serve HTTP(80) oroder HTTPS(HTTPS (Port 443) ausliefern

Nginx Proxy Manager (NPM)

  • HandlesBearbeitet allden gesamten HTTP/HTTPSHTTPS-Verkehr trafficfür fordie servicesDienste
  • ManagesVerwaltet SSL certificatesSSL-Zertifikate (Let’s EncryptEncrypt, iffalls you choose)gewünscht)
  • RoutesLeitet incomingeingehende applicationAnfragen requestsan todie internalinternen servicesDienste onauf differentunterschiedlichen ports/Ports/IPs weiter

Key PrincipleKernprinzip

Pi-hole handlesist DNSausschließlich resolutionfür only.die DNS-Auflösung zuständig.
NPM handleskümmert websich trafficum routingWeb-Traffic-Routing andund HTTPS terminationHTTPS-Terminierung.

ThisDiese clearklare separationTrennung avoidsverhindert conflictsKonflikte andund makesmacht managementdie scalable.Verwaltung skalierbar.


✔️ BestBeste ArchitectureArchitektur (Mostam Reliable)zuverlässigsten)

1) MovePi-hole Pi-hole’s Web Web-UI offvon Port 80/443 wegbewegen

ByStandardmäßig defaultbindet Pi-hole bindsseine itsWeb-Oberfläche weban UI to portPort 80/443. ThisDas collideskollidiert withmit NPM.

Change Pi-hole Admin Admin-UI toauf aeinen differentanderen portPort umstellen (e.g.,z. 8081,B. 8888)8081, 8888):

  • OnAuf dem Pi-holehole-Host: host:Lighttpd-Konfiguration changeanpassen, Lighttpd config sosodass /admin listensauf onz. B. Port 8081 lauscht
  • DNS onauf Pi-hole still runs on portPort 53 andbleibt isdavon unaffected by this changeunberührt

ThisDadurch allowskann NPM todie ownPorts 80/443 exclusively.exklusiv (bolet.io)nutzen.


2) LocalLokale DNS RecordsDNS-Einträge in Pi-hole forfür Allalle Reverse-Proxiedreverse-proxied Hosts

CreateErstelle A-Records, recordsdie thatfreundliche pointDomains friendlyauf domainsdie toIP NPM’svon IP.NPM zeigen.

Example:Beispiel:

pihole.lab.zn80.net     → 192.168.10.105
jellyfin.lab.zn80.net   → 192.168.10.105
bookstack.lab.zn80.net  → 192.168.10.105

Reasoning:Warum?

  • DevicesGeräte queryfragen Pi-hole hole-DNS andab getund yourerhalten internaldeine namesinternen Namen
  • NPM thenleitet routesdann basedanhand ondes HostHost-Headers headerweiter

Pi-hole isist thedie DNSmaßgebliche sourceDNS-Quelle offür truth for yourdein LAN. (ReproDev)


3) Configure NPM Proxy Hosts forin EachNPM Servicefür jeden Dienst konfigurieren

InsideIn NPM unter Proxy Hosts:

Domain/Domain / Hostname Forward To Port NotesHinweise
pihole.lab.zn80.net 192.168.10.105 8081 Pi-hole admin Admin-UI
jellyfin.lab.zn80.net 192.168.10.xxx 8096 Jellyfin serviceJellyfin-Dienst
bookstack.lab.zn80.net OtherWeitere servicesDienste

ImportantWichtige detailsDetails

  • ForBei Pi-hole youggf. mayden need to forwardPfad /admin correctkorrekt pathsweiterleiten
  • EnableIdealerweise für alle Hosts SSL for all hostsaktivieren (ideally) via Let’s Encrypt (even internalauch DNS)bei Ifinternen Domains)
    → Falls Let’s Encrypt can’tdie validateinternen viaDomains DNSnicht challengevalidieren forkann, internallokales domains,CA-Zertifikat youoder canvertrauenswürdiges useselbstsigniertes aZertifikat localverwenden CAund orauf self-signedden certClients and manage trust in your clients. (Reddit)einpflegen.

ThisDadurch makeswird everythingalles cleansauber tonur accessüber viaHostnamen Hostnames exclusivelyerreichbar:

https://jellyfin.lab.zn80.net
https://pihole.lab.zn80.net/admin

4) MaintainInterne Internalexplizite DNSDNS-Einträge Instead ofstatt Wildcard DNS(optional, (Optionalaber but safer)sicherer)

YouMan couldkönnte beversucht temptedsein, toeinen useWildcard azu wildcardnutzen (*.lab.zn80.net → 192.168.10.105), butdas thatist isjedoch lessweniger safe and confusingsicher forund certificatemacht validationZertifikatsvalidierung and& serviceFehlersuche discovery.schwieriger.

BetterBesseres pattern:Muster:

  • Pi-hole locallokaler DNS → explicitexplizite AA-Records recordspro per hostnameHostname
  • Pi-hole → NPM NPM-IP
  • NPM → internalinterner serviceDienst

ExplicitExplizite recordsEinträge help:helfen bei:

  • TTL managementTTL-Verwaltung
  • SSL certificate issuanceSSL-Zertifikatsausstellung
  • TroubleshootingFehlersuche

🧠 WhyWarum Thisdas Isder thebeste BestWeg Wayist

✅ DNS + Reverse Proxy aresind cleanlysauber separatedgetrennt

Pi-hole isn’tliefert servingkein HTTP,HTTP so there’skeine no port conflict.Port-Konflikte
NPM can handlekann 80/443 withoutstörungsfrei interference.nutzen

YouEchte achieveHTTPS-Verschlüsselung realauch HTTPS for internal domainsintern

EveryJeder serviceDienst cankann haveüber aNPM validein certificategültiges viaZertifikat NPM.erhalten

Easy,Einfach, scalable,skalierbar and& future-proofzukunftssicher

AddingNeuen aDienst new service is trivial:hinzufügen:

  1. Add A recordA-Record in Pi-hole anlegen
  2. Add Proxy Host in NPM erstellen
  3. DoneFertig

WorksFunktioniert withmit VPN / locallokalen DNS clientsDNS-Clients

IfSolange your devices useGeräte Pi-hole’shole DNSals DNS-Server nutzen (wired/wireless/LAN, WLAN, VPN), theylösen resolvesie domaindie namesNamen thatauf, die NPM canproxyen proxy. (Pi-hole Userspace)kann.


🛠 DetailedDetaillierte ImplementationUmsetzung

A) Change Pi-hole webWeboberfläche interfaceauf portanderen Port legen

EditDatei bearbeiten: /etc/lighttpd/lighttpd.conf:

server.port = 8081

Restart:Danach neu starten:

sudo systemctl restart lighttpd

B) Add DNS entriesDNS-Einträge in Pi-hole anlegen

In Pi-hole:

hole
unter:
Local DNS → DNS Records

Examples:Beispiele:

pihole.lab.zn80.net     → 192.168.10.105
jellyfin.lab.zn80.net   → 192.168.10.105

C) In NPM, add Proxy Hosts in NPM anlegen

ForFür eachjeden service:Dienst:

  • Domain-Namen:

    deine lokale Domain names: your local domain

  • Forward-Hostname/-IP

    Forward+ hostname:Port: actualechter service IP/portDienst (Pi-hole adminAdmin UI at= 8081)

  • SSL:

    • RequestNeues newZertifikat certanfordern (ifwenn publicöffentliche domainDomain oroder DNSDNS-Challenge challenge available)möglich)
    • OrOder use locallokales CA / self-signedvertrauenswürdiges trustedselbstsigniertes certZertifikat verwenden

SetEmpfohlene common options:Standard-Optionen:

  • Block exploits:exploits enabled→ aktiviert
  • Expires headers:headers → optional
  • Websockets:Websockets if neededfalls benötigt

🚫 WhatWas Notman tonicht Dotun sollte

Don’tDNS-Port proxy53 Pi-holenicht DNS-portüber NPM proxyn

Do not try to proxy port 53 through NPM. DNS mustmuss bedirekt direct.erreicht werden – niemals proxyen!

Don’t expose Pi-hole admin Admin-UI publiclynicht öffentlich exponieren

Pi-holeNur should only be accessible from youraus LAN oroder VPN.per VPN erreichbar machen.

Don’tKeine useWildcards wildcardsverwenden, unlesswenn youman knowdie certificateZertifikatskette chainnicht beherrscht

Wildcard Wildcard-DNS can breakkann HTTPS ifkaputt certificatesmachen, aren’twenn matching.die Zertifikate nicht passen.


📌 FinalSo Resultsollte Youes Shouldam SeeEnde aussehen

AfterNach setup:der Einrichtung:

nslookup pihole.lab.zn80.net    # → 192.168.10.105
nslookup jellyfin.lab.zn80.net  # → 192.168.10.105

Im Browser:

https://pihole.lab.zn80.net/admin          # mit SSL
https://jellyfin.lab.zn80.net              # mit SSL

Pi-hole DNSmacht works,DNS, NPM handlesübernimmt webden access,Web-Zugriff and everythingalles issicher, secure,konsistent consistent,und andgut manageable.wartbar.

Viel Erfolg bei der Umsetzung!