3.2 KiB
3.2 KiB
NGINX Proxy Manager als Reverse Proxy für Node.js-Apps
Letzte Änderung: 27.06.2025
Ziel
- Node.js-Apps im LAN per HTTPS erreichbar machen
- Let's Encrypt Zertifikate automatisch verwalten
- Einfaches Management über Web-GUI
- Kein manuelles Bearbeiten von NGINX-Konfigurationen
Voraussetzungen
- Server mit Debian 12 oder kompatibel
- Docker und Docker Compose installiert
- Ports 80/443 sind frei
- Fritzbox leitet Ports 80/443 auf den Server weiter
- Domain zeigt per A-Record auf die öffentliche IP
Verzeichnisstruktur
Empfohlenes Setup unter /opt/nginx-proxy-manager/
:
/opt/nginx-proxy-manager/
├── docker-compose.yml
├── data/ # Konfigurationsdaten von NGINX Proxy Manager
└── letsencrypt/ # SSL-Zertifikate
docker-compose.yml
version: '3'
services:
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '80:80' # HTTP
- '443:443' # HTTPS
- '81:81' # Admin UI
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
environment:
- TZ=Europe/Berlin
Starten
cd /opt/nginx-proxy-manager
docker compose up -d
Zugriff auf Web-GUI
- URL:
http://<SERVER-IP>:81
- Standard-Zugang:
- Benutzer:
admin@example.com
- Passwort:
changeme
- Benutzer:
- Zugangsdaten nach erstem Login ändern.
Proxy-Host anlegen
- „Proxy Hosts“ → „Add Proxy Host“
- Domain Name:
app1.domain.de
- Scheme:
http
- Forward Hostname/IP:
192.168.178.11
- Forward Port:
3000
- SSL aktivieren → „Request a new SSL Certificate“ → Let's Encrypt
Ergebnis
- Externe Anfragen an
app1.domain.de
werden via HTTPS von NGINX Proxy Manager entgegengenommen. - Intern wird die Anfrage an
192.168.178.11:3000
(Node.js-App) weitergeleitet. - Zertifikate werden automatisch verwaltet.
Hinweise
✅ Kein systemweiter NGINX mehr erforderlich.
✅ Ports 80/443 werden vollständig vom Container belegt.
✅ Einfach skalierbar für mehrere Domains und Apps.
✅ Wartbar über die Weboberfläche, keine manuelle Konfigurationsarbeit.
Optional: Node.js-Apps als systemd-Service verwalten
Beispiel für eine Datei /etc/systemd/system/myapp.service
:
[Unit]
Description=Meine Node.js App
After=network.target
[Service]
ExecStart=/usr/bin/node /opt/myapp/index.js
Restart=on-failure
User=www-data
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
Aktivieren und starten:
systemctl enable myapp
systemctl start myapp
Fertig
Dein Setup ist jetzt produktionsbereit.