this post was submitted on 25 Nov 2023
16 points (90.0% liked)

Selfhosted

40384 readers
682 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS
16
submitted 1 year ago* (last edited 1 year ago) by shmanio to c/selfhosted
 

I have Jellyfin installed on a remote machine, connected to my laptop and phone via Tailscale. Is it possible to cast from that machine to a gen 2 Chromecast?

From the Jellyfin instance installed on my laptop, in the same LAN, I can authenticate from the phone and cast to the Chromecast, so all the pieces work.

I have tried announcing the subnet from the laptop (--advertise-routes=192.168.1.0/24), with IP forwarding etc. The remote machine accepts the route and can ping the Chromecast (192.168.1.100). From the phone I can connect to the server and start casting. The screen shows the Jellyfin logo, but playing anything has no effect.

Has someone managed to make it work?


EDIT: As I feared, it seems it's not possible. I can't change the routing table of my ISP's router, so the Chromecast can't reach the remote server.

I'll try to find a newer Chromecast, or maybe just get a Raspberry and install the full client there. Thanks everyone!

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 10 points 1 year ago* (last edited 1 year ago) (3 children)

When you "cast" from the phone to the Chromecast, what happens it that the phone gives the Chromecast an URL where it can find the stream to play. The phone can read that stream because it's connected to the Tailscale VPN. The Chromecast isn't, so the stream URL is inaccessible to it. You see the Jellyfin logo because that's a feature of casting (the app on the phone gives the Chromecast a logo to show).

There's no point in announcing the subnet from your laptop, because your laptop is not a router for the local LAN. You can use this to reach local LAN devices from remote Tailscale nodes but not the other way around.

Some possible solutions:

  1. You enable the hotspot feature on the phone while connected to Tailscale, and connect the Chromecast to the wifi of the phone. But the stream will consume the cellular connection, because you're using the phone's wifi for the hotspot (the phone only has one wifi interface so it cannot use it both to connect to the local LAN and for hotspot).
  2. If you connect the local laptop to the router with a wired connection you can use its wifi as hotspot, connect the laptop to Tailscale, connect the Chromecast to the laptop hotspot, and the stream will arrive over the local connection.
  3. You can try to install Tailscale on the router, if it runs OpenWRT or something similar, and if it has enough storage space (the Tailscale packages are kinda large). If you announce the subnet from the router then it will work as intended and all the devices on the local LAN will be able to "see" the remote laptop.
  4. If you're using nginx as reverse proxy with TLS certificates for the remote Jellyfin you can try this: expose it to the internet without Tailscale and use nginx-ip-whitelister to temporarily allow access from your local LAN's public IP. All devices in the local LAN will see the remote Jellyfin. But read the warnings on the project page, it's not as secure as a VPN. And of course "expose jellyfin to the internet" is not as simple as it sounds (you need a domain, you need to get Let's Encrypt certs, a public IP, a port forward etc.)
[–] qubik 3 points 1 year ago (1 children)
  1. Open Jellyfin stream with VLC (android) and Chromecast trough it. VLC works like reverse proxy.
[–] [email protected] 2 points 1 year ago

I use this same method to stream to Chromecast regularly (with Kodi). I will sometimes have issues with some encodings, or desyncs when pausing, but it is solid enough to support streaming full movies at 4K.

[–] TechAdmin 2 points 1 year ago

For 3, if router supports it could also try doing static route via Tailscale joined machine that has IP forwarding enabled

[–] [email protected] 2 points 1 year ago

But the stream will consume the cellular connection, because you’re using the phone’s wifi for the hotspot (the phone only has one wifi interface so it cannot use it both to connect to the local LAN and for hotspot).

This is not necessarily true. It's almost always possible to use the 2.4GHz band on one side and the 5GHz one on the other and multiple networks on one WiFi interface isn't impossible either.

Modern Android devices can provide hotspot of the connected WiFi without any modifications. For some anecdata: My FP4 with LineageOS 20 and a Samsung A50 (Android 11) can both do it.