Lets Encrypt im Homelab
Warum Lets Encrypt im Homelab?
Wir alle kennen das Problem wenn wir zu Hause einzelne Services bereit stellen:
Wo bekomme ich ein Zertifikat, damit ich meine HTTPS-Dienste auch von allen Geräten aus problemlos erreichen kann?
Das Problem gerade bei mobilen Geräten ist, dass die selbst erstellten Zertifikate nicht ohne Probleme installiert werden können. Aber auch dafür gibt es heute eine gute Lösung.
Die eigene Domain @ Home
Was wir jetzt anstreben, ist eine eigene Domain, die wir bei Hetzner hosten, die es uns dann ermöglicht, über ein DNS-Challange-Verfahren ein Lets Encrypt Zertifikat zu erhalten.
Also ab zu Hetzner und dort auf eine neue Domain klicken. (Natürlich könnt ihr euch die Domain auch woanders klicken. Ich habe es der Einfachheit halber dort gemacht.)
Was dabei zu beachten ist:
- In der Domain beim Robot muss der DNS Server von Hetzner eingetragen sein.
- Die NS-Einträge der Domain müssen auf die DNS-Server von Hetzner zeigen.
- Sowohl die Domain als auch die *.Domain müssen auf die interne IP des NPM (NGINX Proxy Manager) verweisen.
Nachdem die Domain nun vorbereitet ist, geht es im Homelab (bei mir Proxmox) weiter.
Da ich mich nicht mehr komplett in alles einarbeiten möchte, setze ich auf OpenSource als Alternative. In diesem Fall greife ich auf den NginX Proxy Manager (NPM) zurück. Dieser unterstützt mich nun dabei alles im Homelab mit einer Subdomain und SSL auszustatten.
Aufsetzen des NPM (Nginx Proxy Manager)
Ein Bekannter hat mich schon vor einiger Zeit auf die sehr umfangreiche Sammlung von Proxmox LXC Scripts tteck aufmerksam gemacht.
Hier gibt es einige fertige Skripte, die das Erstellen von verschiedenen LXC Containern erleichtern. Praktischerweise gibt es auch ein Skript für den NPM.
Wenn wir aber nach der Installation die Hetzner API nutzen wollen, müssen wir leider noch ein Paket nachinstallieren. Also ab in die LXC und den Befehl ausführen:
pip install certbot-dns-hetzner
Danach geht es auf der Webseite des NPM weiter. IP des LXC Contrainers mit dem Port 81 und loggt euch mit dem Deaultuser ein.
Als erstes geht man dort im Menu auf “SSL Certificates” und fügt über den Button “Add SSL Certificate” ein neues Let’s Encrypt Zertifikat hinzu.
Danach seht ihr folgende Ansicht: Hier muss nun bei Domain, die in unserem Fall bei Hetzner registrierte Domain, angegeben werden und bei “DNS Provider” wählen wir direkt Hetzner aus. Unter “Credentials File Content” wird dann der API-Key von Hetzner eingetragen und unten noch die TOS von Let’s Encript akzeptiert.
Nachdem ihr nun den Speichern Button gedrückt habt, wird das Zertifikat direkt angefordert und zur Verfügung gestellt.
Es sollte nun in der Liste die Domain angezeigt werden.
Tipp:
Wer nur ein Zertifikat beantragen möchte, kann hier auch direkt eine
direkt eine *.DOMAIN beantragen. Dieses könnt ihr dann für alle
Hosts verwenden, die ihr noch hinzufügen wollt.
Also tragen wir bei "Domain Names" sowohl Domain.xx als auch *.Domain.xx ein.
Nun brauchen wir Hosteinträge
Um nun endlich unsere Services wie Proxmox oder Gittea auch im Homelab mit einem gültigen Zertifikat ausrüsten zu könne, gehen wir im NPM nun auf “Hosts” -> “Proxy Hosts”. Hier können wir nun über den Button “Add Proxy Host” einen neuen Eintrag erstellen.
Hier wird dann unter dem Punkt “Domain Name” die komplette Domain eingetragen. Nicht vergessen diese mit “Enter” zu bestätigen. Dann kann unten die IP bzw. der DNS auf die das redirect gelegt werden soll angegeben werden.
Bei dem Reiter SSL muss nun nur noch das bereits eingeholte Lets Encrypt ausgewählt werden.
Zum Abschluss nun nur noch speichern und unser bis dato nur über die IP ohne SSL-Zertifikat erreichbarer Dienst ist nun mit einem gültigen SSL-Zertifikat ausgerüstet und kann über die eigene Subdomain erreicht werden.
Viel Spaß mit dem wunderbaren Gefühl nun auch im Homelab ein valides SSL-Zertifikat benutzen zu können, ohne einen einigen Port nach außen freigeben zu müssen.
Image from Designed by upklyak / Freepik