HomeAssistant nun am Internet

Das hat­te ich schon län­ger vor: Home­As­sistant ans Inter­net zu hän­gen. Dann kann ich auch aus der Fer­ne die lie­be Fami­lie erschrecken 🙂
Nor­ma­ler­wei­se wür­de man auf dem Rou­ter ein Port­for­war­ding ein­rich­ten und gut. Aber das wird dann ganz schnell eklig mit HTTPS und des­sen Zer­ti­fi­ka­ten. Außer­dem spricht mein Home­As­sistant kein HTTPS, und ich woll­te mög­lichst wenig dar­an rum­kon­fi­gu­rie­ren. Letzt­lich muße ich dort (HA) gar nichts machen.

Mei­ne Lösung: HA läuft auf einem Raspi, auf dem auch ein Apa­che läuft. Der stellt einen rever­se Pro­xy mit HTTPS (selbst­si­gnier­te Zer­ti­fi­kat) zur ver­fü­gung, der dann mit plain HTTP auf HA wei­ter­ver­mit­telt. Bleibt aber das Pro­blem mit den Zertifikaten.
Aber ich habe ja noch einen Root-Ser­ver im Inter­net! Und der hat ein rich­ti­ges Wild­card-Zer­ti­fi­kat. Also habe ich auch dort einen rever­se Pro­xy instal­liert, der dann per HTTPS auf mei­nen Heim-IP geht, dort gibt es dann in der Tat ein Port­for­war­ding auf den HTTPS-Pro­xy auf dem Raspi.
Funktioniert!
Der Apa­che auf dem Raspi:


  ServerName hass.sokoll.com
  ServerAdmin webmaster@sokoll.com
  ErrorLog ${APACHE_LOG_DIR}/hass.sokoll.com-error.log
  CustomLog ${APACHE_LOG_DIR}/hass.sokoll.com-access.log combined
  SSLEngine on
  SSLCertificateFile /etc/ssl/private/raspi.crt
  SSLCertificateKeyFile /etc/ssl/private/raspi.key
  ProxyPreserveHost On
  ProxyRequests off
  ProxyPass /api/websocket ws://localhost:8123/api/websocket
  ProxyPassReverse /api/websocket ws://localhost:8123/api/websocket
  ProxyPass / http://127.0.0.1:8123/
  ProxyPassReverse / http://127.0.0.1:8123/
  RewriteEngine on
  RewriteCond %{HTTP:Upgrade} =websocket [NC]
  RewriteRule /(.*)  ws://localhost:8123/$1 [P,L]
  RewriteCond %{HTTP:Upgrade} !=websocket [NC]
  RewriteRule /(.*)  http://localhost:8123/$1 [P,L]

Der auf dem Root-Server:


  Protocols h2 http/1.1
  ServerName hass.sokoll.com
  ServerAlias home.sokoll.com
  ServerAdmin webmaster@sokoll.com
  ErrorLog ${APACHE_LOG_DIR}/hass.sokoll.com-error.log
  CustomLog ${APACHE_LOG_DIR}/hass.sokoll.com-access.log combined
  SSLEngine on
  SSLCertificateFile  /etc/dehydrated/certs/wildcard_sokoll.com/fullchain.pem
  SSLCertificateKeyFile /etc/dehydrated/certs/wildcard_sokoll.com/privkey.pem
  ProxyRequests off
  ProxyPreserveHost On
  ProxyPass /api/websocket wss://91.66.58.188/api/websocket
  ProxyPassReverse /api/websocket wss://91.66.58.188/api/websocket
  ProxyPass / https://91.66.58.188/
  ProxyPassReverse / https://91.66.58.188/
  SSLProxyEngine on
  SSLProxyCheckPeerCN off
  SSLProxyCheckPeerExpire off
  SSLProxyCheckPeerName off


  ServerName hass.sokoll.com
  ServerAlias home.sokoll.com
  ServerAdmin webmaster@sokoll.com
  RedirectMatch permanent ^/(.*) https://hass.sokoll.com/$1

Die web­so­cket-Geschich­ten habe ich mir aus dem Inter­net zusammengeklau(b)t, natür­lich. Bis­lang habe ich kei­ne Feh­ler bemerkt.

2 Comments

Add a Comment
  1. Meh. Word­Press frißt <Vir­tu­al­Host bla­fa­sel> nach dem <pre>. Auf Dia­spo­ra (https://pluspora.com/posts/a75e57c05bc501372dc0005056264835) ist es rich­tig angekommen. 

Schreibe einen Kommentar zu <Rainer Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert