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 Alias, IP des Home Assistant, 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
<Proxy *>
Authtype Basic
Authname "Members only!"
AuthUserFile /etc/apache2/htpasswd.home
Require valid-user
Order deny,allow
Allow from all
</Proxy>
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>
Der markierte Abschnitt ist optional und bewirkt eine zusätzliche Passwortabfrage des Apache, beim betreten des VHOST. Es ist eine Passwortdatei nötig, die mit dem folgenden Aufruf erstellt wird. Wenn es auf dem System einen Standardpfad für die Apache-Passwortdateien gibt, sollte dieser angegeben werden.
| # sudo htpasswd -c /etc/apache2/htpasswd.home username |
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 |
Auf Home Assistant ist in der configuration.yaml dieser Abschnitt, mit der lokalen IP des Apache-Server einzutragen.
http:
use_x_forwarded_for: true
trusted_proxies:
- 192.168.120.100
Zum Abschluss folgt der obligatorische Neustart von Home Assistant.