Hmmbob b0998ea88b Fixing some more broken links (#10734)
* Fixing broken links in LaMetric documentation

* Fix broken links in Apache documentation

* Fix broken links in nginx documentation

* Fix broken links in Docker documentation

* Fix broken link in Synology documentation

* Fix broken link in armbian documentation

* Fix broken link in cover.rfxtrx

* Fix broken links in Installation notebooks docs
2019-10-12 12:51:57 +02:00

3.8 KiB

title, description, redirect_from
title description redirect_from
Apache Proxy Configure Apache to work with Home Assistant as a subdomain /cookbook/apache_configuration/

This example demonstrates how you can configure Apache to act as a proxy for Home Assistant.

This is useful if you want to have:

  • a subdomain redirecting to your Home Assistant instance
  • several subdomain for several instance
  • HTTPS redirection

Subdomain

So you already have a working Apache server available at example.org. Your Home Assistant is correctly working on this web server and available at http://localhost:8123

Enable mod_proxy_wstunnel by running if you encounter issues while serving Home Assistant through your proxy:

$ sudo a2enmod proxy_wstunnel

To be able to access to your Home Assistant instance by using https://home.example.org, add the following file to /etc/httpd/conf/extra/ as hass.conf

<VirtualHost *:443>
  ServerName home.example.org
  ProxyPreserveHost On
  ProxyRequests off
  ProxyPass /api/websocket ws://localhost:8123/api/websocket
  ProxyPassReverse /api/websocket ws://localhost:8123/api/websocket
  ProxyPass / http://localhost:8123/
  ProxyPassReverse / http://localhost: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]
</VirtualHost>

and make sure that this file is read by Apache's main configuration file /etc/httpd/conf/httpd.conf

...
Include conf/extra/hass.conf
...

If you don't want HTTPS, you can change <VirtualHost *:443> to <VirtualHost *:80> or better consider redirecting all HTTP to HTTPS.

In case you are getting occasional HTTP 504 error messages ("Gateway Timeout") or HTTP 502 messages ("Bad Gateway") when accessing the Web UI through your proxy, try adding disablereuse=on to both ProxyPass directives:
<VirtualHost *:443>
  [...]
  ProxyPass /api/websocket ws://localhost:8123/api/websocket disablereuse=on
  [...]
  ProxyPass / http://localhost:8123/ disablereuse=on
  [...]
</VirtualHost>

Multiple Instance

You already have Home Assistant running on http://localhost:8123 and available at home.example.org as describe before. The configuration file for this Home Assistant is available in /home/alice/.homeassistant/configuration.yaml

You want another instance available at https://countryside.example.org

You can either :

  • Create a new user, bob, to hold the configuration file in /home/bob/.homeassistant/configuration.yaml and run Home Assistant as this new user
  • Create another configuration directory in /home/alice/.homeassistan2/configuration.yaml and run Home Assistant using hass --config /home/alice/.homeassistant2/

In both solution, change port number used by modifying configuration.yaml

http:
  server_port: 8124
  ...

Start Home Assistant: Now, you have another instance running on http://localhost:8124

To access this instance by using https://countryside.example.org add to /etc/httpd/conf/extra/hass.conf

<VirtualHost *:443>
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName countryside.example.org
  ProxyPass /api/websocket ws://localhost:8123/api/websocket
  ProxyPassReverse /api/websocket ws://localhost:8123/api/websocket
  ProxyPass / http://localhost:8124/
  ProxyPassReverse / http://localhost:8124/
</VirtualHost>

HTTP to HTTPS redirection

Add to your /etc/httpd/conf/extra/hass.conf

<VirtualHost *:80>
  ServerName example.org
  ServerSignature Off

  RewriteEngine on
  RewriteCond %{HTTPS} !=on
  RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [NE,R,L]
</VirtualHost>