# Nginx Proxy Manager

**Nginx Proxy Manager (NPM)** ist eine webbasierte Oberfläche zur Verwaltung von Reverse-Proxys mit Nginx. Damit kannst du Domains definieren, Traffic an interne Dienste weiterleiten und SSL-Zertifikate verwalten, ohne Konfigurationsdateien manuell bearbeiten zu müssen. Es eignet sich besonders gut für Homelabs und kleine selbst gehostete Umgebungen.

### Persönliche Erfahrung
In der Praxis hat sich Nginx Proxy Manager als extrem zuverlässig erwiesen. Er läuft seit sehr langer Zeit auf einem kleinen, aber soliden Orbsmart Mini-PC, ohne dass er besondere Aufmerksamkeit benötigt. Das System wurde einmal eingerichtet und läuft seitdem problemlos. Es aktualisiert sich automatisch, startet wöchentlich neu und erstellt regelmäßige Backups via Restic und rclone (WebDAV) auf ein NAS. Diese Konfiguration zeigt, dass selbst bescheidene Hardware für eine stabile und wartungsarme Reverse-Proxy-Lösung völlig ausreicht.

### Funktionen
- Web-Oberfläche zur Reverse-Proxy-Konfiguration
- Automatische Let’s Encrypt SSL-Zertifikate
- HTTP → HTTPS Weiterleitung
- Einfache Zugriffskontrolle
- Mehrere Domains und Hosts
- TCP/UDP Weiterleitung
- Zertifikatsverwaltung

### Installation mit Docker

**Voraussetzungen:**
- Linux-System oder VM
- Docker und Docker Compose installiert
- Ports 80, 443 und 81 frei verfügbar

**Ordner anlegen:**
```bash
mkdir -p /opt/nginx-proxy-manager/data
mkdir -p /opt/nginx-proxy-manager/letsencrypt
cd /opt/nginx-proxy-manager
```

**docker-compose.yml erstellen:**
```yaml
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: npm
    restart: always
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
```

**Starten:**
```bash
docker compose up -d
```

**Web-Oberfläche:**
```
http://<server-ip>:81
```

### Erster Login
Standard-Zugangsdaten:  
E-Mail: admin@example.com  
Passwort: changeme

Du wirst aufgefordert, eine neue E-Mail-Adresse und ein neues Passwort zu vergeben.

### Proxy Host hinzufügen
1. Web-Oberfläche öffnen
2. Zu „Proxy Hosts“ gehen
3. Neuen Host hinzufügen
4. Domain, Ziel-IP und Port eingeben
5. Bei Bedarf WebSockets aktivieren
6. Speichern

### SSL-Zertifikate
1. Proxy Host bearbeiten
2. Reiter „SSL“ auswählen
3. Let’s Encrypt Zertifikat anfordern
4. „Force SSL“ und „HTTP/2“ aktivieren

Die Zertifikate werden automatisch verlängert.

### Update durchführen
```bash
cd /opt/nginx-proxy-manager
docker compose pull
docker compose up -d
```

### Backup
Sichere folgende Ordner:
- `/opt/nginx-proxy-manager/data`
- `/opt/nginx-proxy-manager/letsencrypt`

Darin befinden sich die komplette Konfiguration und die Zertifikate.

### Häufige Probleme
- **Port-Konflikte**: Ports 80 und 443 müssen frei sein  
- **Let’s Encrypt Fehler**: DNS zeigt nicht auf den Server oder Ports sind nicht weitergeleitet  
- **Admin-Oberfläche nicht erreichbar**: Firewall blockiert oder Container läuft nicht