275 comments

[ 0.19 ms ] story [ 5.5 ms ] thread
As a long time plex user with a lifetime pass, I always enjoy seeing the good progress with Jellyfin as it will increasingly give me a soft landing for when Plex finally does something to make me move. At the very least it will hopefully keep some of plex’s most user hostile behavior in check.

As an aside, I recently started having Claude help me with configuring my *arr stack and it has helped tremendously. I used to have to babysit and manually intervene on maybe 10% of requests, now it’s near zero, plus I got audiobook requests and subtitles working great. Granted a big part of the increased success was signing up for a Usenet service but of course Claude was able to configure it all and make it work. I was a little worried Claude would demure in the face of the task, but it was more than happy to help me acquire media in this way

> As an aside, I recently started having Claude help me with configuring my *arr stack and it has helped tremendously. I used to have to babysit and manually intervene on maybe 10% of requests, now it’s near zero

Any more details here? I hit this a lot and it's not too much work, but still pretty annoying.

I have had claude do the same, plus reorder nfs mounts, share templates, and do some init-container magic to start vpn/gluetun with port-forwarding, all in a k8s cluster. It's become so easy to manage and debug.
I just like the confirmation that AI is happy to be a Boatswain.
Claude is perfectly happy to do it and gives great suggestions. I can't imagine it will last, I did run into one situation where I wanted to archive all the media on a subscription site before my subscription expired, and it refused. But splitting it into one session to collect all URLs and a second session to plug them into yt-dlp with the right arguments worked just fine.
What are you using for audiobook requests? I also recently setup arr stack, but I saw readarr is depreciated and there doesn't seem to be a clear successor.
It’s been a while since I used it but lazylibrarian has worked for me in the past.

I tried shelfarr as well with some success a while back, but haven’t needed any new books lately since I’m busy catching up on the books I’ve downloaded (the Bible is long lol).

After reading a lot of reddit threads I settled on ReadMeABook[0] and it has been working great so far. One pretty cool feature is that it lets you connect an LLM API key and then you can have it make requests based on your library. I now have Fable 5.1 suggesting my next book.

[0]: https://github.com/kikootwo/readmeabook

Hello Mantis. Question: what do you do with the books? Is there kindle integration somehow?
I think most folks lean on Calibre for that. I've setup KOReader on my wife's Kobo and it looks at our local Calibre server for books.
I use it for audiobooks. They are served up by Plex and I use the Prologue iOS app which is a great audiobook listening experience.
If you don’t want to commit to one of the vibecoded no community arr clones for books then i recommend shelfmark. Lightweight grabber, easy to start with, easy to rip out later.
I like them both, but I can never give up plexamp. I’ve tried navidrome and various jellyfin clients but I keep going back.
For music, I use Navidrome + Symfonium. Not quite as smooth as Plexamp was (and there's nothing on par with Symfonium on desktop), but I disliked having my music and video commingled so it's been worthwhile for me.
Claude and jellyfin and HASS is great. Now my phone has a “door lock” which turns off the kids user’s access, but lets the current playing finish. And another “door lock” unlocks playing for ten minutes.
What do you mean by door lock, where does the code show up?
Hass can make things appear like light switches, etc, but if you did that (they can run arbitrary code) then the kids will learn that "Hey Siri, turn on Kids Play" will work.

But door locks refuse to unlock from Hey Siri, so you have to unlock and use your phone.

So I made them appear as door locks (my idea, heh, AI didn't come up with that).

Understood, so you have a virtual “home lock” on your phone that is actually a media unlock or whatever. Clever :) I also didn’t know HASS = home assistant
Yeah, home assistant is super powerful once you break out of the mold of "a light is a light, right" and realize that ANYTHING can be represented as state changes, and you can run arbitrary code based on it.

And with lights, locks, and brightness/color being able to be modeled in Hass's interface to HomeKit and Siri, you can basically do ANYTHING that can be turned into on/off, lock/unlock, or a slider.

You could probably build a remote paintball turret with it, camera for viewfinder, sliders for elevation, rotation, and azimuth, lock for arming, switch for fire.

unrelated to your otherwise helpful comment, I just wanted to note that it is "demur" (i.e. hesitate or object) you want in this case; "demure" is an adjective meaning shy or modest.
For what it’s worth, I am very happy with Jellyfin and the *arr suite. It took a bit of agent prodding to get them all playing nicely together and bypassing Cloudflare CAPTCHAs. However, it's pretty sweet when you get it all working.
> bypassing Cloudflare CAPTCHAs

Can you say more about this? I've never encountered this problem in nearly a decade of running the same stack.

With the *arr stack, some of the trackers it uses to search for a torrent will present a captcha when Prowlerr queries it for a search. If you integrate FlareSolverr and set up Prowlerr to submit queries through it for the trackers that have CAPTCHAs, it won't get blocked by them.
Yep. It really isn’t nefarious or abusive. I keep mine slowed down to not scan often to be considerate. Even private trackers can require it now.
Ah - I use Usenet, not Torrents, that'd explain it. Thanks!
Also a lifetime pass Plex user, I'll leave as soon as someone has a good solution for identifying raw Bluray rips automatically. Why do I have to manually name the episodes? We had CDDB last century, why isn't there an equivalent for raw video rips? The ripped data should be identical, a simple hash should uniquely identify it.
Are you describing a plex feature? I was under the impression they required the media to follow certain naming conventions. [1]

Maybe mkv-renamer is of use to you? [2]

1: https://support.plex.tv/articles/naming-and-organizing-your-...

2: https://github.com/ssanj/mkv-renamer

I'm describing a hypothetical feature that I want. Essentially an automatic version of mkv-renamer that can identify series, episodes, and special content based on the signature of the ripped files. For whatever reason, such a service doesn't even exist.
Does Filebot not do this for you? A quick glance suggests it does, but I'm not overly concerned with its decision-making; name matches are close enough.
That may actually be what I need, I'll give it try.
Thank you for starting this thread. Another lifetime plex pass user, interested in my choices. For now, I am happy on plex/plexamp. Good to know what jellyfin is at.
If there is one thing that needs to be re-written and consolidated it is the arrs ecosystem. Replacing/consolidating the arrs themselves is pretty straightforward. The trap that quickly becomes a token incinerator is incorporating the downloader into the library manager itself. A lot of learned lessons in that sabnzbd codebase.
As someone with coding projects in the is area would you care to elaborate on "a lot of learned lessons"?
sabnzbd is basically packaged decades of domain specific knowledge about deobfuscating media files
Things like when to cancel early, how to handle par2, obfuscation, rars within rars, decoding articles. Just a mountain of "huh, didn't think of that being a complex problem" that was resolved over time.

I was able to replace the arr suite + sabnzbd with my own rust+ts frankenstein but had I known how complex the usenet piece was going to be I would have separated it into two phases.

I agree. In particular, I think it needs declarative configuration, and it needs to stop storing configuration in a database.

It's insane that the current setup options are:

- Click through dozens of pages importing JSONs from TRaSH Guides, then do it all over again on the other app. - Run an app that basically does the same thing but over the REST API.

Lifetime pass user long before the ridiculous price hikes for it and the direction for the service going down a path I didn't want to support. You can run Plex and Jellyfin on the same server concurrently pointing to the same media files. My Plex server was still running until I was able to transfer everything over and their mobile app ecosystem got up to parity.
Both for simplicity and portability, I am a very happy user of https://firecore.com/infuse.

I guess it's less full featured as Plex or Jellyfin (it still more than covers the bases for video: format support, different video/audio/subtitle tracks, tv series recognition, skip intros, Trakt.tv etc.); but then again all it requires is any online storage, and the Infuse app (either on iDevice or AppleTV).

huh, yeah I should start an xbmc fork/reimagining. the limitations with the tools of the day are imagination. a LOT of the software I use these days are things I facilitated the creation of and a media player is definitely supposed to be on that list
I left Plex for Jellyfin + Infuse a couple of years ago, and I'm not looking back.

But the sore point right now is outside access, which Jellyfin really isn't made for. I set up Tailscale so I can connect Infuse to Jellyfin remotely. But that's not exactly as smooth as Plex. I can't give friends and family access, either, which was dead easy with Plex.

In terms of the UX, Infuse isn't very good, but it does the job okay. The built-in subtitle fetcher is amazing; that stuff never worked for me with Plex.

For people that don’t know, Infuse lets you use Jellyfin on Apple TV and it’s very helpful for day purpose
Crazy expensive though. It's basically a Plex subscription, just for the player.
Isn’t it something like $10/yr or something?
It's not as bad as I thought/misremembered. $23/year here in Denmark, and $140/lifetime.
I just bought a lifetime pro access , I think it was around 200$ but really worth it. I get all the updates for free.

Whenever I can, I buy my software now these days instead of renting it.

It seems like a strange juxtaposition to talk about buying vs. renting while getting updates for free.
(comment deleted)
Not as expensive as a Starbucks habit
There is also an open source tvOS client called Swiftfin. The experience isn't as good though.

You can also transcode your files to formats that the free version of Infuse supports if you are a miser.

Best to specify the formats you can play in the *arr tools than rely on client transcoding. I aim for media I can direct play and the filters in radarr and sonarr make that pretty easy. I also use tdarr to clean up / convert things I couldn't get a direct play file for.
... and is awesome even without Jellyfin - I have it installed on all devices including Apple TV, connected to family NAS through webdav.
I use port forwarding on my home router to open up jellyfin to outside access. it's not as pretty, but it works.
[dead]
tailscale + cloudflare for lets encrypt support. can then give family tailscale access
One does not need cloudflare for letsencrypt. The tooling has become really simple to use.
You do need a DNS service with API access for automatically creating/renewing the certificates for things that are only served over tailscale though, since they aren't publicly accessible for the letsencrypt servers to talk to.
I've got a Caddy instance setup which proxies my traffic and has dead easy integration for domain DNS registration. Super handy
Same, it's fantastic. As long as you don't need to support as many requests per second on your hardware as something like NGINX could, Caddy is the way to go.
Caddy is great, but doesn't solve the problem I was talking about on its own.

Caddy will get SSL certs automatically if it is exposed to the internet and DNS for that domain points to it, but if you are routing over tailscale exclusively Caddy can't automatically validate the domain names over ACME. There is a Caddy extension for doing DNS based validation, but that puts you back to needing a DNS provider with an API.

> There is a Caddy extension for doing DNS based validation, but that puts you back to needing a DNS provider with an API.

Yea, for clarity this is what i was describing. I use Porkbun's API and the Caddy instance isn't reachable from the internet, only local and over tailscale

I think you overestimate the technical capabilities of my family or their eagerness to install software. When I ran Plex, and nobody ever installed the Plex app like I recommended to them, even though it's one click away in all the app stores.
I mean, if they aren't even willing to download the one app that actually gets them the content they want to see, then *no* software will ever be something that this type of user will be interested in. Not everyone has to use an app, so why try and cater to an audience who clearly has zero interest? You're not gonna magically make it somehow even easier than "go to app store, download app" to the point that they'll use any piece of software.
No, the browser version of Plex is much simpler because you can just send a link. The receiver only needs to go through a simple "type your email and password" sign-up process, and that's it. Nothing to install, works everywhere.

Tailscale is exponentially worse, though. Not only would I have ask them to go to Jellyfin and sign up and log in, I would have to explain that they can't do that until they've installed the Tailscale app (which I have to explain because most non-techies do not know what a VPN is). Tailscale requires its own account, so they have to first sign up to that, and I have to add them as an external user first.

Jellyfin works just fine with remote access and multiple users.
I don't trust Jellyfin to be secure enough to be put on the public Internet.
Why is that? Did you have an issue with how it's set up? Or does it not do enough out of the box and leaves security for the administrator?
Is Plex/jellyfin even necessary for Infuse? I've been using Infuse for years now and it has direct access to my NAS to look for media content and just directly plays it. It's a such an amazing app and it plays everything I throw at it without any buffering or transcoding issues. The Pro version pretty much has all the necessary codecs, including all the dolby things for hdr/atmos. It just works so well.
Yeah I have Infuse only, and am happy with it. No need for jellyfin or whatever else. Honestly Infuse may be one of my best app purchases of these past 10 years…
>But the sore point right now is outside access, which Jellyfin really isn't made for. I set up Tailscale so I can connect Infuse to Jellyfin remotely. But that's not exactly as smooth as Plex. I can't give friends and family access, either, which was dead easy with Plex.

I'm confused about this bit. I installed jellyfin to provide outside access to me and my family/friends.

It wasn't difficult to make it available on the 'net, setting up new users is pretty simple and jellyfin has clients (both first and third party) for most platforms.

In fact, I went from never having used jellyfin to giving external access to friends/family within a few hours.

I'm sure I'm missing something, so if you wouldn't mind, I'd be very interested to hear your experience.

I don't believe in Jellyfin being secure enough to put on the public Internet. In my case, Jellyfin is on my home network, and the box has access to a lot of files and devices.
I have the exact same setup. I found Infuse a PITA to begin with. Now it works pretty dang well, even remotely. One big irritation though is the subtitles are always on by default, on Apple TV it's an issue as I can't find a way to disable the default haha! Sometimes there is also a delay between when Jellyfin can play a new video in the browser and when Infuse can play it even though it can see the file.

I do find Infuse significantly better than the Jellyfin apps though.

I also have a lifetime pass, but I'm becoming increasingly annoyed with Plex. Why do I have to regularly turn off their "recommended" stuff that is just ads for movies I can buy online? Why does it appear and re-appear?

Also, the Plex app for LG TV has been buggy and broken for years: some content will not play at all, some will not play if you ff/rewind, and some will not play until you physically turn your TV off and then on. Very annoying.

I'm glad to see competition.

> As an aside, I recently started having Claude help me with configuring my arr stack and it has helped tremendously.

LLMs have been AMAZING for home server maintenance and improvements. I have completed SO many of my "some day" tasks. I never have to read another fucking log file ever again. It has taken all of the friction out of the hobby. It's all* fun now.

I’ve set up literally hundreds of different self-hosted applications over the years on my homelab. I’ve configured the reverse proxy by hand, setup the docker containers, etc.

Now I can just tell Claude “Setup XYZ app on my server” and it does it all and leaves a note in my Obsidian vault documenting the service (setup instructions, backups, hostname, etc).

Trying out new things has never been easier now that the effort is near-0 to kick the tires.

I would caution against this approach. It's fine to have Claude write a setup script, or whatever you need, but don't run coding agents as your main user on your production machine with full access to your files or whatever your "homelab" consists of.
Yep. You should never let an LLM have access to the system. It's irresponsible as all get out.
Your personal computer? Eh. This afternoon Claude code diagnosed an issue I’ve had with my 4K displays since Tahoe, it would have taken me a week just to learn enough to try to figure it out. Now I have a cli tool which fixes it. I get a weekly report of Chezmoi drift across all my machines, including what I changed. This took me 30 minutes to set up. There are so many things it can simplify.

A production server with user data on it? I wouldn’t dare. My backed up MacBook? Truly valuable.

Next step: set up a scheduled job to read the logs to find any issues before they bite.
Being realistic, most of our home lab setups wouldn’t come close to “production ready” even without AI generated bugs. Relatively stable because they’re largely un-stressed, yes. Good enough for personal use because you can log in and fix anything, sure. Full of bugs, footguns and brain dead decisions because this is our hobby and not our 40 hour a week paid job? Also yes. Our new AI overlords will simply increase the number of buggy things we can deploy.
Hmm, I feel like I have a pretty decent … well, not production-ready, but it’s all in Ansible and I did have to rebuild it from that once, which ironed out most of the bugs in that and everything gets built according to the templates I have for Docker and non Docker setups.

Plus I have “itguy” now, a CLI that can deploy everything, check on status and show me logs. And it’s available via Slack and as an Alfred workflow. So yeah, I think that’s pretty close to production ready.

I still use the free version of Plex and got it set up in a jail on my FreeBSD server. Serves my needs for now, and also use Infuse like a lot of people here on my Apple TV 4K. I have no need to transcoding or anything because all my media consumption is at home these days. If Plex does shit the bed, I will have to rethink my setup for Jellyfin..
(comment deleted)
I've also got a lifetime Plex pass, but have moved on. I was tired of fighting Plex for what the home screen looked like. It seemed like every update there was more Plex bullshit and less of my actual media without digging through menus. I'd configure it to be just my media, and the next update ads and content from other streaming services kept showing up.
The success of jellyfin in recent years has affected me in one unexpected way: I have a project whose .com domain name starts with jelly* and at some point I started getting so many signups from confused Jellyfin users who thought it was related.

(fortunately it’s a niche thing, so I just closed signups and just give my prospective users a one time invite code)

Jellyfin works great for me. My only gripe is logging around library scanning being pretty difficult to interpret. I'd love to add a dedicated scanner log that focuses only on logs relating to scanning, which for me tends to be the trouble spot in these systems.

That said I very rarely would even need it, the last time I thought I did was when I had my under configured to not see R rated movies because of my kids, the logs were not clear that the movie was ever scanned so it was hard to realize.

Does this introduce basic UX changes, like saying that a media will be permanently lost instead of "will be removed from Jellyfin" which is inaccurate?

Edit: And making it more secure? Just because it is commonly for LAN doesn't mean it can be insecure

Including, but not limited to, sending passwords in cleartext on login.
As opposed to what? The password needs to reach the server. Encryption is the job of HTTPS.
... as opposed to using salted hashing like in every tutorial since 1990s.
I think you have some confusion between expectations upon the client and the server. This very site (and almost every other) sends your password in plaintext over form data when you sign in.

Hashing (and/or salting) a password client-side before sending it would offer next to no protection, as if the server is expecting this value and the attacker intercepts it, they could just replay the hashed value themselves. Why would they need to know the original password?

The salt for the password should also have been randomly generated when it was first created, and stored alongside the password in the database. The only way for the client to know this value would be to retrieve it based on username alone, when the request is first made. This would reduce the security of the system and allow a dedicated attacker much more leverage to try and crack that single password, if they knew only the username of the user.

The comment you're replying to is correct, encryption is the job of HTTPS.

I don't think this is what the GP meant, but he's accidentally correct in that there is indeed no good reason for a password to reach the server.

The client could do a challenge-response PAKE with the server, proving the client held the password while not transmitting it. The session cookie could be sent from the server as part of that exchange, encrypted so only the holder of the user's password could decrypt it.

That's not how the web works, but it's strictly superior to the accepted standard of the client sending the raw password to the server, and it would be secure even over an active MITM unencrypted link.

i believe the maintainers stance is that jellyfin should not be exposed and it should always be behind a vpn
Frankly at this point, everything that is not explicitly fully public should be...
not necessarily always a VPN, but you can also use a reverse proxy like caddy or nginx where encryption and security are primary concerns instead of something non-essential like in jellyfin.
I doubt that, how would that work? You would need to give all your friends a VPN login into your local network for all of their devices, including TVs.
or your friend can setup VPN on his Router box.
But then all of his traffic goes through my internet. Unless he has a special high end router that can only route specific domains.
You dont need high end box, a old mini pc running pfsense/opnsense is enough.
High end, as in feature rich.

If you think most non tech people can just casually find an old pc, install and setup pfsense, then you are out of touch with reality. And they also would have to let it run all the time and have space for it. That's just not something realistic. It's not an option for my friends. Might also break chromecast.

Most non tech people just subcribe to netflix/hbo/disney and call it a day.
Correct, most do. Still leaves a significant portion that does not want to sub to multiple streaming services. Be that as it may, I have multiple friends who I share my jellyfin with. Giving them all access to my network is just not an option. It's not.
Tailscale. Your friend just needs to be invited to your tailnet. Super easy to use with clients on all the major devices.
Even on TV? Without their other traffic is going through network? Also for non technical people?
Yes, I have Tailscale on my AppleTV. Only traffic attempting to reach your tailnet is routed to you, the rest is on his own network.

If you want to make it super easy for non technical people also use reverse proxies to your tailnet so jellyfin/plex is reachable at like “https://watch.example.com”. Pretty much the only friction for non technical people would be creating a tailscale account and being invited to tailnet I guess. But you could also just do that for them I suppose with auth keys

Their stance is actually that exposing it is fine
Reverse proxy works fine. There’s even a setting in Jellyfin to provide the proxy IP.
> like saying that a media will be permanently lost instead of "will be removed from Jellyfin" which is inaccurate?

I don't know if that changed, but I gave jellyfin only read only access to my movies.

[delayed]
This seems like spam in order to get people to sign up to a service with your referral link. It’s literally just a guide on how to create an account.
Subtitles are the Achilles heel of Jellyfin (at least the Android client sending the stream to Chromecast stick connected to the TV). I can see the subtitle present but it doesn't show on the movie. Ok, I will just add manually - can't, progress indicator loops forever. Ok, I will remove the existing subtitles and add - removal succeeds - addition fails. This is the same fiddling everytime. If it works, it is a miracle. I used to forget about the subtitles and start the movie - you could just fix it on the fly right?! Nope, now I do full prep before calling everyone that the movie is good to go.

This is not coming from a bad place - I am very appreciative of having a open source alternative to Plex. Just putting this out there in case it catches someone's interest to improve it.

Is that an old problem, or a problem that is still in this new v12?
Given v12 just came out and has a bunch of warnings regarding migration, I'm not going to jump on it yet. This is pre-v12 issue.
FWIW, Moonfin and Infuse both work flawlessly on an AppleTV.

I also remember Google TV working fine, but it seemed like ads got added to another part of the UI every month so I got sick of it.

Roku only supports text subtitles, so if you have picture subtitles (like a DVD or bluray), then you'll need to burn them in if you want to play on Roku.

SenPlayer is also very good on ATV.
Good to know; I missed that when looking for players. Probably because if you search the App Store for "jellyfin" on TvOS, it doesn't find SenPlayer
The default jellyfin client works great also on my NVIDIA shield.

Young children and non technical adults can use it as easily as any streaming app. I guess you can tweak and theme it endlessly to look like your favourite streaming app but I haven’t felt the need to so far.

Self-hosting always involves a bit of jankiness, if you can’t handle that then back to overpriced subscriptions and spyware you go.

Skip forward / back is so janky and annoying. Eg, left or right on the remote wheel moves the timeline, but doesn't change the play position until you press the center button. I wish there was an option to skip immediately.
I had this problem, but I fixed it by setting it up so it extracts all embedded subtitles into SRT files, and enabled a setting prevents Jellyfin from serving embedded subtitles.

From what I remember, some clients don't support streaming subtitles, so they must download them completely in advance, when the movie starts, before they start appearing. If you pick embedded subtitles with these clients, Jellyfin must extract the subtitles files immediately, and this takes a while depending on container format, file sizes and server load. External subtitles are faster.

> If you pick embedded subtitles with these clients, Jellyfin must extract the subtitles files immediately, and this takes a while depending on container format, file sizes and server load.

Really? How?

My expectation would be that extracting a subtitle file takes a few seconds at most. If you had to do it on the fly every time you watched anything in your library, it wouldn't matter.

I don't undestand how movie containers work, but I ran this on a 70 GB movie file to test:

    ffmpeg -i input.mkv -map 0:s:0 /tmp/subtitles.srt
The movie is 2 hours long, and the expected time to complete is 21 minutes. It seems like it's reading the entire file. This is on an average SATA SSD that is also being read/written to by the torrent client in the background.
Any chance you're doing a reencode to SRT? I don't see `-c copy`.

If I extract SRT subtitles from a 47 minute video, it takes about one second, so your two-hour duration isn't what's causing you to wait. You might be decoding two hours of extremely high-resolution pixels, but there's no actual need to do that either.

No, the subtitles are already in SRT. No video decoding is happening. ffmpeg was using 2% CPU and 0% GPU. The bottleneck is IO. ffmpeg must read the entire file, parse the container format and collect the subtitles.

If the SSD was completely idle and could reach it's max rated read speed of 550 MB/s, assuming absolutely no overhead, ffmpeg would finish in just over 2 minutes (70000 MB / 550 MB/s / 60 s/min = 2.12 min). So, in the best case scenario, I'll be stuck waiting for 2 minutes for the subtitles to appear, if the client doesn't time out. Real-world speeds are 10x slower, as we've seen, but they're more than 10x faster than 4K Blu-ray bitrates, so they're sufficient.

How large is your 47 minute video? If it's ~8 GB, which is typically on the high end for episodes from streaming services, and if you have an PCIe 3.0 NVMe SSD, which reads at ~6 GB/s, you'll extract subtitles in about 1 second.

IIRC, in many containers embedded subtitles will be interleaved with the video and audio atoms/boxes/packets/etc., and so pulling out the subtitles requires scanning the full file. Not quite as expensive as decoding or re-encoding, but still as slow as "stream the full file into memory and demux the streams"
Could you elaborate on how you set it up to extract the embedded subtitles?
There's an official plug-in in Jellyfin called "Subtitle Extract" that does it automatically for you.

I personally use Bazarr instead, because I also want to download subtitles for different languages. In Bazarr, Embedded Subtitles is just another subtitle provider that can fetch subtitles depending on your rules.

I think you don't want to do the "extract embedded subtitles" method, it's slow as hell and downloading external subtitles is much faster than the built-in extract, at least for HDR+4K mkv video which is what we end up with the most. Can take up to a minute for a 40 minute episode to extract the subtitles, which means you'll need to pause for a minute before you can watch with subtitles, with a 5950X CPU.
> which means you'll need to pause for a minute before you can watch with subtitles

The entire point is that it will extract the embedded subtitles ahead of time (when the media is added to the library) so Jellyfin doesn’t have to do it when you want to watch it.

Oh, I thought we were talking about Jellyfin's "extract subtitles on the fly when playing", which I think is how it works by default, which is what I described before.

If it's a async process that runs on import/update of the library, that sounds great. I'm guessing we're/you're talking about Bazarr then? Although I don't see it explicitly mentioned in this thread earlier. Or some other application?

There's an official plug-in called "Subtitle Extract" that does it in advance, no need for Bazarr :)

You can use this and then block embedded subtitles on a per-library basis, which is what I vaguely described a couple of posts up.

Uuuh, where has that been all this time?! And also, why isn't this the default behavior in core or at least optionally so, rather than a somewhat hidden plugin?! Fake outrage aside, thank you for the pointer. I did read it above, thought it was talking about something else, re-read it now and actually understood it, thanks for sticking with it! :)
No problem, glad I could help :)

I agree this should be easier to find and set up.

Do you use bazarr? That’s been the final fix for me with subtitles
I wasn't aware of this - thanks, I will give it a try.
[delayed]
Just use Tailscale. It’s always 1 day away from an 0-day anyway.
What about it is insecure with regards to exposing it to the internet?
There's nothing wrong with exposing it to the internet.

There have been exploits: https://github.com/jellyfin/jellyfin/security

The project is a fork of another project (Emby) and there has always been potential for user-supplied data ending up in command-line arguments, or exploitation of the (admin) user getting to upload various files. Nonetheless, all reported security bugs have been fixed promptly, and they're proactively sweeping through the full set of APIs they inherited, looking for possible exploit paths.

Most exploits required an authenticated user.

If you're concerned about this, you should run Jellyfin's docker image, with read-only mounts of your media library, and only give accounts to people you trust, which is how you should treat your personal media library anyway.

I think they are confusing Jellyfin with the crazy exploits in Plex recently.
https://github.com/jellyfin/jellyfin/issues/5415

A lot of Jellyfin's API doesn't require any authentication at all, as an example.

> ...

> Is this a massive red-flag security risk that actively exposes your data to the Internet? No.

>

> At this point, this over-4-year-old issue has gotten posted to HackerNews more than enough times and gotten quite enough unhelpful peanut-gallery comments like those above..

I've had my instance on the internet for years without issue. (Tailscale is great for me, but not feasible for family)
(comment deleted)
Sorry, but you are being one of those people there. Open source development lives on intrinsic motivation and community. If those things which you want, aren't things that motivate other to donate their free time to, you can implement them yourself, you can try throwing money at people to do it for you, you can take other unwanted chores from them to free their time, but you really ought not push negativity lime this.
Yeaaahhhhhh, you’re totally right
What have you contributed to the project?
You hate it so much that you're doing it yourself?
Upgrade experiences, anyone?

I have a ~40TB library and was still on 10.10.7 because of all the performance issues with 10.11. Upgraded straight to 12.0 and was impressed with how quick and painless it was! As the upgrade instructions warn about, some of my titles disappeared until a rescan added them back, but that was the only weirdness. The whole initial migration only took a few minutes.

Same here, though my migration took about 10 minutes, and the rescan took about 30 minutes. It also had a few minutes of generating trickplay images, though it must have just been filling in gaps, because generating trickplay images for a large library takes days.
I wrongly assumed I was below version 10.10.7 and tried to "upgrade" to it first as the migration guide said, but this completely blew up and the db migrations failed. I then tried to skip straight to 12 and that also crashed on startup during db migrations, so I just nuked the whole Jellyfin config and started from scratch.

Bit unfortunate how this can even happen, but it's on me for not checking or taking a backup first. The config/db really contain anything important anyways, other than "watched" markers that are already out of sync for me across Emby/Jellyfin/Plex.

So on what version where you?
Just pulled latest container and it just worked as far as I can tell.
Went from 10.11 to 12.0 and had zero issues. Scaleway/Ubuntu/Docker env with 8GB RAM.

Well one small niggle, I had a custom script setup on Caddy that overrides how certain buckets are sorted because my users are too lazy to follow my instructions. They changed the BucketID string in some way but this more to do with me having a custom script dependant on something they don't guarantee.

Hopefully they allow admins to change a users preferences in the future but currently it has to be done at the user level. I'm sure that will be in a future update.

if you're running on scaleway, can I ask what you're doing for media storage? scaleway block storage?
Scaleway Object Storage + rclone. Airbus is switching from AWS to Scaleway and has begun their migration. So they are enterprise grade but seem to have the ease of use of Digital Ocean which I migrated from last year. I get a bit overwhelmed by AWS sometimes in work so it's nice to use a simpler product for my personal setup.
Updated the rootless podman container and restarted, worked fine.
Probably 20TB here, 10.11.11, upgrade was smooth and quick. Maybe a few minutes of migration time?

I was actually just getting frustrated with Jellyfin performance and had just told my wife last night that I was switching back to Plex. I didn't realize it was a .11 thing. I just realized that it had gotten worse lately.

12 is working good in the browser so far, but I haven't really put it through the paces fully on Android.

ducks before people start throwing paper balls at me

Windows 11, upgrading jellyfin has literally never been an issue.

Windows 11? booooo

J/k whatever floats your boat my dude

yeah when I started my homelab journey I wanted my windows desktop to also be a server. Over time i moved to pis and other smaller footprint stuff but my media server still is my desktop pc and works via a remote wake up and sleep method over day/night cycle to manage less power consumption. only I use my jellyfin mostly so how can i watch stuff if i am asleep
yep, "just worked". Seems to be much better at properly categorizing some of the more stubborn corners of my library as well. Congrats to Jellyfin maintainers!
I had to go back from 10.11.x to 10.10.7 because the performance was bad, but I'm very confident they've fixed all the performance problems with 12.0.

I'm also confident they've found most of the bugs and have produced something you can just upgrade to, given they've had 7 release candidates over the past few months:

   12.0 RC1 - Jun 22
   12.0 RC2 - Jun 28
   12.0 RC3 - Jul 22
   12.0 RC4 - Aug 02
   12.0 RC5 - Aug 11
   12.0 RC6 - Aug 26
   12.0 RC7 - Sep 01
   12.0     - Sep 08
Overall it looks like a lot of solid testing has gone into this, I shouldn't have to go back to 10.11 again.
I have a plex pass but moved to jellyfin, because I can't get plex to reliably stream from my server at all. While jellyfin works so smoothly. Look forward to this update!
It sounds like a real pain in the ass upgrade, I'm thankful I've put off trying Jellyfin this long.
Stop jellyfin, update containers, start container, start library scan?

Just like all the updates before that.

Quite the opposite, the upgrade was completely painless for me. The only things that can trip it up are mentioned in the release notes: avoid multiple usernames that only differ in case and make sure you're upgrading from 10.10.7 or any 10.11.x.
Dow folks migrating frem Plex ; Codex/Sol had no issue transferring played/watched status to my new Jellyfin library.
I love jellyfin, been using it for years now, alongside the *ARR stack.

My young daughter recently started getting into audio books, so I installed Listenarr alongside a vibe coded mcp server [0] which I have running with all the other arr service mcp connections.

This allows the family to easily download and manage their media (err…Linux distributions) via Onyx AI, which I also have running with everything else on local box running microK8s, all on a relatively puny Geekom minipc with 16Gb

This whole setup is pretty straightforward to manage with Claude which has no issues working with K8s.

For those interested in the listenarr audiobook mcp: [0] https://github.com/leachuk/listenarr-mcp/blob/main/CLAUDE.md

Did they fix that thing where like you can’t have mixed movies and tv in the same folder without it going nuts
How would jellyfin be able to tell whether the video files in a directory are movies or tv? What does going nuts actually look like, and what causes it?
Not OP, but I've run into similar instances of Jellyfin "going nuts."

Mixed media type libraries are depreciated and "broken" according to the documentation[1], which is fair enough, but sometimes this results in weirdness if a TV-show is also part of a franchise and has associated TV-movies (e.g. the Battlestar Galactica reboot, Futurama, or Breaking Bad). If you want to keep those movies on your file system in a folder with the other stuff from the franchise, Jellyfin often can't handle it. And it's not obvious to new users whether these TV-movies belong in a TV-shows library or a movies library.

I've also noticed it cannot handle additional layers of folders (i.e. for Genres) in TV show libraries, but it can handle that layer in movie libraries. Failure mode (the "going nuts") looks like those genre folders recognized as bizarre or obscure television shows, and nothing scanned the next layer down.

I haven't looked into how their scanning algorithms work, but it's definitely frustrating that there's not a button or feature to say: "No, Jellyfin, this is a folder, not a show or movie. Try scanning again on the subtree starting here."

Honestly, any software that either silently/automatically reorganizes a user's files and folders (not Jellyfin, but there are others that do this... even FOSS projects) or demands a specific meta-hierarchy on the file system is frustrating to anyone who deliberately keeps their files and folders well-organized.

[1]: https://jellyfin.org/docs/general/server/media/mixed-movies-...

Are you sure? At least with Kodi for specials like Futurama you make a Season 0 with them that the scrapers understand. Seems like Jellyfin understands that too: https://jellyfin.org/docs/general/server/media/shows

I guess for Theatrical TV show movies like The Simpsons Movie it might be more complicated, but worse case you always create or edit your own NFO files with something like MediaElch and have Jellyfin use those.

I think it's better to have genres in the NFO files and not in the folder structure. A show or movie can easily fall into two or genres which is not going to get captured by a single folder.

I bit the bullet years ago and just have separate folders for the two, using recommended naming conventions.

I realised it doesn't improve my life, to care about folder structure and naming, so much that I insist on retaining it and hobbling the media browsing frontend. The media browser brings in massively more metadata than I would have personally collected and encoded into the filepath/filename, and makes it nicely hyperlinked and searchable. Screenshots, posters, backdrops, cast, director, ...

You may think differently. In which case, enjoy your UI being a series of nested folders.

What I have for mixed media are Jellyfin's Collections, where I can mix together films, TV series, music, books on any given topic. That's not accounting for TV show "specials" which live with the TV show, if TheTVDB.com honours it thusly.

> I realised it doesn't improve my life, to care about folder structure and naming, so much that I insist on retaining it and hobbling the media browsing frontend.

There's no good reason for any folder structure to hobble a media browsing frontend. There are multiple frontends I've tried for my personal library of ebooks (mostly Humble Bundles of software/hardware books), and a number of those frontends have an option that's basically one book per folder (i.e. all identically named files in that folder treated as different versions of the same book... epub, pdf, etc) and folders above that can be whatever you want. BookOrbit[1] supports arbitrary folder hierarchies and Readest[2] supports at least one level of intermediate hierarchy.

In the context of existing software counterexamples, Jellyfin's delicate sensitivity to folder meta-structure is a regression from the baseline expectation. But I'd agree that ultimately folder naming requirements for the media items themselves makes good sense.

> In which case, enjoy your UI being a series of nested folders.

When the Jellyfin UI reflects those nested folders, I can tell it to only rescan a specific subfolder when I add a movie, rather than checking the whole library for new content. Folders and hierarchical structure are objectively useful, though our search-addled brains make that less obvious than it used to be.

[1]: https://bookorbit.app/library-file-structure/#grouping-folde...

[2]: https://readest.com/docs/library#import

> There's no good reason for any folder structure to hobble a media browsing frontend.

Sure, but what I'm saying is that it was a price I was willing to pay. I tried a lot of other media browsing software and they just didn't meet my needs like Jellyfin did. Could Jellyfin be more flexible? Sure. Does it need to be for me? Not at the moment. I'm getting the benefit right away, and might stand to get more benefit in future if it becomes more flexible on path/filename parsing.

> a number of those frontends have an option that's basically one book per folder

Jellyfin already supports that, but currently only for movies. Seems entirely possible it could do that for books or TV episodes too, if someone volunteers the time to land the server and UI changes for it.

> When the Jellyfin UI reflects those nested folders, I can tell it to only rescan a specific subfolder when I add a movie, rather than checking the whole library for new content.

Jellyfin supports realtime monitoring with inotify so it can see new/updated files as you add them, but this depends on the filesystem supporting it, and also I think it still has a bug where doesn't work on library directory paths that are symlinks.

Jellyfin supports nested folders (Books, Music Videos and Other library types support a folder view), but their limitations are apparent: no homogenous filtering/sorting display, and for Music Videos and Other, no metadata collection.

Thanks. My collection has grown to the point where I'm considering adding some kind of front end to index/search/filter but this means that Jellyfin will not be an option. Probably I'll just end up hacking together some minimal custom solution.
I assume via metadata, classified externally, which is a large part of the selling point of Jellyfin
I have a trifling complaint about this, which is that it smacks of LLM aid throughout, especially in headings. I wish people would aggressively filter for these things--I have a technical writing SKILL.md that tries to remove all the AI tropes it finds and use simplified technical English (it's a thing, look it up) to do docs, and that makes one heck of a difference...
Exciting times, they really messed up with 10.11.x shipped half baked DB refactoring
Jellyfin has worked great so far for us, I never used Plex or Emby so cant compare. They recently made an official Tizen app too, so dont have to build and sideload anymore, just works.

One of the remaining issues is that the Samsung client remuxes if you select a secondary audio track[0] - apparently fixable by using the AVPlay player instead of the HTML player.

[0]: https://github.com/jellyfin/jellyfin-tizen/issues/337

Not sure if they support multiple OPDS catalogs now.

I am on v10 (using JF for music only) and with book plugin (forgot which one) it didn't offer to split books into multiple catalogs, which was a bit annoying. Maybe I missed it in v11. Solution for me was to vibecode a simplest OPDS server with 0 css and basic auth.

What's the situation on intro end ending detection and skipping?
Intro skipping should work; requires a plugin, may only work with the web client? I have the plugin installed, but it doesn't work with the Jellyfin addon for Kodi. Ending detection works fine; don't remember if it requires a plugin.
I get the "skip intro" / "skip credits" prompts while watching on Infuse, so yes it's possible, but it's specific to only certain shows (probably those with properly-titled chapters). I'm also not sure if the prompts appear in other clients; Infuse might have implemented it from scratch using the chapter titles.
Ah so it's library not finger print based? Only power user Plex feature I need.
As other have said the apps for devices is still the issue with Jellyfin.

For TV you pretty much have to use Kodi and all the decent theme require a surprising amount of other plug-ins to work...

Anyone know of a decent theme for Kodi that won't fall over next time it updates? I just need "Resume Watching", "Newly Added" and alphabetical lists.

Moonfin?
That looks nice but no Xbox support.
Swiftfin and InFuse are great for Apple TV. Yet another reason to use a streaming box.
I'd love a Kodi theme with the design and responsiveness of the Jellyfin Roku app but sadly nothing I've tried has come close. I always end up going back to the default Kodi theme - it's ugly but it works.

(I'd jump to Roku or Apple TV on my main setup in a heartbeat if they supported DV FEL and all audio passthrough formats.)

Wholphin is a great Android TV app, way better than the "original".
How does it compare to current Plex? Are there proper, usable apps for Apple TV and iOS already?
I recently switched from Plex's pretty terrible native players to Plezy (on iOS, iPadOS and tvOS).

Plezy supports both Plex and Jellyfin as a backend - I'm not sure if there is 100% feature parity.

Infuse is the best I've tried so far on Apple TV. They also make a version for iOS and iPadOS.

Neptune is an up-and-coming client that looks promising.

Literally last night I was trying to set up books in Jellyfin and dismayed to see the bookshelf plugin archived with no mention of ongoing support.

Very happy to see it’s been folded into the server!

Upgrade from 10.11.11 was also successful here - only took 2-3 minutes. Can definitely notice the performance improvement
Something I've long wanted is something far more minimal than jellyfin that just browses my library by folder but has a web player that can transcode/remux as needed for the browser. As it stands when I want to watch a film with someone elses computer I give VLC/whatever a link to a webdav URL and it streams from that. It'd just be nice to have it be in the browser.
Coming from Plex, I gave Jellyfin a try, but returned back to Plex after several months. My biggest gripes were poor subtitle support and inability to differintiate TV shows from movies stored in the same folder. Does this version improve these issues?
Can I ask why you have TV shows in the same folder? I have a /video folder and under that /tv /movies /kidsmovies /kidstv. Just kinda curious.
They probably had it set up that way for Plex, and didn't read the documentation about how Jellyfin needs its libraries organized.
Plenty of shows continue in a movie, like Firefly (2002) -> Serenity (2005), so I can see why you'd want to mix.
I get it’s a personal thing but yeah I’d still separate them. Tv != Movie.
I separate everything by decade > type > year (of start date). Don't even keep multiple seasons in the same folder if they are from different years. Still ends up mixing all types within a decade.

But I prefer splitting things by decades as a first level. The distinction of cinema, direct-to-video, TV show, TV movie, web and others isn't really that important to me.

I would even recommend separating all and any anime + animated movies from the rest. Different metadata sources, easier to browse.