Home Assistant hinter Apache Reverse Proxy.
Möchte man Home Assistant hinter einem Apache Webserver betreiben und von außen über die FQDN erreichbar machen, kann man in Apache einen Reverse Proxy auf Home Assistant einrichten. Home Assistant ist dann über eine Subdomain wie z.B. home.domain.de erreichbar. Auf dem bestehenden Apache muss dafür das Modul mod_proxy vorhanden sein.
Zunächst erstellt man auf seinem bereits bestehenden Apache-Webserver, unter /etc/apache2/sites-available/ eine Datei mit dem gewünschten Namen des Home Assistant-VHOST und editiert diese mit dem Editor seiner Wahl.
| # touch
/etc/apache2/sites-available/VIRTUALHOST.conf # mcedit /etc/apache2/sites-available/VIRTUALHOST.conf |
Home Assistant sollte nur per https erreichbar sein und z.B. ein Let's Encrypt Zertifikat verwendet werden. In der Datei /etc/apache2/sites-available/VIRTUALHOST.conf sind dazu die folgenden Angaben zu machen wobei die individuellen Angaben wie Name, Alias, IP, Pfade... individuell anzupassen sind.
<VirtualHost *:80>
ServerName home.domain.de:80
ServerAlias www.home.domain.de
ServerAdmin root@domain.de
Redirect permanent / https://home.domain.de:443/
ErrorLog /var/www/log/home_error_log
CustomLog /var/www/log/home_access_log combined
</VirtualHost>
<VirtualHost *:443>
ServerName home.domain.de:443
ServerAlias www.home.domain.de
ServerAdmin root@domain.de
SSLProxyEngine On
SSLCertificateFile /usr/local/ssl/certs/domain.de.pem
SSLCertificateKeyFile /usr/local/ssl/certs/domain.de.pem
ErrorLog /var/www/log/home_error_log.ssl
CustomLog /var/www/log/home_access_log.ssl combined
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /api/websocket ws://192.168.120.200:8123/api/websocket
ProxyPassReverse /api/websocket wss://192.168.120.200:8123/api/websocket
ProxyPass / http://192.168.120.200:8123/
ProxyPassReverse / http://192.168.120.200:8123/
RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule ^/?(.*) "ws://192.168.120.200:8123/$1" [P,L]
</VirtualHost>
Zum Abschluss muss der Home Assistant-VHOST aktiviert werden. Unter Systemen auf Basis von Debian erfolgt das sehr einfach auf der Kommandozeile mit diesem Befehl.
| # sudo a2ensite VIRTUALHOST.conf |
Alternativ kann ein Softlink erstellt und Apache neu gestartet werden.
| # ln -s
/etc/apache2/sites-available/VIRTUALHOST.conf
/etc/apache2/sites-enabled/VIRTUALHOST.conf # service apache2 restart |