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:8123nutzt duhomeassistant.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
- Domain registrieren – z. B. bei Duck DNS (kostenlos) oder einem günstigen Anbieter.
- Domain auf die interne IP zeigen – über einen A‑Record (z. B.
192.168.0.105). - 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. - 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.orgab. - Kein Cloud‑Tunnel nötig – alles bleibt im eigenen Netzwerk.
Voraussetzungen
| Voraussetzung | Beschreibung |
|---|---|
| Domain | Duck DNS (frei) oder günstige Domain ($0.90 bei Namecheap) |
| Reverse Proxy | Nginx Proxy Manager (empfohlen für Einsteiger) – alternativ Caddy, Traefik, SWAG |
| Docker | Docker Engine + Docker‑Compose (für einfache Multi‑Container‑Verwaltung) |
| Server | Debian 11 (oder andere Linux‑Distribution) – VM oder physisch |
| Internet | Zum 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=arm64verwenden.
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
- Auf https://www.duckdns.org einloggen oder registrieren.
- Eine Subdomain anlegen, z. B.
notthebee.duckdns.org. - Unter Account → Token den API‑Token kopieren – du benötigst ihn später im Nginx Proxy Manager.
4. Nginx Proxy Manager – SSL via DNS‑01 einrichten
- Browser öffnen →
http://<SERVER_IP>:81→ erstes Login (admin@example.com/changeme). - Credentials → Nutzername & Passwort ändern.
- SSL Certificates → Add 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
- Domain Names:
- 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/configoder/etc/hostsanpassen – 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
- Let’s Encrypt DNS‑01 Documentation – https://letsencrypt.org/docs/challenge-types/#dns-01
- Nginx Proxy Manager GitHub – https://github.com/NginxProxyManager/nginx-proxy-manager
- Duck DNS API Docs – https://www.duckdns.org/spec.jsp
- Docker Compose Reference – https://docs.docker.com/compose/compose-file/