159 lines
3.2 KiB
Markdown
159 lines
3.2 KiB
Markdown
|
|
# 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://<SERVER-IP>: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.
|