uptime · 1407 days · 23 posts published · last deploy 4 days, 21 hours ago build:passing rss
~ / homelab / lokale-domains-mit-ssl-nginx-proxy-manager-im-heimnetz.md
Homelab · 29. März 2026 · ~6min · 2effdfe

Lokale Domains mit SSL: Nginx Proxy Manager im Heimnetz

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

>
devmaker.net
author · 2effdfe · 2026-03-29
x
Nginx Proxy Manager SSL Header.jpg 1408×768
Nginx Proxy Manager SSL Header
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.

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!

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

Schreibe einen Kommentar

Wird für die Bestätigung benötigt