Lokale Domains mit SSL: Nginx Proxy Manager im Heimnetz

29. März 2026

Schluss mit roten Browser-Warnungen für interne Dienste.

Nginx Proxy Manager SSL Header
Jeder Homelab-Betreiber kennt das Problem: Man ruft einen selbst gehosteten Dienst über die IP-Adresse und einen Port im Browser auf und wird sofort von einer roten SSL-Warnung ("Diese Verbindung ist nicht sicher") begrüßt. Das Ignorieren dieser Warnungen ist nicht nur nervig, sondern auf Dauer auch eine schlechte Angewohnheit. In diesem Artikel zeige ich dir, wie du mit dem Nginx Proxy Manager (NPM) und der Let's Encrypt DNS-Challenge echte, im Browser grüne SSL-Zertifikate für deine lokalen Dienste erstellst – komplett ohne Ports ins Internet freigeben zu müssen!

Warum die DNS-Challenge?

Normalerweise überprüft Let's Encrypt deine Domain-Inhaberschaft, indem es versucht, deine Website über Port 80 aus dem Internet zu erreichen (HTTP-Challenge). Für rein interne Dienste wollen wir aber natürlich keine Ports in unserer Router-Firewall öffnen!

Die Lösung heißt DNS-Challenge. Hierbei kommuniziert der Nginx Proxy Manager über eine API mit deinem Domain-Anbieter (z. B. Cloudflare) und hinterlegt dort temporär einen TXT-Eintrag. Let's Encrypt prüft diesen Eintrag und stellt das Zertifikat aus. Die lokalen Dienste bleiben dabei sicher hinter der Firewall verborgen.

1. Voraussetzungen

  • Ein laufendes Docker-Setup (z. B. auf einem Raspberry Pi oder Intel NUC).
  • Eine eigene Domain (z.B. meinedomain.de), deren Nameserver bei einem unterstützten Anbieter wie Cloudflare liegen.
  • Einen Router (z. B. OpenWrt, GL.iNet, FritzBox) oder lokalen DNS-Server, bei dem sich Host-Einträge anpassen lassen.

2. Nginx Proxy Manager installieren

Wir starten den NPM ganz einfach über docker-compose. Erstelle eine Datei docker-compose.yml mit folgendem Inhalt und starte sie mit docker-compose up -d:

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

3. Lokalen DNS-Eintrag setzen (Split-Brain DNS)

Damit Anfragen an nextcloud.meinedomain.de nicht ins Leere laufen oder zum echten Webserver routen, musst du deinem lokalen Router/DNS beibringen, wohin die Reise geht. Alle Zugriffe von intern müssen auf die IP deines Nginx Proxy Managers umgeleitet werden.

Beispiel OpenWrt (z. B. GL.iNet Router):
Logge dich per SSH (oder über Luci -> Network -> Hostnames) auf deinem Router ein. Füge in der Datei /etc/hosts einfach deine Dienste und die lokale NPM-IP hinzu:

# /etc/hosts
192.168.8.50    nextcloud.meinedomain.de
192.168.8.50    homeassistant.meinedomain.de

Starte danach den dnsmasq-Dienst kurz neu (/etc/init.d/dnsmasq restart). Jetzt leitet der Router Anfragen deiner Laptops und Handys an den internen NPM weiter.

4. Wildcard-Zertifikat anfordern

Logge dich unter http://:81 in die Admin-Oberfläche ein. Gehe auf SSL Certificates -> Add SSL Certificate -> Let's Encrypt.

  1. Trage bei Domain Names *.meinedomain.de und meinedomain.de ein.
  2. Aktiviere Use a DNS Challenge.
  3. Wähle deinen DNS Provider (z.B. Cloudflare) aus.
  4. Trage deinen API-Token in das Konfigurationsfeld ein.
  5. Stimme den ToS zu und klicke auf Save.

NPM besorgt sich nun automatisch das Zertifikat. Das dauert ca. 30-60 Sekunden.

5. Proxy Host anlegen

Jetzt musst du nur noch deine Dienste verknüpfen! Gehe auf Hosts -> Proxy Hosts -> Add Proxy Host.

Details-Tab:
Domain Names: nextcloud.meinedomain.de
Scheme: http oder https
Forward Hostname / IP: Die lokale IP deines tatsächlichen Dienstes (z.B. 192.168.8.60)
Forward Port: Der Port deines Dienstes (z.B. 8080)

SSL-Tab:
Wähle dein frisch erstelltes Zertifikat aus dem Dropdown-Menü. Aktiviere "Force SSL" und "Websockets Support" (letzteres ist besonders für Home Assistant wichtig!). Klicke auf Save.

Fertig! Wenn du nun in deinem Browser https://nextcloud.meinedomain.de aufrufst, erscheint das ersehnte grüne Schloss-Symbol.

Sonderfall Home Assistant (400: Bad Request)

Achtung: Home Assistant Proxy-Sperre umgehen

Wenn du versuchst, Home Assistant über den Nginx Proxy Manager aufzurufen, wirst du sehr wahrscheinlich von einem 400: Bad Request Fehler begrüßt. Home Assistant blockiert sicherheitshalber alle Anfragen von Reverse-Proxys, die es nicht explizit kennt.

Um das zu beheben, musst du die IP-Adresse deines Nginx Proxy Managers in der configuration.yaml von Home Assistant als "Trusted Proxy" eintragen:

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 192.168.8.50  # <-- IP of your NPM server

Speichere die Datei und starte Home Assistant komplett neu. Danach ist der Fehler verschwunden und deine Smart-Home-Zentrale ist über deine grüne HTTPS-Domain erreichbar!

Teilen:


Schreibe einen Kommentar

Wird für die Bestätigung benötigt