Unable to play local mp3 to Google Home

I’ve been struggling with this too. Google Home uses hardcoded DNS servers (it’s own 8.8.8.8/8.8.4.4) and it ignores DNS servers provided by DHCP. Google Home also only accepts secure HTTP (https) urls that can be resolved using Google DNS servers. Internal IP-addresses for url’s will also be ignored, as you cannot request a publicly accepted certificate for a (local) IP-address. So if you’re using split DNS (running the same domain internally as externally), there are 2 work-around:

  1. Block the Google Home in your firewall for making external DNS requests (TCP port 53). That way it is forced to use your local DNS server (provided by DHCP) and it will play local files provided via a secure http url
  2. Enable your router for network ‘hair pin’ or ‘loop back’, that allows internal devices to access internal resources via the external interface.

Hope this helps.

Not true at all.

Also not true.

Well, then I guess that a lot has changed in the last 5 months :wink: Because back then, it didn’t work. However, my Sonos One (with Google Assistant) is a lot less fuzzy. Perhaps you can explain why you think it’s not true?

I am able to trigger my Google Homes to play locally hosted MP3s from my Home Assistant install and it’s only using HTTP (non-ssl) via it’s internal IP address (192.168.1.xxx).

I second @firstof9, and my complete config showing local play is above, in this thread.

The problem is that when you’re using HTTPS, you almost certainly don’t have a certificate for your IP address. You have that certificate for your domain name, which you’re not using if you’re trying to use your internal IP. This can’t work, and it’s why the Google Home doesn’t like that URL. It has nothing to do with names being resolved.

The only real solution I’ve found for this that ticks all the boxes I need is to NOT configure HA for HTTPS at all, and instead set up a reverse proxy like NGINX to handle HTTPS and forward the requests to HA over just plain old HTTP. Then you can use a URL like http://192.168.1.34/local/file.mp3, and it works just fine when you try to cast it.

2 Likes

You can start by reading up on these threads in which this topic is discussed:

Can confirm, this is exactly what I do. SSL sits on the proxy side only, and LAN access stays unencrypted.

1 Like

Which is exactly what I do, and if I recall stated earlier in the thread.

You’re right. I admit, I didn’t read this whole thread :slight_smile:

1 Like

I think confirmation by multiple sources improves the reliability of any information offered :smiley:

(Either that OR Evidence of a conspiracy ! :male_detective: :rofl: )

+1 on it being a conspiracy

I only see you mentioning that you can play media from a local source (I don’t see you specifically mentioning using a reverse proxy for secure remote access). I think Steve’s comment is useful for those who might not realize how to enable remote access and still be able to cast local media, and I don’t believe it was meant to reduce your contribution.

It may have been another thread with the same issue, my mistake.

1 Like

All good, no worries.

1 Like

I am having similar problems to some of the early posters in that I cannot get a file to play or display from the www or local directory when trying to use http in Chrome browser. I am using hassio v3.8 build for an Intel NUC and I am on HA v0.104.3. I also have DUCKDNS setup and working for remote access. When using duckdns path I get This page isn’t working ERR_EMPTY_RESPONSE, when I use a directipaddr I get 404 Not found. Each of the responses is similar in nature which suggests a security access issue but I have logged into the host and using file commands determined that all security groups are rwx suggesting there is open access to the file. I have read through many different posts chasing down this rabbit hole with no luck. Anyone have ideas for me? I am not super linux literate but willing to learn and try things out.

As I suspected, it was a security/permissions issue. My files were all associated with the root account and I needed to change them over to use the hassio account. Learned this clue from another thread. This was done using the CHOWN command. SO, I can now play the media file in a browser. On to seeing if I can now get it to play on a google home.

Hi. I’ve seen this configuration, but when you can the entity_id, where did u setted it up? how I set it? how I setup my google home as an itentity, so I can call the service to that itentity? Can anyone help me? Thank’s for any help

There’s documentation for that here.

Hi @firstof9. Very thanks for your fast reply. And what about this here? I need to do this too? or just the one you mentioned? Because in this one I seen, it says need https and external access, and I only have local access. Thanks