Home Assistant Reverse Proxy

1.Home Assistant 에서 Reverse Proxy 허용

  vi /var/homeassistant/homeassistant/configuration.yaml
----------
# Enable Reverse Proxy
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 10.10.10.0/24
    - 127.0.0.1

# Enable WebSocket
websocket_api:
----------



2. apache2 설정 예제

  echo "Listen 443" >> /etc/apache2/ports.conf
  a2enmod proxy_wstunnel
  vi /etc/apache2/sites-available/hass_reverse_proxy.conf
----------
###########################################################
# /etc/apache2/sites-available/hass_reverse_proxy.conf
#
# Add the following to Home Assistant's configuration.yaml:
###########################################################
#http:
#  use_x_forwarded_for: true
#  trusted_proxies:
#    - 10.10.10.0/24
#    - 10.10.10.108
#    - 127.0.0.1
#
#websocket_api:
###########################################################

<VirtualHost _default_:443>
  ServerName localhost:443

  ErrorLog "${APACHE_LOG_DIR}/home_assistant_error.log"
  TransferLog "${APACHE_LOG_DIR}/home_assistant_access.log"

  SSLEngine on
  SSLCertificateFile  /etc/ssl/opizero/certs/ssl-cert.crt
  SSLCertificateKeyFile /etc/ssl/opizero/private/ssl-cert.key

  ProxyPreserveHost On
  ProxyRequests off

  ProxyPass /api/websocket ws://10.10.10.108:8123/api/websocket
  ProxyPassReverse /api/websocket ws://10.10.10.108:8123/api/websocket
  ProxyPass / http://10.10.10.108:8123/
  ProxyPassReverse / http://10.10.10.108:8123/

  # fix websockets for addons and apis
  RewriteEngine On
  RewriteCond %{HTTP:Upgrade} websocket [NC]
  RewriteRule ^/?(.*) "ws://10.10.10.108:8123/$1" [P,L]
</VirtualHost>
----------
  a2ensite hass_reverse_proxy
  systemctl restart apache2



3.ngix 설정 예제

  vi /etc/nginx/sites-available/hass_reverse_proxy
----------
###########################################################
# /etc/nginx/sites-available/hass_reverse_proxy
#
# Add the following to Home Assistant's configuration.yaml:
###########################################################
#http:
#  use_x_forwarded_for: true
#  trusted_proxies:
#    - 10.10.10.0/24
#    - 10.10.10.108
#    - 127.0.0.1
#
#websocket_api:
###########################################################

server {
    listen [::]:443 ssl default_server http2 ipv6only=off;
    server_name 'hasu0707.duckdns.org';

    # These shouldn't need to be changed
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
    ssl_protocols TLSv1.2;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    proxy_buffering off;

    location / {
        proxy_pass                          http://localhost:8123/;
        proxy_http_version                  1.1;
        proxy_redirect                      http:// https://;
        proxy_cache_bypass                  $http_upgrade;
        proxy_set_header Connection         "upgrade";
        proxy_set_header Host               $host;
        proxy_set_header Upgrade            $http_upgrade;
        proxy_set_header X-Forwarded-Host   $host;
        proxy_set_header X-Forwarded-Port   $server_port;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_set_header X-Forwared-For     $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP          $remote_addr;
    }

    # self signed certificate
    ssl_certificate '/etc/ssl/opizero2/certs/ssl-cert.crt';
    ssl_certificate_key '/etc/ssl/opizero2/private/ssl-cert.key';
}

server {
    # managed by Certbot
    if ($host = 'hasu0707.duckdns.org') {
        return 301 https://$host$request_uri;
    }

    listen 80;
    server_name 'hasu0707.duckdns.org';

    # managed by Certbot
    return 404;
}
----------
  ln -s /etc/nginx/sites-available/hass_reverse_proxy /etc/nginx/sites-enabled/hass_reverse_proxy
  systemctl restart nginx
위로 스크롤