Ich schreibe es mal grob auf:
Disclaimer! Es ist Homelab-Gefrickel, es sollte erst einmal funktionieren, dass ich startt http://IP:Port wirklich nur host.domain.tld eingeben muss. Was vor allem für die restlichen Mitglieder des Haushalt galt.
Ich wollte lernen. Betrachtet es als unsicher. Ich weise jegliche Verantwortung für Schäden von mir.
Mein Docker-Host ist eine Ubuntu-VM auf einem Proxmox-Server.
Anfangs habe ich Docker-Compose genutzt, inzwischen jedoch Portainer, um Container in Betrieb zu nehmen.
Ich setze einfach mal voraus, dass ihr das bereits erledigt geschafft habt,
Ich nutzen den offiziellen nginx proxy manager (NPM) Container von
https://nginxproxymanager.com/setup/ (ich habe die Ports nicht verändert).
Schließt die Ersteinrichtung für NPM ab, sodass ihr euch mit eurem Administrator-Account unter
http://ip-des-docker-hosts:81 einloggen könnt. Hier stoppen wir jedoch erst einmal.
NPM nutzt intern certbot und ich dessen verfügbare Registrar-plugins für eine DNS-Challenge, um darüber meinen lokalen domains/hosts ein kostenloses Let's Encrypt SSL-Zertifikat unterzujubeln und diese automatisch zu erneuern. Das Ganze geht dabei über eine sehr komfortable GUI.
Mein Hosting-Anbieter ist eigentlich auch All-Inkl, leider unterstützt All-inkl certbot nur begrenzt, erst recht wenn man ein Wildcard-Zertifikat haben will. Und das wollte ich.
Da ich auf die kostenlosen Geschichten wie Cloudflare/DuckDNS (findet ihr meist bei allen möglichen YT-Tutorials) nicht wirklich Lust hatte, habe ich in den sauren Apfel gebissen und mir eine weitere Domain geholt, bei einem Anbieter aus der Liste von NPM.
Wenn ihr eine Domain bei einem Anbieter habt, gilt es folgendes Problem zu lösen:
Wie kommt eine DNS-Anfrage zu einer echten öffentlichen Domain zurück ins Heimnetz?
Dafür muss domain.tld in dem Fall nicht auf einen Webspace oder Fremdserver zeigen, sondern auf die externe IP eures Internetanschluss.
Da man es häufig doch mit dynamischen IPs vom Provider zu tun hat, muss also die IP bei eihrem Domain-Anbieter aktualisiert werden, am besten automatisch. Stichwort DynDNS/FlexDNS
1. Euer Domain-Anbieter muss dafür eine Schnittstelle bieten
2. Ihr braucht eine Software die über die Domain-Anbieter-Schnittstelle das erledigt
Eine Fritzbox kann dies für euch erledigen. PFSense/OpenSense, DD-WRT oder OpenWRT auch. Ansonsten gibt es auch schmale Linux- oder Windows-Anwendungen. Es sollte halt nur 24/7 laufen, damit der IP-Eintrag bei eurem Domain-Anbieter immer auf eure gültige externe IP zeigt.
Bei mir ist es A) Cable-Internet von Pyur und ich bekomme noch eine IPv4-Adresse. do.de lässt zu dass sich per FlexDNS die IP für das Domain-Ziel aktuell halten kann und ich nutze eine Fritzbox 6591.
Mit DynDNS ist der Fernzugriff ganz leicht - Hier findest Du alle Infos rund um unseren kostenlosen FlexDNS-Dienst
www.do.de
Aktuell wird jedoch noch keine Anfrage nach subdomain.domain.tld durchkommen.
Ihr müsst noch erlauben, dass der Docker-Host mit dem NPM-Container von außen erreichbar ist, damit der NPM dann die subdomain.domain.tld zu der internen IP des Zielhosts weiterleiten kann.
Nun loggen wir uns in der NPM Weboberfläche ein und beantragen ein Wildcard-SSL-Zertifikat, gefiel mir besser als für jeden Host ein eigenes Zertfikat beantragen zu lassen.
Heißt in dem Zertifikart sind folgende domains eingetragen in meinem Fall *.domain.tld + *.subdomain.domain.tld + domain.tld
Wen NPM das Zertfikat erfolgreich für euch geholt hat. Geht es zu dem Punkt Hosts, und dort wird ein Proxy-Host über die GUI angelegt.
Unter SSL wählt ihr dann einfach nur das zuvor erstellt SSL-Zertifikat aus.
In meinem Beispiel ist das jetzt ein Proxmox-LXC auf einer anderen Maschine, in dem Audiobookshelf läuft.
Sämtliche Browser-Aufrufe von audibookshelf.subdomain.domain.tld werden nun korrekt aufgelöst und per https abgesichert.
(Da ich aber nicht mehr die Fritzbox als DHCP und DNS einsetze, war dann noch etwas mehr Einstellungen in Pi-hole notwendig, sollte aber hier nicht mehr relevant sein)
Aber das natürlich immer noch ein langer Name ist und sich mit der Zeit doch so einiges an Diensten oder Zielen ansammelt, habe ich dann noch Heimdall als Docker-Container 24/7 laufen, um allen Mitglieder des Haushalts eine einfache Startseite zu bieten:
The Heimdall Application Dashboard makes managing your websites and applications much easier.
heimdall.site