/
<-BACK
DevOps & Home Lab2026-06-07

Kostenlose SSL für Home‑Lab: Reverse Proxy & Let’s Encrypt DNS‑01 mit Nginx Proxy Manager

Ein kostenloser Guide, wie du mit Nginx Proxy Manager, Docker und DNS‑01 Wildcard‑Zertifikaten deine Home‑Lab‑Apps sicher über lokale Domains erreichbar machst.

Kostenlose SSL für dein Home‑Lab: Reverse Proxy & Let's Encrypt DNS‑01

Kurzfassung – In diesem Beitrag zeige ich, wie du mit einem Reverse Proxy, DNS‑01‑Validierung und einem frei verfügbaren Domain‑Provider (z. B. Duck DNS) hübsche Domain‑Namen und echte SSL‑Zertifikate für deine lokalen Home‑Lab‑Anwendungen bekommst – vollständig offline, ohne Port‑Weiterleitungen und völlig kostenlos.


Warum ein lokaler Reverse Proxy?

  • Kein Browser‑Warning – Selbstsignierte Zertifikate sind lästig und führen zu SSL‑Warnungen.
  • Einheitliche URL‑Struktur – Statt http://192.168.0.105:8123 nutzt du homeassistant.meinedomain.duckdns.org.
  • Zentrale Zugangskontrolle – Alle Anwendungen laufen hinter einem einzigen Einstiegspunkt.
  • Kein öffentlicher Zugriff – Die Services bleiben ausschließlich im LAN erreichbar.

Key‑Words: Reverse Proxy, Home Lab, SSL, DNS‑01, lokale Netzwerk‑Sicherheit


Grundkonzept: DNS‑01 Challenge für private IPs

  1. Domain registrieren – z. B. bei Duck DNS (kostenlos) oder einem günstigen Anbieter.
  2. Domain auf die interne IP zeigen – über einen A‑Record (z. B. 192.168.0.105).
  3. Wildcard‑Zertifikat via Let’s Encrypt – mittels DNS‑01 Challenge wird ein _acme-challenge‑Eintrag im DNS angelegt. Das funktioniert völlig unabhängig davon, ob die Ziel‑IP öffentlich erreichbar ist.
  4. Reverse Proxy übernimmt das TLS‑Termination und leitet Anfragen intern weiter.

Vorteile der DNS‑01 Challenge

  • Kein Port 80/443 öffnen – keine Gefahr für den externen Zugriff.
  • Wildcard‑Support – ein Zertifikat deckt *.meinedomain.duckdns.org ab.
  • Kein Cloud‑Tunnel nötig – alles bleibt im eigenen Netzwerk.

Voraussetzungen

VoraussetzungBeschreibung
DomainDuck DNS (frei) oder günstige Domain ($0.90 bei Namecheap)
Reverse ProxyNginx Proxy Manager (empfohlen für Einsteiger) – alternativ Caddy, Traefik, SWAG
DockerDocker Engine + Docker‑Compose (für einfache Multi‑Container‑Verwaltung)
ServerDebian 11 (oder andere Linux‑Distribution) – VM oder physisch
InternetZum Abruf des Zertifikats (nur beim Erstellen/Verlängern)

Schritt‑für‑Schritt‑Anleitung

1. Docker installieren

# Installiere notwendige Pakete
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release

# Docker‑GPG‑Key hinzufügen
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Docker‑Repository einrichten (AMD64 – bei ARM anpassen)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Paketindex aktualisieren & Docker installieren
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io

# (Optional) Aktuellen Nutzer zur Docker‑Gruppe hinzufügen
sudo usermod -aG docker $USER && newgrp docker

# Testlauf
docker run --rm hello-world

Hinweis: Auf Raspberry Pi/ARM‑Boards arch=arm64 verwenden.

2. Docker‑Compose Datei für Nginx Proxy Manager & Beispiel‑Apps

version: "3"
services:
  nginx-proxy-manager:
    image: jc21/nginx-proxy-manager:latest
    restart: unless-stopped
    ports:
      - "81:81"   # Web‑UI
      - "80:80"   # HTTP (intern)
      - "443:443" # HTTPS (intern)
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - proxy

  nextcloud:
    image: lscr.io/linuxserver/nextcloud:latest
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
    volumes:
      - ./nextcloud:/config
    networks:
      - proxy

  jellyfin:
    image: jellyfin/jellyfin:latest
    restart: unless-stopped
    ports:
      - "8096:8096"
    volumes:
      - ./jellyfin:/config
    networks:
      - proxy

  homeassistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    restart: unless-stopped
    network_mode: host  # wichtig für lokale MQTT/Discovery
    volumes:
      - ./homeassistant:/config

networks:
  proxy:
    driver: bridge

Tipp: Alle Container liegen im selben Docker‑Netzwerk proxy, sodass du im Nginx Proxy Manager einfach mit dem Containernamen als Host referenzieren kannst.

3. Duck DNS Domain anlegen & Token sichern

  1. Auf https://www.duckdns.org einloggen oder registrieren.
  2. Eine Subdomain anlegen, z. B. notthebee.duckdns.org.
  3. Unter AccountToken den API‑Token kopieren – du benötigst ihn später im Nginx Proxy Manager.

4. Nginx Proxy Manager – SSL via DNS‑01 einrichten

  1. Browser öffnen → http://<SERVER_IP>:81 → erstes Login (admin@example.com / changeme).
  2. Credentials → Nutzername & Passwort ändern.
  3. SSL CertificatesAdd SSL Certificate
    • Domain Names: notthebee.duckdns.org, *.notthebee.duckdns.org
    • Force SSL aktivieren
    • Challenge Type: DNS‑01
    • DNS Provider: Duck DNS
    • API Token: Deinen Duck‑DNS‑Token einfügen
    • Propagation timeout: 120 s (bei langsamer DNS‑Propagation erhöhen)
    • Terms of Service akzeptieren → Save
  4. Nach erfolgreicher Validierung erscheint ein Zertifikat‑Eintrag.

5. Proxy‑Host für jede Anwendung anlegen

Beispiel: Nextcloud

  • Domain: nextcloud.notthebee.duckdns.org
  • Scheme: HTTPS (da Nextcloud intern bereits TLS nutzt) – Port 443
  • Forward Hostname: nextcloud (Container‑Name aus Docker‑Compose)
  • Forward Port: 443
  • SSL: das zuvor erstellte Wildcard‑Zertifikat auswählen → Force SSL + HTTP/2 aktivieren.
  • Websocket Support aktivieren, falls Anwendung (z. B. Home Assistant) dies erfordert.

Wiederhole den Vorgang für Jellyfin (jellyfin.notthebee.duckdns.org), Home Assistant (home.notthebee.duckdns.org) etc.

6. Optional: Lokale DNS‑Auflösung ohne Internet

  • Pi‑hole / AdGuard: Trage die erstellten Subdomains (z. B. home.notthebee.duckdns.org) in die lokale DNS‑Whitelist ein. So bleiben die Services erreichbar, selbst wenn die Internetverbindung ausfällt.
  • Hosts‑Datei: Für reine Testumgebungen kannst du ~/.ssh/config oder /etc/hosts anpassen – jedoch nicht skalierbar.

Fazit

Mit einem Reverse Proxy, Docker und der Let’s Encrypt DNS‑01‑Challenge kannst du in wenigen Schritten folgende Ziele erreichen:

  • Schöne, lesbare URLs für jede Home‑Lab‑App.
  • Echte, vertrauenswürdige SSL‑Zertifikate (Wildcard) – komplett kostenlos.
  • Kein Port‑Forwarding nach außen; alle Services bleiben im lokalen Netzwerk.
  • Zentrale Verwaltung über das Nginx Proxy Manager UI.

Damit wird dein Home‑Lab nicht nur sicherer, sondern wirkt auch professionell – fast wie ein kleines Mikro‑Data‑Center.


Weiterführende Ressourcen