devmaker.net
start/ homelab/ lokale-domains-mit-ssl-nginx-proxy-manager-im-heimnetz
Homelab

Lokale Domains mit SSL: Nginx Proxy Manager im Heimnetz

Wer interne Dienste wie Home Assistant, Nextcloud oder Grafana im Heimnetz betreibt, begegnet ständig roten SSL-Warnungen im Browser. Das ist nicht nur nervig, sondern auch eine schlechte Gewohnheit. Nginx Proxy Manager löst das elegant: Per DNS-Challenge stellt Let’s Encrypt echte, im Browser grüne Wildcard-Zertifikate aus – ohne dass auch nur ein Port ins Internet geöffnet werden muss. Dieser Artikel zeigt das komplette Setup mit Cloudflare als DNS-Provider, lokalem Split-Brain-DNS und der Proxy-Host-Konfiguration für Home Assistant.

Harry_im_Homelab31 (Portrait)
Harald
2026-03-29 · ~5 Min. Lesezeit
Nginx Proxy Manager SSL Header
Echte HTTPS-Zertifikate im Heimnetz per NPM & DNS-Challenge
Teil eines Guides

Dieser Artikel ist Teil des Homelab Self-Hosting Guides – dem kuratierten Lernpfad fürs eigene Homelab.

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:

yaml
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:

bash
# /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:

yaml
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!

// Weitere Empfehlungen

Anzeige · Affiliate-Link – kaufst du darüber, erhalte ich ggf. eine Provision. Für dich ändert sich am Preis nichts.

// verwandte beiträge

> echo "your thoughts" >> lokale-domains-mit-ssl-nginx-proxy-manager-im-heimnetz.responses

Schreibe einen Kommentar

Wird für die Bestätigung benötigt