Follow these steps to get the app installed on your system:
- In Home Assistant, go to Settings > Apps > Install app.
- Find the "NGINX Home Assistant SSL proxy" app and click it.
- Click on the "INSTALL" button.
The NGINX Proxy app is commonly used in conjunction with the Duck DNS and/or the Let's Encrypt app to set up secure remote access to your Home Assistant instance. The following instructions covers this scenario.
-
The certificate to your registered domain should already be created via Duck DNS, Let's Encrypt or another method. Make sure that the certificate files exist in the
/ssldirectory. -
You must add the following section to your Home Assistant configuration.yaml. If the
httpsection is using thessl_certificateorssl_keykeys, enable theuse_ssl_backendoption.http: use_x_forwarded_for: true trusted_proxies: - 172.30.33.0/24
-
In the nginx app configuration, change the
domainoption to the domain name you registered (from DuckDNS or any other domain you control). -
Leave all other options as-is.
-
Save configuration.
-
Start the app.
-
Have some patience and wait a couple of minutes.
-
Check the app log output to see the result.
App configuration:
domain: home.example.com
certfile: fullchain.pem
keyfile: privkey.pem
hsts: "max-age=31536000; includeSubDomains"
customize:
active: false
default: "nginx_proxy_default*.conf"
servers: "nginx_proxy/*.conf"
cloudflare: false
real_ip_from: []The server's fully qualified domain name to use for the proxy.
The certificate file to use in the /ssl directory. Keep filename as-is if you used default settings to create the certificate with the Duck DNS app.
Private key file to use in the /ssl directory.
Value for the Strict-Transport-Security HTTP header to send. If empty, the header is not sent.
If true, additional NGINX configuration files for the default server and additional servers are read from files in the /share directory specified by the default and servers variables.
The filename of the NGINX configuration for the default server, found in the /share directory.
The filename(s) of the NGINX configuration for the additional servers, found in the /share directory.
If enabled, configure Nginx with a list of IP addresses directly from Cloudflare that will be used for set_real_ip_from directive Nginx config.
This is so the ip_ban_enabled feature can be used and work correctly in /config/customize.yaml.
Enable this option to configure Nginx to connect with SSL to the backend when your http section uses the ssl_certificate or ssl_key options.
If specified, configures Nginx to use Proxy Protocol to get the Real Ip from an upstream load balancer; for more information.
If specified, configures Nginx to use HTTP/3 with QUIC/UDP on this UDP port in addition to HTTP/2 and HTTP/1.1 on the TCP port; for more information.
- By default, port 80 is disabled in the app configuration in case the port is needed for other components or apps like
emulated_hue. - With HTTP/3 (QUIC), Nginx cannot forward the port of the address used by the client to Home Assistant (the
HostandX-Forwarded-Hostheaders contain the hostname without port). If Home Assistant is reachable on a non-default port (anything other than 443), this breaks features which validate the request host and port against the configured external URL, such as the OAuth2 discovery endpoints used by MCP clients. Regular browser and app logins are not affected. To avoid this, use the default port 443 or disable HTTP/3.
400 Bad Requestresponse for requests over this proxy mean you are probably missing thetrusted_proxiesconfiguration option, see above.- HTTP/3 (QUIC) enabled, but not working. Check for the
Alt-Svc 'h3=":443"; ma=86400'header in your web browser's development tools. Make sure the UDP QUIC port is forwarded or allowed in your firewall, in addition to the TCP HTTPS port.
Got questions?
You have several options to get them answered:
- The Home Assistant Discord Chat Server.
- The Home Assistant Community Forum.
- Join the Reddit subreddit in /r/homeassistant
In case you've found a bug, please open an issue on our GitHub.