Hallo zusammen,

ich habe mich in den letzten Tage mal damit beschäftigt meine Visu und Smarthome-NG auf der neusten Version aufzusetzen und das ganze dann direkt in Docker zu verschieben.

Dank der super Vorlange von Henfri war das alles auch ziemlich schnell erledigt. Danke dafür henfri
​​​

Bisher hatte ich immer über VPN auf auf die VISU zugegriffen, aber so wirklich bequem war das nie. Da bin ich über den Beitrag: https://www.smarthomeng.de/nginx-als-reverseproxy gestolpert.
Jetzt fand ich Basic-Auth oder Client-Zertifikate nicht so besonders charmant. Ersteres ist irgendwie "uncool" und nicht unbedingt mit einem Passwort-Manager kompatibel, und Client-Zertifikate fand ich zu kompliziert bzw. zu aufwändig das auf jedem Gerät einzurichten.


Da ich seit geraumer Zeit meine eigene Domäne besitze hatte ich irgendwann mal Cloudflare als Dienst aufgeschaltet. Hier einfach in der kostenlosen Version als DNS / CDN. Dafür muss man erst einmal nur bei seinem Betreiber (bei mir Strato) die Standard Name-Server gegen die von Cloudflare austauschen und schon ist das Ding in Betriebt.
Soweit so gut. Die kostenlose Version bietet aber auch schon z.B. ein kostenloses Zertifikat, eine Handvoll Firewall Regeln, etc.

Da ich von meinem ISP eine "quasi" statische IPv6 Adresse bekomme und für die Visu ja schon einen sprechenden Namen haben wolle hab ich mich mal wieder bei Cloudflare eingeloggt und eine neue Sub-Domain mit AAAA Record angelegt.
Außerdem wollte ich natürlich meine Visu nur per HTTPS erreichen. Hier ist "Let's Encrypt" natürlich perfekt, noch besser: mit einem Cloudflare-Account kann man die ACMEv2 Challenge durchführen und sich auch ein Wildcard-Zertifikat erstellen lassen. (dafür gibts dann certbot-dns-cloudflare => https://certbot-dns-cloudflare.readt....io/en/stable/). Außerdem muss kein Webserver auf Port 80 auf der Domäne erreichbar sein.

Damit habe ich dann erst mal angefangen:

- Subdomain mit Ziel meinen lokalen Server eingerichtet
- Let's Encrypt ein Wildcard Zertifikat erstellt und SSL in Cloudflare auf "full (strict)" gestellt. (Damit ist nicht nur der Weg bis zum Cloudlfare-Server per SSL abgesichert, auch eigentliche Web-Server muss mit einem vertrauenswürdigem Zertifikat ausgestattet sein)
- lokal einen weiteren Docker-Container mit Nginx und der SSL Config (aus dem Blog-Post open aufgesetzt)
- in der Firewall meines Routers Port 80 bzw. 443 zu meinem Webserver freigegeben


Getestet -> Läuft! Leider ohne Absicherung, also erst mal wieder den NGINX gestoppt.


Dann bin ich beim stöbern auf den Punkt "Access" im Cloudflare gestoßen. Laut Beschreibung ermöglich das einen SSO über ettiche bekannte Dienste (Google, Facebook, Github, etc...) ohne Anpassung der Application. Das klang interessant! Bis zu 5 User sind auch noch kostenlos möglich, perfekt!

Also hab ich das ganze einfach mal aktiviert, schnell eine Access Policy angelegt mit "allow all" für meine eMail-Adresse, dann noch Google Oauth nach der im Cloudflare vorhanden Anleitung konfiguriert und den ersten Aufruf gestartet.

Was soll ich sagen, funktioniert einwandfrei. Wenn man nun meine VISU aufruft wird man automatisch von Cloudflare zu Google Login weitergeleitet, und nach erfolgreichem Login gehts dann ganz normal los. (Lediglich den "Hack" der io_smarthome.js musste ich noch integrieren)
Anschließend noch mal mit einem zweiten Konto getestet, -> Access Denied. Was will man(n) mehr.

Als Feintuning habe ich dann noch das "Client" Zertifikat von Cloutdflare in der NGINX Config "ssl_client_certificate" hinterlegt, so sind direkte Aufrufe auf meine IPv6 Adresse des Servers nicht mer möglich.
Zusätzlich habe ich nur die Cloudflare IPs in der Firewall freigegeben.

=> Damit denke ich sollte die Absicherung ausreichend gegeben sein und nur noch Aufrufe über Cloudflare zu einem Ergebnis führen.


Klingt wahrscheinlich beim Lesen irgendwie konfus, aber vielleicht ist das auch für den ein oder anderen interessant.
Wer keine statische IP Adresse hat, kann natürlich einen DynDNS Dienst verwenden und statt eines A / AAAA Eintrags auch einen CNAME Eintrag verwenden.
(Eine eigene Domain bei der man den NameServer anpassen kann setzt das ganze allerdings voraus, kostet bei Strato glaub ich ca 10 Euro im Jahr)


Ein paar Screenshots aus Cloudflare hab ich mal gemacht, die NGINX Konfiguration kann aus dem Blog-Post übernommen werden - bei Bedarf kann ich die aber auch noch mal anhängen.


Falls Fragen bestehen, einfach mal melden - ich werde versuchen es so gut es geht zu beantworten.



Grüße,


dns.PNG crypto.PNG access.PNG
Angehängte Dateien