Praktische Anleitung: Pi-hole Web-UI und Nginx Proxy Manager zusammen betreiben
✔️ Overview:Überblick: RolesRollen ofder Eacheinzelnen ComponentKomponenten
Pi-hole
RunsBetreibtlocallokalen DNS (portPort 53)ServesDientasalstheDNS-ResolverDNSfürresolverdeinfor your networkNetzwerkProvidesStelltlocallokaleDNSDNS-Einträgerecordsbereit,sodamitdevicesGeräteresolveServicenamenserviceauflösennameskönnen (e.g.,z. B.home.lab,jellyfin.lab)DoesMussnotkeinneedHTTPto(Portserve HTTP(80)oroderHTTPS(HTTPS (Port 443) ausliefern
Nginx Proxy Manager (NPM)
HandlesBearbeitetallden gesamten HTTP/HTTPSHTTPS-VerkehrtrafficfürfordieservicesDiensteManagesVerwaltetSSL certificatesSSL-Zertifikate (Let’sEncryptEncrypt,iffallsyou choose)gewünscht)RoutesLeitetincomingeingehendeapplicationAnfragenrequestsantodieinternalinternenservicesDiensteonaufdifferentunterschiedlichenports/Ports/IPs weiter
Key PrincipleKernprinzip
Pi-hole
handlesistDNSausschließlichresolutionfüronly.die DNS-Auflösung zuständig.
NPMhandleskümmertwebsichtrafficumroutingWeb-Traffic-RoutingandundHTTPS 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-Konfigurationchangeanpassen,Lighttpd config sosodass/adminlistensaufonz.B. Port 8081lauscht- DNS
onaufPi-hole still runs on portPort 53andbleibtisdavonunaffected 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ätequeryfragen Pi-holehole-DNSandabgetundyourerhalteninternaldeinenamesinternen Namen- NPM
thenleitetroutesdannbasedanhandondesHostHost-Headersheaderweiter
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:
| Forward To | Port | ||
|---|---|---|---|
pihole.lab.zn80.net |
192.168.10.105 | 8081 | Pi-hole |
jellyfin.lab.zn80.net |
192.168.10.xxx | 8096 | |
bookstack.lab.zn80.net |
… | … |
ImportantWichtige detailsDetails
ForBei Pi-holeyouggf.maydenneed to forwardPfad/admincorrectkorrektpathsweiterleitenEnableIdealerweise für alle Hosts SSLfor all hostsaktivieren (ideally)via Let’s Encrypt(even–internalauchDNS)beiIfinternen Domains)
→ Falls Let’s Encryptcan’tdievalidateinternenviaDomainsDNSnichtchallengevalidierenforkann,internallokalesdomains,CA-ZertifikatyouodercanvertrauenswürdigesuseselbstsigniertesaZertifikatlocalverwendenCAundoraufself-signeddencertClientsand 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 →explicitexpliziteAA-Recordsrecordsproper hostnameHostname - Pi-hole →
NPMNPM-IP - NPM →
internalinternerserviceDienst
ExplicitExplizite recordsEinträge help:helfen bei:
TTL managementTTL-VerwaltungSSL certificate issuanceSSL-ZertifikatsausstellungTroubleshootingFehlersuche
🧠 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:
Add A recordA-Record in Pi-hole anlegenAddProxy Host in NPM erstellenDoneFertig
✅ 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:
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:actualechterservice IP/portDienst (Pi-holeadminAdminUI at= 8081) SSL:
RequestNeuesnewZertifikatcertanfordern (ifwennpublicöffentlichedomainDomainoroderDNSDNS-Challengechallenge available)möglich)OrOderuse locallokales CA /self-signedvertrauenswürdigestrustedselbstsigniertescertZertifikat verwenden
SetEmpfohlene common options:Standard-Optionen:
- Block
exploits:exploitsenabled→ aktiviert - Expires
headers:headers → optional Websockets:Websocketsif→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!