Installation auf Raspi4 mit HA-OS und SSL-Zugang - jetzt nur noch von "außen"?

member1

Member
Hallo,

ich habe vor einigen Jahren HA auf einem RaspberryPi 4 installiert und mich soweit ich das noch weis an die Standard-Installationsanleitung gehalten. Anfangs war die Instanz nur lokal erreichbar, also mit dem Default homeassistant.local:8123. Um auch per Remote darauf zugreifen zu können habe ich dann ein SSL Zertifikat mit Let's Encrypt erstellt und auf HA geladen und auf meiner Fritzbox einen Port-Forward von 443 auf die IP und Port 8123 der HA-Instanz eingebaut. Damit die Namensauflösung bei meinem dyn-IP-v4 Telekom-Zugang passt, verwende ich eine DuckDNS-Aktualisierung der Fritzbox. Somit weiß "das Internet" unter meiner SSL-Domain (1und1) immer welche IP die Box gerade hat.

Nun wollte ich eine andere Integration durchführen welche darauf setzt das die HA-API über ws://<IP>:8123/api/shelly/ws erreichbar ist. Leider ist sie das nicht (mehr). Ich kann überhaupt nicht mehr lokal auf die Box zugreifen, nur noch übers Internet. Müsste das nicht eigentlich immer noch möglich sein?
Leider finde ich dazu nichts, habe schon SSH auf dem HA-OS aktiviert und komme auch drauf, aber finde die Ursache nicht. Ein Zugriffsversuch auf die IP der RPI-Box auf 8123 scheitert weil es eine leere Antwort gibt.
 
Was ist denn eine "leere" Antwort? Wie hast Du das denn konkret eingerichtet - SSL-Zertifikat "direkt" via HA integriert, oder ggf. via Reverse-Proxy-Addon? Vielleicht wäre letzteres noch das Mittel der Wahl, somit sollte die eigentliche HA-Instanz erstmal unangetastet bleiben (http/8123), während der Reverse-Proxy sich um SSL kümmert (https über Port 443 bereitstellen, Zertifikate erstellen/erneuern) und intern dann mit der HA-Instanz spricht.
 
Du hast gesagt, das dein HA nur noch via HTTPS erreichbar ist. Also auch Lokal mittels https://ha-ip:8123
Andere Zugriffsarten sind nach meinem dafürhalten dann auch nicht mehr möglich.
Stimmt, mit https://192.168.178.67:8123 bekomme ich zwar logischerweise eine Zertifikatswarnung im Browser aber einen Connect. Mache ich das mit http://192.168.178.67:8123 bekomme ich eine "leere Antwort":
1724007292344.png

Das ganze mittels Postman gibt einen "Error: socket hang up", also hat HA die Verbindung zwar erstmal angenommen (kein DROP) aber dann abgelehnt und zwar auf IP-Ebene, sodass es im HTTP-Protokoll keinen gescheiten Fehler gibt?

Konfiguriert habe ich das, soweit ich mich noch erinnere direkt in HA.
1724007708222.png
an Addons habe ich nur diese hier
1724007758018.png
 
Zuletzt bearbeitet:
Wenn Du auf Port 8123 https laufen hast, dann kannst Du nicht zeitgleich den gleichen Port 8123 mit http ansprechen.

Versuch doch mal anstatt ws://192.168.... mit wss://192.168.... also einem Web-Socket Aufruf per SSL.
 
Wäre vermutlich günstiger, wenn Du die HA-Instanz einfach so lässt, wie sie ursprünglich mal war (http://<IP>:8123) und einen Reverse-Proxy davor setzt bzw. das Addon dafür nutzt. Dann sollte auf dem Host auch zweierlei verfügbar sein:

1) HA "ganz normal" (wie oben beschrieben)
2) HA "verschlüsselt" via Port 443

Dann musst Du einmal beim Addon den FQDN anlegen und das Lets-Encrypt-Zertifikat beziehen, damit wäre der Teil auch schon abgeschlossen. In der HA-Config (configuration.yaml) müsstest Du dann noch bei den trusted_proxies dafür sorgen, dass der Reverse-Proxy dann auch mit der HA-Instanz darf, die Kommunikation von aussen erfolgt dann nicht mehr "direkt" mit der HA-Instanz, sondern von extern spricht man "nur" mit dem Reverse-Proxy, welcher dann mit der internen HA-Instanz spricht:

Externer Client <---https---> Reverse-Proxy <---http---> HA-Instanz

Dabei ist noch zu beachten, dass der Eintrag use_x_forwarded_for: true nicht vergessen werden darf, denn ansonsten taucht beim Zugriff auf die HA-Instanz immer nur die IP vom Reverse-Proxy auf. Mit dem genannten Eintrag, wird die IP des "eigentlich" anfragenden Clients an HA mitgeteilt. Sollte es z.B. aufgrund von div. fehlgeschlagenen Login-Versuchen zu einer temporären Sperre kommen, wird nicht der Reverse-Proxy gesperrt (das wäre ja schon recht blöd), sondern - wie gewünscht - die IP des Clients, welcher sich mehrfach falsch authentifiziert hat.
 
Ok, also brauche ich erstmal einen Reverse-Proxy auf der HA Instanz? Habe dazu das Addon "Nginx" installiert.
Das Let'sEncrpy-Addon würde ja weiterhin das Zertifikat aktualisieren, daran müsste man ja nichts grundlegend ändern, richtig? Und wenn ich es richtig verstanden habe nutzt das Addon "Nginx" dasselbe ssl-Unterverzeichnis wie HA selbst, er dürfte das Zert somit schon finden weil es da ist. Ich müsste nur HA so einstellen das es eben selbst kein SSL mehr anbietet und kein Zertifikat nutzt. Danach müsste HA ja wieder ganz normal im lokalen Netz per Port 8123 erreichbar sein.
 
Zuletzt bearbeitet:
Nginx ist konfiguriert, Portforward auf der Fritz geändert, alles durchgestartet => Funzt! :)

Habe im HG3 jetzt
ws://homeassistant.local:8123/api/shelly/ws
drin und bekomme auch die Entitäten im HA angezeigt.

Prima, vielen herzlichen Dank für die Hilfe!!
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
6.157
Beiträge
59.942
Mitglieder
6.234
Neuestes Mitglied
rohano
Zurück
Oben