Google assistant not speaking via tts

I’m wondering if the port number in your base_url is being dropped (omitted) by Google.

If you’re not already running another web server you could remove the port from base_url (IE: “https://xxxxx.duckdns.org/”) and set your router to forward external port 443 to internal port 8123.

but regardless of the port, isn’t the problem that the local Google Home devices can’t reach https://xxxx.duckdns.org to download the tts mp3 file and the only current way around that is to turn off ssl on hassio and have something else do my SSL termination and it forwards inbound external requests to hassio http? Then I change my tts base_url to http://local_dns_of_hassio:8123 so the Google Home devices don’t get an SSL error and can download the local tts mp3 file?

The above must be true becuase I got it to work. Seems like alot of workaround if there was just another way to have HA listen on http on a different port.

  1. update hassio configuration.yaml to remove ssl, make sure you can reach HA locally over http
  2. turn off DuckDNS add-on in hassio
  3. install the nginx proxy add-on in HA, configure https with port you want nginx to list to (i.e. 8124).
  4. On the modem, port forward 8124 to nginx/hassio
  5. In ngix web ui (configured from step2), add a new Proxy Host to your HA instance and on the SSL tab, add a new SSL cert.

This worked for me. The one gotcha was in nginx when I ordered a new SSL cert (which it does through Let’s Encrypt), the cert would expire at the time I ordered it, which caused the Proxy Host entry to show Offline. The workaround was to grab the /ssl/* files from HA and nginx, create a new SSL but from the new dropdown, select Custom and use these ssl files (which the DuckDNS let’s encrypt add-on created).

Not based on what you’ve mentioned in this thread; you’ve always had a port number specified. They couldn’t reach https://xxxxx:8123 and https://xxxx.duckdns.org:8123.

So do you now access HA externally at https://xxxx.duckdns.org:8124?

Port number or not, devices on my local lan couldn’t reach my external facing address that required https that was defined in my base_url http section. And the local hassio interface didn’t have a matching cert name so https failed for google.

Correct, now I have my nginx external as https://xxxx.duckdns.org:8124 which forwards the request to my local hassio instance on port 8123 (no ssl), like @firstof9 suggested originally…

1 Like

The only other solution to this would be loopback-NAT support on your router or creating an iptables/firewall rule.