Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Casting to chromecast stopped working in 10.6.2 #3852

Closed
TheTerrasque opened this issue Aug 8, 2020 · 90 comments · Fixed by jellyfin/jellyfin-web#2085
Closed

Casting to chromecast stopped working in 10.6.2 #3852

TheTerrasque opened this issue Aug 8, 2020 · 90 comments · Fixed by jellyfin/jellyfin-web#2085
Labels
bug Something isn't working regression Regression from previous build

Comments

@TheTerrasque
Copy link

Describe the bug
Casting video to Chromecast does not work any more on my setup on version 10.6.2

System (please complete the following information):

  • OS: Windows 10
  • Virtualization: None
  • Clients: Browser, Android
  • Browser: Chrome 84.0.4147.105
  • Jellyfin Version: 10.6.2
  • Playback: Seem to be same on all
  • Installed Plugins: OpenSubtitles
  • Reverse Proxy: traefik
  • Base URL: /
  • Networking: explained later
  • Storage: local

To Reproduce

  • Connect to Chromecast from either browser or android app
  • After connected and Jellyfin running on chromecast:
  • Click play on media file
  • See UI reacting to click, but no response happen, as if it wasn't clicked

Expected behavior

  • Video plays on chromecast, or at least give an error

Logs

  • No relevant entry in logs.
  • Log level : info
  • Chrome browser once showed an error indicating timeout communicating with Chromecast

Additional context
Network setup:

  • Jellyfin runs on Windows desktop, Chromecast is in same /24 net
  • Traefik 1.7 is running on Raspberry pi, handling incoming on port 80 and 443
  • Reverse proxy from domain to Jellyfin's internal ip and port is set up on traefik
  • SSL cert is generated by Let's Encrypt,
  • Android app configured against external domain over https
    Tried:
  • Restarted Jellyfin server
  • Tested with Chrome browser using localhost and external domain over https, no video in either cases.
  • In-browser playback worked fine
  • Tested from Android app, same result.
  • In-app playback worked fine on Android
  • Tested on two different Chromecast devices, same result.

Problem started after upgrading to 10.6.2, downgrading Jellyfin to 10.6.1 fixed it again.

There is a fix for "inverted logic for LAN IP detection" in 10.6.2. I'm guessing fixing that have triggered another bug, possibly related to the network configuration I'm running.

@TheTerrasque TheTerrasque added the bug Something isn't working label Aug 8, 2020
@AtomicPumpkin
Copy link

Also experiencing the same issue with 10.6.2, my setup is essentially the same except I have Nginx handing reverse proxy duties.

@YouKnowBlom
Copy link
Contributor

is this on the unstable chromecast branch?

@Bond-009 Bond-009 added the regression Regression from previous build label Aug 9, 2020
@sybnex
Copy link

sybnex commented Aug 9, 2020

same here...

@ownbee
Copy link

ownbee commented Aug 9, 2020

Same here. I need to use lan IP again instead of domain name via reverse proxy. Was not working some time before 10.6.1, started working 10.6.1 and now it's not working again in 10.6.2.

@Harteex
Copy link

Harteex commented Aug 9, 2020

Casting wouldn't work for me because Jellyfin sends Chromecast my local IP and port. In my reverse proxy setup the connection must go through the reverse proxy.

I fixed it for me by modifying jellyfin-web\plugins\chromecastPlayer\plugin.js
Changed "message.serverAddress = serverAddress" to "message.serverAddress = message.serverAddress" (so that it ignores the serverAddress from chromecastHelper)

Might be a good idea to at least let the user configure to always use the external address that the caster uses.

Edit: I would love to see a checkbox in the network settings so that every device you cast to always use the same address (including domain, exactly as written) as the client you cast with uses to connect. Always use https://jellyfin.whatever.com. No logic to try to find some IP address.
The settings could be something like "Always use external address when casting" or maybe reverse it: "Attempt direct connection when casting".

@dpraul
Copy link

dpraul commented Aug 11, 2020

I rolled back to 10.6.1 and this was still an issue for me, so not certain that I'm suffering the same issue as everyone else, but I found a (very ugly) workaround for my issue!

I stumbled on this reddit thread where someone was encountering a similar issue, and they figured out that the Chromecast plugin uses LocalAddress from /System/Info/Public. I'm fairly new to Jellyfin but I've seen people mention you used to be able to configure what this would respond with, but those options seem to be gone now.

Anyway, they suggested a terrible nginx hack of just rewriting the response. I threw this into my nginx config and suddenly Chromecast is working again!

location /System/Info/Public {
    add_header Content-Type "application/json; charset=utf8";
    return 200 '{"LocalAddress": "https://jellyfin.mydomain.com","ServerName": "MyServerName","Version": "10.6.2","ProductName": "Jellyfin Server","OperatingSystem": "Linux","Id": "f493033cefec41388dd38783a66f50cc"}';
}

It's terrible and ugly, but I'm assuming you could do something similar with Traefik.

@h0od
Copy link

h0od commented Aug 17, 2020

I also starting to have this problem a week ago. It seem to have been introduced shortly after upgrading to 10.6.2, but I can't tell for sure if it happened immediately after upgrading. And like @dpraul, I rolled back to 10.6.1 and the problem is still there, which confuses me. I'm running Jellyfin in a Docker image (linuxserver), with a nginx as reverse proxy. There's HTTPS (Letsencrypt) on the proxy, and plain HTTP between proxy and Jellyfin. It has worked flawlessly for months, and my Chromecast have not had any problems with it. My external URL is like this: https://jellyfin.mydomain.com

Like @dpraul, I also found this Reddit thread. Reading that, I got suspicious about my LocalAddress field in the response referring to Jellyfin's internal Docker IP, which of course is not accessible externally, not even on my own LAN where I have my Chromecast.

To solve this temporarily, I did almost exactly like @dpraul suggested and made a ugly hack to my nginx config to indicate the external URL in the LocalAddress field:

    location /System/Info/Public {
        default_type "application/json; charset=utf-8";
        alias /etc/nginx/private/jellyfin_info_public.json;
    }

The /etc/nginx/private/jellyfin_info_public.json file contains the json response with the external URL. After this little hack, casting to Chromecast works again.

So apparently, the Chromecast Receiver app is not getting the correct address. So the error is probably in the Cast Sender end, which is the Android app in my case.

@benja-opazo
Copy link

I started having the same problem, and inspired by this thread I applied this quick fix with apache

        <Location "/System/Info/Public">
                AddOutputFilterByType SUBSTITUTE application/json
                Substitute "s|<your_local_addres>|<your_public_address>|ni"
        </Location>

It is now working

@mholt
Copy link

mholt commented Aug 31, 2020

I believe this was introduced in 10.6 (as I am also experiencing it with 10.6.0).

Unlike others in this thread, my /System/Info/Public does not have any LocalAddress at all:

{"ServerName":"MyServerName","Version":"10.6.0","ProductName":"Jellyfin Server","OperatingSystem":"Linux","Id":"f493033cefec41388dd38783a66f50cc"}

So I just added it (similar to other workarounds above). Here is a Caddy config (Caddyfile) excerpt that worked for me:

handle /media/System/Info/Public {
	header Content-Type "application/json; charset=utf8"
	respond `{"LocalAddress":"http://10.0.1.2","ServerName":"MyServerName","Version":"10.6.0","ProductName":"Jellyfin Server","OperatingSystem":"Linux","Id":"f493033cefec41388dd38783a66f50cc"}`
}

I'm willing to consult with whichever team member would like to take up this issue so we can find a solution that works most generally and flexibly in different network environments. (This reminds me of the Chromecast bug where Chromecast hard-codes its DNS servers as 8.8.8.8 and so we need a way to configure a different external address when accessing Jellyfin locally...)

@dkanada
Copy link
Member

dkanada commented Aug 31, 2020

Can anyone else confirm LocalAddress is the culprit here and see if any input for that setting fixes Chromecast devices?

This reminds me of the Chromecast bug where Chromecast hard-codes its DNS servers as 8.8.8.8 and so we need a way to configure a different external address when accessing Jellyfin locally...

This is actually the reason we added that option, to fix Google DNS issues without requiring other tools or software.

@bialad
Copy link

bialad commented Aug 31, 2020

I've done the same think in my setup, overriding LocalAddress in my reverse proxy solves the issue for me.

@chenichadowitz
Copy link

I've also done the same thing, statically overriding LocalAddress in my nginx reverse proxy.

@sybnex
Copy link

sybnex commented Aug 31, 2020

When I check the url at /System/Info/Public, I got the IP address from the internal docker network.

{"LocalAddress":"http://172.17.0.2:8096","ServerName":"jellyfin","Version":"10.6.1","ProductName":"Jellyfin Server","OperatingSystem":"Linux","Id":"c424b4cf1cc545a9bce6c3df21e49bfc"}

But with jellyfin 10.6.1 it is working intern as well as extern.

When I used 10.6.2, casting was not working anymore.
But the LocalAddress didn't changed:
{"LocalAddress":"http://172.17.0.2:8096","ServerName":"jellyfin","Version":"10.6.2","ProductName":"Jellyfin Server","OperatingSystem":"Linux","Id":"c424b4cf1cc545a9bce6c3df21e49bfc"}

In 10.6.4 it the same too:
{"LocalAddress":"http://172.17.0.2:8096","ServerName":"jellyfin","Version":"10.6.4","ProductName":"Jellyfin Server","OperatingSystem":"Linux","Id":"c424b4cf1cc545a9bce6c3df21e49bfc"}

@anthonylavado
Copy link
Member

anthonylavado commented Aug 31, 2020

Possible link to #3712. May be related to #3033, but not sure.

@bengalih
Copy link

Possible link to #3712, with origins in #3033.

I opened #3712 and just saw this linked. Would really like some answers here because none of this is seemingly making sense to the end users. Several comments above mention hacking the information returned /media/System/Info/Public to advertise the actual public IP/DNS instead of the local address that JF is providing. They stated that this fixed their problem.

On the surface this would appear to make sense, but if you read my issues and eventual resolution on #3712, you will see that my configuration is currently working perfectly fine with the /media/System/Info/Public showing my local (10.x.x.x) IP.

When I say "working perfectly" I mean I am able to not only cast to my chromecast devices on my internal network, but I am also able to cast from a remote device (like my phone) to a CC device remote from my home network (i.e. local to wherever my phone is). My JF setup is a straight Windows install which is proxied through an NGINX server (running on embedded linux) and only port 443 is accessible to the outside (i.e. port 80 is actually blocked by my ISP).

How is it possible that even though my /System/Info/Public returns a local 10.x.x.x address JF seemingly works without issue while others seemingly are forced to hack in their public address.

If the devs would provide some answers to these questions it would really help us users troubleshoot these issues and provide better feedback to you all.

@dpraul
Copy link

dpraul commented Aug 31, 2020

How is it possible that even though my /System/Info/Public returns a local 10.x.x.x address JF seemingly works without issue while others seemingly are forced to hack in their public address.

AFAIK the jellyfin chromecast connector will leverage the LocalAddress returned from /System/Info/Public when it detects that your client is on the same network. So the hacks in here are probably only necessary when casting within the local network.

@bengalih
Copy link

How is it possible that even though my /System/Info/Public returns a local 10.x.x.x address JF seemingly works without issue while others seemingly are forced to hack in their public address.

AFAIK the jellyfin chromecast connector will leverage the LocalAddress returned from /System/Info/Public when it detects that your client is on the same network. So the hacks in here are probably only necessary when casting within the local network.

Ok, I'll buy that. Curious exactly how this works then with remote.
Curious too - you don't mention from your fix above how your JF is working...are you using a docker container as well?
It seems most people still having this issue are in that configuration, if not I'd be curious to know why you needed the hack and I didn't.

@benja-opazo
Copy link

So the hacks in here are probably only necessary when casting within the local network.

I had the opposite behavior, when casting within the local network chromecast worked as expected, but when casting outside my network was when problems appeared. Fixing the local address in /System/Info/Public fixed the casting outside my network, and casting inside my network continued working as expected

@dpraul
Copy link

dpraul commented Aug 31, 2020

Curious too - you don't mention from your fix above how your JF is working...are you using a docker container as well?
It seems most people still having this issue are in that configuration, if not I'd be curious to know why you needed the hack and I didn't.

Yes, mine is in docker - the difference is probably in docker networks. Mine was in a private subnetwork (I think the term is overlay?), so the IP was only accessible by other containers in the network (which my chromecast device is not). If you're running in bridge mode (which I believe is the default) and have the ports mounted, you can access the IP directly.

So what that means is, when the chromecast connector determines you are on the local network, it will use the internal IP and internal port - otherwise, it uses the external address and external port. So chromecast should work as long as the container is using the bridge network and has the ports mapped.

@BaronGreenback
Copy link
Contributor

Any chance one of you could test Docker image crobibero/jellyfin:3257? (Just asked for it to be rebuilt).

Details here:- #3994

If it doesn't work "out of the box" could you enable network logging (details on the PR) and send me the info which says how it's selected the bind address?

It also implements functionality which would make chromecast work - but it would be nice to get it working with no setup.

@mholt
Copy link

mholt commented Aug 31, 2020

Would that solution only work with Docker then? I don't use Docker but still have this problem.

@BaronGreenback
Copy link
Contributor

BaronGreenback commented Aug 31, 2020

No - if you can compile the code - please feel free to give it a go. It's the latest unstable as of yesterday, with a new network backend.

I have it running on my server here - but don't use docker, nor chromecast; hence the request.

@Pegasystem
Copy link

Pegasystem commented Aug 31, 2020

For anyone Googling this and using Traefik 2, here's a .yml file to fix the issue:

http:
  routers:
    chromecast-rtr:
      rule: "HostHeader(`your.jellyfin.url`) && Path(`/System/Info/Public`)"  # Replace with the proper URL
      entryPoints:
        - https
      service: jellyfin-chromecast-local
      priority: 100  # Set this to anything that's higher than your normal Jellyfin rule - if it doesn't have a priority, add one
  services:
    jellyfin-chromecast-local:
      loadBalancer:
        servers:
          - url: "http://webserver-hosting-fixed-json-file/"  # Replace with the proper URL

Unfortunately Traefik isn't able to serve files on it's own from what I could find, so you'll have to host the modified json file somewhere. Be sure to put the file at /System/Info/Public on the webserver.

@BaronGreenback
Copy link
Contributor

BaronGreenback commented Aug 31, 2020

As said - 3394 can definitely sort it by adding something like below to the settings - it would just be nice to have it working by default.

<PublishedServerUriBySubnet>
<string>192.168.1.0/24=net1access:1270</string>
<string>192.168.2.1/24=net2access</string>
<string>external=jellyfinoutside.com</string>
</PublishedServerUriBySubnet> 

@sybnex
Copy link

sybnex commented Aug 31, 2020

Any chance one of you could test Docker image crobibero/jellyfin:3257? (Just asked for it to be rebuilt).

Details here:- #3994

If it doesn't work "out of the box" could you enable network logging (details on the PR) and send me the info which says how it's selected the bind address?

It also implements functionality which would make chromecast work - but it would be nice to get it working with no setup.

does not start:

[18:54:30] [ERR] [1] Jellyfin.Server.Migrations.MigrationRunner: Could not apply migration 'MigrateDisplayPreferencesDatabase'
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details.
 ---> Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 19: 'FOREIGN KEY constraint failed'.
   --- End of inner exception stack trace ---
   at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection connection)
   at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.Execute(IEnumerable`1 commandBatches, IRelationalConnection connection)
   at Microsoft.EntityFrameworkCore.Storage.RelationalDatabase.SaveChanges(IList`1 entries)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(IList`1 entriesToSave)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(DbContext _, Boolean acceptAllChangesOnSuccess)
   at Microsoft.EntityFrameworkCore.Storage.Internal.NoopExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(Boolean acceptAllChangesOnSuccess)
   at Microsoft.EntityFrameworkCore.DbContext.SaveChanges(Boolean acceptAllChangesOnSuccess)
   at Jellyfin.Server.Migrations.Routines.MigrateDisplayPreferencesDb.Perform()
   at Jellyfin.Server.Migrations.MigrationRunner.Run(CoreAppHost host, ILoggerFactory loggerFactory)

@BaronGreenback
Copy link
Contributor

That would be #4009 (problem in the unstable @ startup)

Could you try running it again - and see it it works this time.

@BaronGreenback
Copy link
Contributor

It'll be crashing the url parsing functions - and may cause some issues with the API's.

It should work in #3394, but if anyone wants to double check then we can make sure it works out of the box.

@alexdelorenzo
Copy link

This worked for me. Set Server Address Settings - Base URL to: https://jellyfin.yourdomain.top/. It is not logical because it is suposed to a base url without a domain...

This makes /System/Info/Public return no Local Address.

{ "ServerName": "ServerName", "Version": "10.6.4", "ProductName": "Jellyfin Server", "OperatingSystem": "Linux", "Id": "bef44b25ee8d4b3b9819d93ceea56acd" }

I don't know why it works without it but it does.

This is what fixed casting to Chromecasts for me on 10.6.4, unfortunately.

@Ruthhl3ss
Copy link

This worked for me. Set Server Address Settings - Base URL to: https://jellyfin.yourdomain.top/. It is not logical because it is suposed to a base url without a domain...
This makes /System/Info/Public return no Local Address.
{ "ServerName": "ServerName", "Version": "10.6.4", "ProductName": "Jellyfin Server", "OperatingSystem": "Linux", "Id": "bef44b25ee8d4b3b9819d93ceea56acd" }
I don't know why it works without it but it does.

This is what fixed casting to Chromecasts for me on 10.6.4, unfortunately.

This works for me! Thanks for posting!

@ThHanke
Copy link

ThHanke commented Oct 27, 2020

@Drol this fix just works...thx

@ABotelho23
Copy link

Is this planned to be fixed for the next Jellyfin version? The Base URL fix did not resolve my issue, and reading this thread seems to indicate that the fix will not work for 10.7.X.

My setup has my Jellyfin not directly accessible to clients, only through a Caddy reverse proxy. My domain points to the Caddy reverse proxy, and resolves to the internal IP address when inside, and the external IP address when outside.

@rlue
Copy link

rlue commented Nov 4, 2020

I just tried @Drol's fix, and it worked at first, but then the server started crashing on all subsequent requests. docker logs jellyfin shows the following error/stack trace:

Microsoft.AspNetCore.Routing.Patterns.RoutePatternException: The route template separator character '/' cannot appear consecutively. It must be separated by either a parameter or a literal value.
   at Microsoft.AspNetCore.Routing.Patterns.RoutePatternParser.Parse(String pattern)
   at Microsoft.AspNetCore.Routing.Patterns.RoutePatternFactory.Parse(String pattern)
   at Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory.AddEndpoints(List`1 endpoints, HashSet`1 routeNames, ActionDescriptor action, IReadOnlyList`1 routes, IReadOnlyList`1 conventions, Boolean createInertEndpoints)
   at Microsoft.AspNetCore.Mvc.Routing.ControllerActionEndpointDataSource.CreateEndpoints(IReadOnlyList`1 actions, IReadOnlyList`1 conventions)
   at Microsoft.AspNetCore.Mvc.Routing.ActionEndpointDataSourceBase.UpdateEndpoints()
   at Microsoft.AspNetCore.Mvc.Routing.ActionEndpointDataSourceBase.Initialize()
   at Microsoft.AspNetCore.Mvc.Routing.ActionEndpointDataSourceBase.get_Endpoints()
   at Microsoft.AspNetCore.Routing.CompositeEndpointDataSource.<>c.<Initialize>b__15_0(EndpointDataSource d)
   at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.ToArray()
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Microsoft.AspNetCore.Routing.CompositeEndpointDataSource.Initialize()
   at Microsoft.AspNetCore.Routing.CompositeEndpointDataSource.GetChangeToken()
   at Microsoft.AspNetCore.Routing.DataSourceDependentCache`1.Initialize()
   at System.Threading.LazyInitializer.EnsureInitializedCore[T](T& target, Boolean& initialized, Object& syncLock, Func`1 valueFactory)
   at System.Threading.LazyInitializer.EnsureInitialized[T](T& target, Boolean& initialized, Object& syncLock, Func`1 valueFactory)
   at Microsoft.AspNetCore.Routing.Matching.DataSourceDependentMatcher..ctor(EndpointDataSource dataSource, Lifetime lifetime, Func`1 matcherBuilderFactory)
   at Microsoft.AspNetCore.Routing.Matching.DfaMatcherFactory.CreateMatcher(EndpointDataSource dataSource)
   at Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.InitializeCoreAsync()
--- End of stack trace from previous location where exception was thrown ---

Moreover, I checked the system.xml config file and found that a leading slash had been prepended to the value I entered:

<BaseUrl>/https://my.jellyfin.domain</BaseUrl>

Deleting this fixed the crashes, but naturally broke chromecast support again.

Any ideas?

@sybnex
Copy link

sybnex commented Nov 4, 2020

@rlue this is what I said all the time. the fix will work only after the startup. afterwards you have to remove this config by editing an conf file im jellyfin to get it up and running again.

It's time that it have to be fixed!

@joshuaboniface
Copy link
Member

Interesting fix, that definitely points to the problem being that something here isn't appending the server name bit before the baseURL. Should help narrow it down hopefully.

@rlue
Copy link

rlue commented Nov 5, 2020

Thanks @joshuaboniface. Also just wanted to say I really appreciate all the hard work you guys put into this. I use it every day!

@kieeps
Copy link

kieeps commented Nov 6, 2020

I had the problem that i could cast to chromecasts on my local network but not on remote sites, i did try to have the full domain in baseurl but no luck, but i did specify local network with 192.168.0.0/16 and that somehow made it work again, maby jellyfin assume everything to be local unless specified?

Edit: this was just wrong, i Did try to put the full domain in base url but it didn't work, then I tried to specify the local network and that fixed it.... Untill I removed the baseurl and rebooted, i now have the domain in base url again but I don't like that solution :-/
Anyone have a fancy workaround for HAProxy?

@Lightning2X
Copy link

Lightning2X commented Nov 12, 2020

Can confirm that the issue was local address for me too. @Drol 's fix did not work for me since it would prepend the / before the baseurl as another user said. My Baseurl would just show my local IP address and not my public URL.

@mholt 's fix worked for me (thanks!) since I also had caddy. However I run a nested config so I had to adjust some stuff but the idea is the same. After implementing it my chromecast works again.

@ne0phyte
Copy link

ne0phyte commented Nov 13, 2020

@tyhawk

Does anyone have any suggestions on how to pull it off in config like

deploy:
      labels:
        - "traefik.enable=true"
        - "traefik.port=8096"
        - "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
       [...]

Apparently you can't route to external services via docker provider in traefik, but you can route to services in other containers.
My quick n dirty solution was adding an nginx container to the jellyfin docker-compose that only serves that file.
Create the fixed Public.json in the same directory as your jellyfin docker-compose.yml and add this service:

 nginx-chromecast-fix:
    image: nginx:alpine
    volumes:
      - ./Public.json:/usr/share/nginx/html/System/Info/Public:ro
    environment:
      - NGINX_PORT=80
    networks:
      - traefik
    labels:
      - "traefik.http.services.nginx-chromecast-fix-svc.loadBalancer.server.port=80"

and add these labels to the jellyfin container:

## chromecast fix
- "traefik.http.routers.jellyfin-chromecast-fix.entryPoints=https"
- "traefik.http.routers.jellyfin-chromecast-fix.rule=Host(`your.jellyfin.domain`) && Path(`/System/Info/Public`)"
- "traefik.http.routers.jellyfin-chromecast-fix.service=nginx-chromecast-fix-svc"

A bit wasteful for a single file but avoids creating an extra static config file for traefik.

EDIT: If you already have any webserver that can serve the System/Info/Public file and has a service defined for traefik I think you can reference that with servicename@docker instead of creating a separate container.

@Dauliac
Copy link

Dauliac commented Nov 14, 2020

This worked for me. Set Server Address Settings - Base URL to: https://jellyfin.yourdomain.top/. It is not logical because it is suposed to a base url without a domain...

This makes /System/Info/Public return no Local Address.

{ "ServerName": "ServerName", "Version": "10.6.4", "ProductName": "Jellyfin Server", "OperatingSystem": "Linux", "Id": "bef44b25ee8d4b3b9819d93ceea56acd" }

I don't know why it works without it but it does.

I exactly have the same strange behavior. But that's broke the dashboard 😢

@YouKnowBlom
Copy link
Contributor

This is a call for testing for anyone that is available: jellyfin/jellyfin-web#2085

@xsteadfastx
Copy link

i stepped into that problem and took a own hacky approach... container that grabs the origin /System/Info/Public, removes the LocalAddress and serves it back.

https://git.xsfx.dev/xsteadfastx/jellyfixer

@thekoma
Copy link

thekoma commented Dec 5, 2020

Looks like the rc is still affected

@ownbee
Copy link

ownbee commented Dec 5, 2020

Looks like the rc is still affected

Yes, I can't get it working either. Feels like it's never ending, been waiting months now for a proper fix. I assume chromecast is hard.

@ABotelho23
Copy link

I'm seeing the same thing here, BUT I actually get a message on the clients saying "MessageChromecastConnectionError", which I was not getting on 10.6.4 and lower. On 10.6.4 and lower it would just spin forever on the clients.

I tried tail -f on the server log while trying to cast, and it doesn't seem to spit out an error. Definitely a client-side error as far as I can tell from that.

@ownbee
Copy link

ownbee commented Dec 6, 2020

You are right, I also got "MessageChromecastConnectionError" which seem to come from the chromecast (or libs interfacing with it on client side). The error does not come with any details in the javascript. I also get a few packets sent from chromecast to server when trying to play a movie, so it seem the chromecast is reaching the server at least. I also does not get any errors on server side.

@thekoma
Copy link

thekoma commented Dec 8, 2020

i stepped into that problem and took a own hacky approach... container that grabs the origin /System/Info/Public, removes the LocalAddress and serves it back.

https://git.xsfx.dev/xsteadfastx/jellyfixer

You have a PR

@xsteadfastx
Copy link

i stepped into that problem and took a own hacky approach... container that grabs the origin /System/Info/Public, removes the LocalAddress and serves it back.
https://git.xsfx.dev/xsteadfastx/jellyfixer

You have a PR

reviewed it... one last question and i will merge and release :)

@Erriez
Copy link

Erriez commented Feb 14, 2021

I've MessageChromecastConnectionError when connecting to Chrome Cast as well and I'm using the following configuration on a Raspberry Pi 4:

Default Jellyfin reverse proxy configuration file:
${VOLUME_DIR}/swag/config/nginx/proxy-confs/jellyfin.subdomain.conf

docker-compose.yml

version: '3'

services:
  jellyfin:
    image: ghcr.io/linuxserver/jellyfin
    container_name: jellyfin
    restart: always
    environment:
      - PUID=$DOCKER_UID
      - PGID=$DOCKER_GID
      - TZ=${TZ}
    volumes:
      - ${VOLUME_DIR}/jellyfin/Public.json:/usr/share/nginx/html/System/Info/Public:ro
      - ${VOLUME_DIR}/jellyfin/library:/config
      - ${VOLUME_DIR}/share/photos:/data/photos
      - ${VOLUME_DIR}/share/movies:/data/movies
      - ${VOLUME_DIR}/share/music:/data/music
      - /opt/vc/lib:/opt/vc/lib # Path for Raspberry Pi OpenMAX libs optional.
    ports:
      - 8096:8096 # Http webUI.
      # - 8920:8920 #optional
      - 7359:7359/udp # Optional - Allows clients to discover Jellyfin on the local network.
      - 1900:1900/udp # Optional - Service discovery used by DNLA and clients.

  swag:
    image: ghcr.io/linuxserver/swag
    container_name: swag
    restart: always
    ports:
      - 80:80
      - 443:443
    cap_add:
      - NET_ADMIN
    environment:
      - PUID=$DOCKER_UID
      - PGID=$DOCKER_GID
      - EMAIL=${SWAG_EMAIL}
      - URL=${ROOT_DOMAIN}
      - SUBDOMAINS=${SWAG_SUBDOMAINS}
      - VALIDATION=${SWAG_VALIDATION}
      - DNSPLUGIN=${SWAG_DNSPLUGIN}
      - PROPAGATION=${SWAG_PROPAGATION}
      - ONLY_SUBDOMAINS=${SWAG_ONLY_SUBDOMAINS}
      - TZ=${TZ}
    volumes:
      - ${VOLUME_DIR}/swag/config:/config

Does anyone have a suggestion to get Chrome Cast up and running?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working regression Regression from previous build
Projects
None yet
Development

Successfully merging a pull request may close this issue.