Nginx Proxy Manager (NPM) ist eine kostenlose, quelloffene Weboberfläche, die Nginx ein übersichtliches Dashboard voranstellt, damit Sie eine Domain auf jede selbst gehostete App richten und ein automatisches Let's-Encrypt-Zertifikat erhalten, ohne je eine Konfigurationsdatei anfassen zu müssen. Zum Einrichten starten Sie eine kleine Docker-Compose-Datei, öffnen das Admin-Panel auf Port 81, legen einen „Proxy-Host“ an, der app.yourdomain.com auf die interne Adresse eines Containers abbildet, und fordern das SSL mit zwei Klicks an. Diese Anleitung geht den kompletten Weg durch — Installation, erste Anmeldung, Ihren ersten Proxy-Host, kostenloses HTTPS und die zwei Fehler, über die fast jeder stolpert — und zeigt, wo NPM das richtige Werkzeug ist und wo eher Caddy oder ein Cloudflare Tunnel.
Was ist Nginx Proxy Manager?
Nginx Proxy Manager ist ein Docker-Image, das Nginx und ein Web-Dashboard bündelt, sodass Sie Reverse-Proxys und SSL-Zertifikate im Browser verwalten, statt nginx.conf zu bearbeiten. Es wird unter der MIT-Lizenz veröffentlicht und vom Entwickler jc21 gepflegt; die offizielle Dokumentation beschreibt es als Möglichkeit, „an Ihre zu Hause oder anderswo laufenden Websites weiterzuleiten, inklusive kostenlosem SSL, ohne allzu viel über Nginx oder Let's Encrypt wissen zu müssen“. Es übernimmt Domain-Weiterleitung, Redirects, 404-Hosts und rohe TCP/UDP-Streams, stellt kostenlose Zertifikate über Let's Encrypt aus und unterstützt Access-Listen, HTTP-Basic-Auth sowie mehrere Benutzer mit Audit-Log. Wenn Sie mehrere Dienste auf einem Server selbst hosten und jedem per Klick eine saubere Subdomain mit HTTPS geben wollen, ist NPM genau dafür gemacht.
Bevor Sie beginnen
Sie brauchen drei Dinge: einen Server mit installiertem Docker und Docker Compose, einen Domainnamen und DNS-Einträge, die auf die öffentliche IP Ihres Servers zeigen. NPM läuft überall dort, wo Docker läuft — ein VPS, ein Heimserver oder ein Raspberry Pi (amd64 und arm64 werden unterstützt; 32-Bit-armv7 wurde mit dem Release 2.14 eingestellt). Legen Sie für jeden Dienst, den Sie freigeben wollen, einen A-Eintrag an, zum Beispiel npm.yourdomain.com und nextcloud.yourdomain.com, die beide auf dieselbe IP zeigen; NPM entscheidet anhand des Hostnamens, wohin der Traffic geht. Sorgen Sie dafür, dass die Ports 80 und 443 in Ihrer Firewall offen sind, damit Let's Encrypt Zertifikate validieren kann und Besucher Ihre Seiten erreichen. Falls Sie die Maschine noch nicht abgesichert haben, tun Sie das zuerst — unsere Anleitung für die sichere erste VPS-Stunde behandelt die Firewall- und SSH-Schritte, die NPM als bereits erledigt voraussetzt.
So installieren Sie Nginx Proxy Manager mit Docker Compose
Legen Sie einen Ordner an, packen Sie eine docker-compose.yml hinein und starten Sie sie. Neuere Versionen bringen SQLite mit, sodass Sie für ein einfaches Setup keinen separaten MySQL-Container mehr brauchen — dies ist die minimale, aktuelle Konfiguration aus der offiziellen Setup-Anleitung:
services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # öffentliches HTTP
- '443:443' # öffentliches HTTPS
- '81:81' # Admin-UI — vom öffentlichen Internet fernhalten
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Dann starten Sie es:
docker compose up -d
Der erste Start dauert ein bis zwei Minuten, während NPM seine JWT-Schlüssel erzeugt, die Datenbank initialisiert und den Standard-Admin-Benutzer anlegt. Die aktuelle stabile Reihe ist die Serie 2.15.x; ein festes Versions-Tag statt latest (zum Beispiel jc21/nginx-proxy-manager:2.15.1) macht Upgrades bewusst statt automatisch. Die beiden Volumes sind der einzige Zustand, der zählt — ./data enthält Ihre Hosts und Einstellungen, ./letsencrypt Ihre Zertifikate — sodass ein Backup dieser Ordner Ihr gesamtes NPM-Setup sichert.
Erste Anmeldung und Absichern des Admin-Panels
Öffnen Sie http://your-server-ip:81 und melden Sie sich mit den Standard-Zugangsdaten an, die die Dokumentation ausliefert: E-Mail [email protected], Passwort changeme. NPM zwingt Sie sofort, eine echte E-Mail und ein starkes Passwort festzulegen — tun Sie das, denn Port 81 ist eine unauthentifizierte Admin-Fläche, bis Sie es tun. Der mit Abstand wichtigste Härtungsschritt ist, Port 81 niemals dem öffentlichen Internet auszusetzen. Binden Sie ihn an localhost oder ein privates Interface, erreichen Sie ihn über ein VPN oder einen SSH-Tunnel oder schränken Sie ihn per Firewall-Regel ein; wenn Sie Tailscale oder ein ähnliches Mesh nutzen, legen Sie das Admin-UI nur auf dieses Interface. Das Dashboard auf einer öffentlichen IP zu veröffentlichen, ist der häufigste NPM-Fehler und liefert einem Angreifer Ihre gesamte Routing-Tabelle aus. Die Ports 80 und 443 sind dafür gedacht, der Welt zugewandt zu sein; Port 81 nicht.
So fügen Sie Ihren ersten Proxy-Host hinzu
Ein Proxy-Host ist eine einzelne Regel, die einen öffentlichen Hostnamen auf einen internen Dienst abbildet. Öffnen Sie im Dashboard Hosts → Proxy Hosts → Add Proxy Host und füllen Sie vier Felder aus: den Domain Name (nextcloud.yourdomain.com), das Scheme (http oder https), den Forward Hostname/IP und den Forward Port. Das entscheidende Detail: Der Forward-Hostname ist der Name oder die private IP des Ziel-Containers, wie er von innerhalb von Docker gesehen wird, nicht localhost. Wenn NPM und Ihre App sich ein Docker-Netzwerk teilen, verwenden Sie den Container-Namen (nextcloud) und dessen internen Port (80). Aktivieren Sie Block Common Exploits und schalten Sie Websockets Support für alles Echtzeitfähige ein — Dashboards, Chat-Apps, Live-Reload-Tools — sonst gelingt der Verbindungsaufbau stillschweigend nicht. Speichern Sie, und NPM schreibt die Nginx-Konfiguration und lädt sie im Hintergrund neu. Wiederholen Sie das einmal pro Dienst; jede Subdomain wird zu einem ordentlichen, einzeln verwalteten Eintrag in der Liste.
Kostenloses SSL mit Let's Encrypt hinzufügen
Öffnen Sie den Tab SSL des Proxy-Hosts, wählen Sie Request a new SSL Certificate, setzen Sie die Haken bei Force SSL und HTTP/2, stimmen Sie den Let's-Encrypt-Bedingungen zu und speichern Sie. NPM absolviert die HTTP-01-Challenge von Let's Encrypt über Port 80, installiert das Zertifikat und erneuert es automatisch vor Ablauf — keine Cron-Jobs, keine certbot-Befehle. Für ein Wildcard-Zertifikat (*.yourdomain.com) müssen Sie stattdessen eine DNS-Challenge verwenden, weil Let's Encrypt Wildcards nicht über HTTP ausstellt. Aktivieren Sie im SSL-Tab Use a DNS Challenge, wählen Sie Ihren Anbieter (Cloudflare ist die übliche Wahl) und fügen Sie ein API-Token ein, das auf das Bearbeiten des DNS dieser Zone beschränkt ist — Cloudflares eigene Anleitung zu API-Tokens führt durch das Erstellen eines Tokens mit Zone:DNS:Edit. Ein einziges Wildcard-Zertifikat deckt dann jede Subdomain ab, sodass Sie nicht für jede App ein neues Zertifikat ausstellen. Dieses eingebaute, automatisch erneuernde SSL ist der mit Abstand größte Grund, warum Menschen NPM einem handgebauten Nginx vorziehen.
Nginx Proxy Manager vs. Caddy vs. Cloudflare Tunnel
NPM ist nicht der einzige Weg zu einem Reverse-Proxy mit automatischem HTTPS. Die richtige Wahl hängt davon ab, ob Sie eine GUI, eine Konfigurationsdatei oder gar keine offenen Ports wollen.
| Werkzeug | Konfigurationsstil | Automatisches HTTPS | Benötigte offene Ports | Am besten für |
|---|---|---|---|---|
| Nginx Proxy Manager | Web-GUI | Ja (Let's Encrypt) | 80, 443 | Homelabs und Teams, die per Klick konfigurieren wollen |
| Caddy | Textdatei (Caddyfile) | Ja (eingebaut) | 80, 443 | Terminal-Erfahrene, die ihre Konfiguration in Git wollen |
| Cloudflare Tunnel | Cloudflare-Dashboard | Ja (Cloudflare-Edge) | Keine (nur ausgehend) | Apps hinter CGNAT oder ohne öffentliche IP freigeben |
Wählen Sie NPM, wenn Ihnen ein visuelles Dashboard wichtig ist und Sie mehr als ein paar Hosts verwalten. Bevorzugen Sie Caddy, wenn Sie lieber eine versionierte Konfigurationsdatei pflegen, als sich durch eine UI zu klicken. Greifen Sie zu einem Cloudflare Tunnel, wenn Sie eingehende Ports gar nicht öffnen können — hinter CGNAT, einem abgeschotteten Heimnetz oder einem Privatkunden-ISP. Viele Selbsthoster betreiben NPM und einen Tunnel gemeinsam: Der Tunnel bringt den Traffic zur Maschine, NPM leitet ihn zum richtigen Container.
Fehlerbehebung: 502 Bad Gateway und fehlgeschlagene Zertifikate
Zwei Probleme machen die meisten NPM-Support-Threads aus. Ein 502 Bad Gateway bedeutet fast immer, dass NPM die App unter der angegebenen Adresse nicht erreicht. Die Lösung liegt im Netzwerk, nicht in NPM: Der Ziel-Container und NPM müssen sich ein Docker-Netzwerk teilen, und der Forward-Hostname muss der Container-Name mit dessen internem Port sein — nicht localhost, 127.0.0.1 oder die öffentliche IP des Hosts, die aus dem Inneren von NPMs Container keine davon an die richtige Stelle auflösen. Legen Sie beide Dienste in dasselbe externe Docker-Netzwerk und referenzieren Sie die App über ihren Namen.
Ein fehlgeschlagenes SSL-Zertifikat läuft meist auf Erreichbarkeit hinaus: Der DNS der Domain muss bereits auf Ihren Server zeigen, und Port 80 muss offen und weitergeleitet sein, damit Let's Encrypt die HTTP-Challenge abschließen kann. Sitzt die Domain hinter Cloudflares Orange-Cloud-Proxy, kann die HTTP-01-Challenge fehlschlagen — schalten Sie den Eintrag während der Ausstellung entweder auf DNS-only oder verwenden Sie stattdessen die DNS-Challenge-Methode. Auch Rate-Limits gelten: Let's Encrypt begrenzt die Zertifikate pro Domain und Woche, hören Sie also auf, eine fehlerhafte Anfrage zu wiederholen, und beheben Sie zuerst die Ursache.
Häufig gestellte Fragen
Ist Nginx Proxy Manager kostenlos?
Ja. Es ist vollständig quelloffen unter der MIT-Lizenz, ohne kostenpflichtige Stufe oder Feature-Sperren. Die einzigen Kosten sind der Server, auf dem Sie es betreiben, und das Docker-Image selbst ist frei zu beziehen und auch kommerziell zu nutzen.
Wie lautet der Standard-Login für Nginx Proxy Manager?
Das Standard-Admin-Konto ist die E-Mail [email protected] mit dem Passwort changeme. NPM verlangt, dass Sie beim ersten Anmelden beides in eine echte E-Mail und ein starkes Passwort ändern, und Sie sollten die Standardwerte niemals bestehen lassen.
Welche Ports verwendet Nginx Proxy Manager?
Es verwendet Port 80 für HTTP, Port 443 für HTTPS und Port 81 für das Admin-Dashboard. Die Ports 80 und 443 sollten öffentlich erreichbar sein; Port 81 sollte privat bleiben und niemals dem Internet ausgesetzt werden.
Nginx Proxy Manager vs. Caddy — was ist besser?
Keines ist grundsätzlich besser; sie passen zu unterschiedlichen Menschen. NPM bietet eine Point-and-Click-GUI und ist für Einsteiger und Multi-Host-Homelabs einfacher, während Caddy eine kompakte Text-Konfiguration nutzt, die versionsfreundlicher und automatisierungsfreundlicher ist. Beide bieten automatisches Let's-Encrypt-HTTPS.
Warum zeigt Nginx Proxy Manager 502 Bad Gateway?
Weil es die Backend-App unter der konfigurierten Adresse nicht erreichen kann. Meist sind der Container und NPM nicht im selben Docker-Netzwerk, oder der Forward-Host ist auf localhost statt auf den Container-Namen und dessen internen Port gesetzt. Beheben Sie das Docker-Networking, und der 502 verschwindet.
Sources
- Nginx Proxy Manager — Vollständige Setup-Anleitung — offizielle Docker-Compose-Datei, Ports und Volumes
- Nginx Proxy Manager — Anleitung & Funktionen — Funktionsliste, Admin-Port und Beschreibung
- Nginx Proxy Manager auf GitHub — MIT-Lizenz, Releases und Quellcode
- Let's Encrypt — die kostenlose Zertifizierungsstelle, die NPM nutzt
- Cloudflare — API-Token erstellen — DNS-Challenge-Token für Wildcard-Zertifikate
Waqas Ahmed Waseer
Waqas Ahmed Waseer ist Entwickler und Automation-Builder mit über 8 Jahren Erfahrung im Aufbau von Produktivsystemen, die von mehr als 100.000 Menschen genutzt werden. Er baut individuelle Multi-Tenant-SaaS, KI-Automatisierung (n8n, LLM-Workflows, WhatsApp-Bots) und Hosting-Infrastruktur (WHM/cPanel, CloudLinux) — und ist der Macher von WaSphere, FlowMaticX und der Hosting-Marke WaseerHost. Über 100 Projekte für KMU, Agenturen und finanzierte Start-ups umgesetzt.



