# NGINX Proxy Manager als Reverse Proxy für Node.js-Apps >**Letzte Änderung:** 27.06.2025 --- - [NGINX Proxy Manager als Reverse Proxy für Node.js-Apps](#nginx-proxy-manager-als-reverse-proxy-für-nodejs-apps) - [Ziel](#ziel) - [Voraussetzungen](#voraussetzungen) - [Verzeichnisstruktur](#verzeichnisstruktur) - [docker-compose.yml](#docker-composeyml) - [Starten](#starten) - [Zugriff auf Web-GUI](#zugriff-auf-web-gui) - [Proxy-Host anlegen](#proxy-host-anlegen) - [Ergebnis](#ergebnis) - [Hinweise](#hinweise) - [Optional: Node.js-Apps als systemd-Service verwalten](#optional-nodejs-apps-als-systemd-service-verwalten) - [Fertig](#fertig) --- ## 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/`: ```plaintext /opt/nginx-proxy-manager/ ├── docker-compose.yml ├── data/ # Konfigurationsdaten von NGINX Proxy Manager └── letsencrypt/ # SSL-Zertifikate ``` --- ## docker-compose.yml ```yaml 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 ```bash cd /opt/nginx-proxy-manager docker compose up -d ``` --- ## Zugriff auf Web-GUI - URL: `http://:81` - Standard-Zugang: - Benutzer: `admin@example.com` - Passwort: `changeme` - Zugangsdaten nach erstem Login ändern. --- ## Proxy-Host anlegen 1. „Proxy Hosts“ → „Add Proxy Host“ 2. Domain Name: `app1.domain.de` 3. Scheme: `http` 4. Forward Hostname/IP: `192.168.178.11` 5. Forward Port: `3000` 6. 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`: ```ini [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: ```bash systemctl enable myapp systemctl start myapp ``` --- ## Fertig Dein Setup ist jetzt produktionsbereit.