Nginx Proxy Manager mit Docker auf Synology DSM installieren

Nginx Proxy Manager (NPM) ist eine leistungsstarke Reverse-Proxy-Lösung mit einer benutzerfreundlichen Web-Oberfläche, die es ermöglicht, mehrere Webdienste über eine einzige IP-Adresse zu verwalten und automatisch SSL-Zertifikate zu erstellen.

Voraussetzungen

Hardware und Software:

  • Synology NAS mit DSM 7.0 oder höher
  • Container Manager (bei älteren DSM-Versionen: Docker-Paket)
  • Mindestens 2 GB RAM
  • SSH-Zugang aktiviert (optional für erweiterte Konfiguration)

Netzwerk-Anforderungen:

  • Freie IP-Adresse im lokalen Netzwerk
  • Router mit Port-Forwarding-Möglichkeit
  • Domain oder DDNS-Service (für externe Zugriffe)

Wichtiger Hinweis zu Port-Konflikten

Synology DSM nutzt standardmäßig die Ports 80 und 443 für den Web-Service. Für Nginx Proxy Manager gibt es drei Lösungsansätze:

Option 1: Alternative Ports verwenden (empfohlen für Einsteiger)
Option 2: Macvlan-Netzwerk einrichten (isolierte IP-Adresse)
Option 3: DSM-Ports freigeben (fortgeschrittene Benutzer)

Installation mit alternativen Ports

Container Manager installieren

  1. Paket-Zentrum öffnen
  2. Container Manager suchen und installieren
  3. Bei DSM < 7.2: Docker verwenden

Ordnerstruktur erstellen

  1. File Station öffnen
  2. Zum Ordner docker navigieren
  3. Neuen Ordner nginx-proxy-manager erstellen
  4. Unterordner erstellen:
    • data
    • letsencrypt

Container-Installation

  1. Container Manager öffnen
  2. Registry → Nach jc21/nginx-proxy-manager suchen
  3. Herunterladen und latest Tag wählen
  4. Image → Doppelklick auf jc21/nginx-proxy-manager

Container-Konfiguration:

Container-Name: nginx-proxy-manager
Port-Einstellungen:
  - 8080:80 (HTTP)
  - 8081:81 (Admin-Interface)
  - 8443:443 (HTTPS)

Volume-Mappings:
  - /volume1/docker/nginx-proxy-manager/data:/data
  - /volume1/docker/nginx-proxy-manager/letsencrypt:/etc/letsencrypt

Umgebungsvariablen:
  - TZ=Europe/Berlin

Installation mit Docker Compose

Docker Compose Datei erstellen

  1. Container ManagerProjektErstellen
  2. Projektname: nginx-proxy-manager
  3. Quelle: Docker Compose erstellen
version: "3"
services:
  app:
    image: "jc21/nginx-proxy-manager:latest"
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - "8080:80" # HTTP Port
      - "8081:81" # Admin Web Port
      - "8443:443" # HTTPS Port
    environment:
      # SQLite Database (Standard)
      DB_SQLITE_FILE: "/data/database.sqlite"
      # IPv6 deaktivieren falls nicht unterstützt
      DISABLE_IPV6: "true"
      # Zeitzone
      TZ: "Europe/Berlin"
    volumes:
      - /volume1/docker/nginx-proxy-manager/data:/data
      - /volume1/docker/nginx-proxy-manager/letsencrypt:/etc/letsencrypt

Container starten

  1. Erstellen klicken
  2. Warten bis Container läuft
  3. Status in Container überprüfen

Installation mit separater MariaDB

Für bessere Performance und Skalierbarkeit:

version: "3"
services:
  db:
    image: "jc21/mariadb-aria:latest"
    container_name: npm-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: "npm_root_password"
      MYSQL_DATABASE: "npm"
      MYSQL_USER: "npm_user"
      MYSQL_PASSWORD: "npm_password"
      MARIADB_AUTO_UPGRADE: "1"
    volumes:
      - /volume1/docker/nginx-proxy-manager/mysql:/var/lib/mysql

  app:
    image: "jc21/nginx-proxy-manager:latest"
    container_name: nginx-proxy-manager
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "8080:80"
      - "8081:81"
      - "8443:443"
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm_user"
      DB_MYSQL_PASSWORD: "npm_password"
      DB_MYSQL_NAME: "npm"
      DISABLE_IPV6: "true"
      TZ: "Europe/Berlin"
    volumes:
      - /volume1/docker/nginx-proxy-manager/data:/data
      - /volume1/docker/nginx-proxy-manager/letsencrypt:/etc/letsencrypt

Erweiterte Installation mit Macvlan

SSH-Verbindung herstellen

  1. SystemsteuerungTerminal & SNMPSSH aktivieren
  2. Mit SSH-Client verbinden: ssh admin@NAS-IP

Macvlan-Netzwerk erstellen

docker network create \
  --driver macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  --ip-range=192.168.1.200/32 \
  -o parent=eth0 \
  npm_macvlan

Parameter anpassen:

  • subnet: Ihr Netzwerk-Bereich
  • gateway: Router-IP
  • ip-range: Freie IP für NPM

Docker Compose mit Macvlan

version: "3"
services:
  app:
    image: "jc21/nginx-proxy-manager:latest"
    container_name: nginx-proxy-manager
    restart: unless-stopped
    networks:
      npm_macvlan:
        ipv4_address: 192.168.1.200
    environment:
      DB_SQLITE_FILE: "/data/database.sqlite"
      DISABLE_IPV6: "true"
      TZ: "Europe/Berlin"
    volumes:
      - /volume1/docker/nginx-proxy-manager/data:/data
      - /volume1/docker/nginx-proxy-manager/letsencrypt:/etc/letsencrypt

networks:
  npm_macvlan:
    external: true

DSM-Ports freigeben (Fortgeschritten)

⚠️ Warnung: Nur für erfahrene Benutzer!

Geplante Aufgabe erstellen

  1. SystemsteuerungAufgabenplanerErstellenBenutzerdefiniertes Script
  2. Allgemein:
    • Aufgabenname: "NPM Ports freigeben"
    • Benutzer: root
  3. Zeitplan: Beim Booten
  4. Aufgabeneinstellungen:
#!/bin/bash
sed -i -e 's/\b80\b/8080/' -e 's/\b443\b/8443/' \
  /usr/syno/share/nginx/server.mustache \
  /usr/syno/share/nginx/DSM.mustache \
  /usr/syno/share/nginx/WWWService.mustache
synosystemctl restart nginx

Docker Compose für freigegebene Ports

version: "3"
services:
  app:
    image: "jc21/nginx-proxy-manager:latest"
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - "80:80" # Standard HTTP
      - "82:81" # Admin (Port 81 wird von DSM verwendet)
      - "443:443" # Standard HTTPS
    volumes:
      - /volume1/docker/nginx-proxy-manager/data:/data
      - /volume1/docker/nginx-proxy-manager/letsencrypt:/etc/letsencrypt

Erste Konfiguration

Zugriff auf Admin-Interface

  1. Browser öffnen: http://NAS-IP:8081
  2. Standard-Anmeldedaten:
    • E-Mail: admin@example.com
    • Passwort: changeme

Sicherheitseinstellungen

  1. Passwort sofort ändern
  2. Neue Admin-E-Mail hinterlegen
  3. 2FA aktivieren (empfohlen)

Erster Proxy Host

  1. Proxy HostsAdd Proxy Host
  2. Details:
    • Domain Namen: service.example.com
    • Schema: http
    • Forward Hostname/IP: 192.168.1.100
    • Forward Port: 3000
  3. SSL:
    • SSL-Zertifikat anfordern
    • Let's Encrypt verwenden
    • E-Mail für Benachrichtigungen

Firewall-Konfiguration

Synology Firewall

  1. SystemsteuerungSicherheitFirewall
  2. Regeln bearbeitenErstellen
  3. Ports freigeben:
    • 8080 (HTTP)
    • 8081 (Admin)
    • 8443 (HTTPS)

Router-Konfiguration

Port-Forwarding einrichten:

  • Port 80 → NAS-IP:8080
  • Port 443 → NAS-IP:8443

Fehlerbehebung

Container startet nicht

Logs überprüfen:

  1. Container Manager → Container → nginx-proxy-manager
  2. Details → Protokoll

Häufige Probleme:

  • Port bereits in Verwendung
  • Volume-Pfad falsch
  • Berechtigungsprobleme

SSL-Zertifikate fehlgeschlagen

Voraussetzungen prüfen:

  • Domain erreichbar von außen
  • Port 80 korrekt weitergeleitet
  • DNS-Auflösung funktioniert

Let's Encrypt Limits:

  • Maximal 5 Fehlversuche pro Stunde
  • Maximal 50 Zertifikate pro Domain pro Woche

Admin-Interface nicht erreichbar

Mögliche Ursachen:

  • Container nicht gestartet
  • Port-Mapping falsch
  • Firewall blockiert Zugriff

Lösung:

# Container-Status prüfen
docker ps | grep nginx-proxy-manager

# Logs anzeigen
docker logs nginx-proxy-manager

Performance-Optimierung

Cache-Konfiguration

# Custom Nginx Config: /data/nginx/custom/http.conf
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m
max_size=1g inactive=60m use_temp_path=off;

proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;

Gzip-Komprimierung

# Custom Config für bessere Performance
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript
application/json application/javascript application/xml+rss;

Backup und Updates

Backup erstellen

Wichtige Ordner sichern:

  • /volume1/docker/nginx-proxy-manager/data
  • /volume1/docker/nginx-proxy-manager/letsencrypt

Backup-Script:

#!/bin/bash
tar -czf /volume1/backups/npm-backup-$(date +%Y%m%d).tar.gz \
  /volume1/docker/nginx-proxy-manager/

Container aktualisieren

  1. Neues Image herunterladen:

    • Container Manager → Registry → nginx-proxy-manager
    • Download → latest
  2. Container stoppen und neu erstellen:

    • Container → Stoppen
    • Aktion → Löschen (Konfiguration bleibt)
    • Image → Doppelklick → Container neu erstellen

Best Practices

Sicherheit

  • Starke Passwörter für Admin-Account
  • 2FA aktivieren für zusätzliche Sicherheit
  • Regelmäßige Updates durchführen
  • Access Control Lists verwenden
  • Fail2Ban für Brute-Force-Schutz

Monitoring

  • Logs regelmäßig prüfen
  • SSL-Zertifikat-Ablauf überwachen
  • Performance-Metriken verfolgen
  • Backup-Strategien implementieren

Organisation

  • Konsistente Namenskonventionen
  • Dokumentation der Proxy-Hosts
  • Staging-Umgebung für Tests
  • Versionierung der Konfiguration

Anwendungsbeispiele

Home Assistant

Domain: homeassistant.example.com
Forward to: 192.168.1.150:8123
SSL: Let's Encrypt
WebSocket Support: Aktiviert

Nextcloud

Domain: cloud.example.com
Forward to: 192.168.1.100:80
SSL: Let's Encrypt
Additional Headers:
  - X-Forwarded-Proto: $scheme
  - X-Real-IP: $remote_addr

Docker-Services

Domain: portainer.example.com
Forward to: 192.168.1.50:9000
SSL: Let's Encrypt
Access List: Admin-Only

Fazit

Nginx Proxy Manager bietet eine elegante Lösung für die Verwaltung mehrerer Webdienste auf Synology NAS. Die Docker-Installation ermöglicht eine saubere Trennung vom Host-System und vereinfacht Updates. Mit den verschiedenen Installationsmethoden lässt sich NPM flexibel an unterschiedliche Netzwerk-Anforderungen anpassen.

Vorteile von NPM:

  • Benutzerfreundliche Web-Oberfläche
  • Automatische SSL-Zertifikate
  • Erweiterte Nginx-Funktionen
  • Active Directory Integration
  • Umfassendes Logging

Die Kombination aus Synology DSM und Nginx Proxy Manager schafft eine professionelle Infrastruktur für Heimserver und kleine Unternehmen.