Linux und Windows HelpDesk

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