by phantasmish | 2025-11-21 21:24:08+00:00
Jellyfin's a media server first and foremost.

Out of the box, what you get is a server with (Optionally! But included by default in e.g. the Docker image, I think) an official web UI.

It's multi-user, has decent parental controls, automatic metadata fetching from a bunch of sources, can live-transcode when a client needs it (I have that disabled because my server is too weak, LOL), lots of good stuff.

You'll manage it through the Web UI, mostly. Set-top platform clients tend not to include much in the way of management features. (which is fine, it's way more pleasant to do that through a browser)

The web UI is also a Netflix-alike interface. Watch straight from the browser, if you like.

-------------

The one major concession that puts some people off it is that it works butter smooth if your file naming conventions match what it expects, but it gets a lot less-pleasant if they don't. There are some minor variations allowed but mine's basically like:

/movies/Apocalypse Now (1979)/Apocalypse Now (1979).mp4 /movies/Apocalypse Now (1979)/Apocalypse Now (1979).en.srt /movies/Apocalypse Now (1979)/Apocalypse Now (1979).fr.srt /movies/Apocalypse Now (1979)/Apocalypse Now (1979) - Redux.mp4 /movies/Apocalypse Now (1979)/Apocalypse Now (1979) - Redux.en.srt /movies/Apocalypse Now (1979)/Apocalypse Now (1979) - Final Cut.mkv /movies/Apocalypse Now (1979)/extras/The Making of Apocalypse Now.mkv /movies/Apocalypse Now (1979)/extras/Trailer.mkv

For movies. This demonstrates naming for the movies themselves (in this case, three different cuts of the same movie), extra features (you can change the extra features folder name if you like; it may default to "featurettes" and I may have changed mine, can't recall for sure) and external subtitles. I think you can handle external audio files similarly, if you have any of that going on. There are also ways to categorize special features into like trailers or whatever, with directories, but I haven't bothered with that.

I think there is a way to put your subtitles in a "subs" directory or something like that, but I don't do it. Then again I rarely keep more than two sub languages, maybe three or four total files if there are separate SDH options, for a given video. Usually just English and if it's a foreign film maybe the original language's subtitles (the French file for Apocalypse Now above is just an example, I didn't look at a real directory to write it)

For TV:

/tv/The Wire (2002)/Season 0/s00e08 - Reunion.mkv /tv/The Wire (2002)/Season 0/s00e10 - Season 1 gag reel.mkv /tv/The Wire (2002)/Season 1/s01e01.mkv /tv/The Wire (2002)/Season 1/s01e02 - The Detail.mkv

The naming on these is pretty flexible. Basically as long as it can find the series (the year helps a lot) and everything's got `sXXeXX` somewhere in it, it'll be fine. Spaces, dots, dashes, doesn't affect much. "asdf.s03e05 - Some Name (stuff in parens).mkv" will find TheTVDB's entry for season 3, episode 5 (even if the name and all that in the file name are wrong, doesn't matter, it ignores that). External subtitles work like for movies (just stick them alongside the video files)

One pitfall: every now and then you find a case where DVD/BluRay and aired orders differ. TheTVDB usually records multiple orders in these cases. I dunno how to force Jellyfin to prefer one or the other, I just figure out which it's preferring (usually the one TheTVDB shows you on the Web by default, I think?) and adjust to that.

Also note that rarely (but sometimes for important cases, like e.g. Looney Tunes) TheTVDB uses years for the seasons. So you'll want "Season 1965" and such for those. No big deal, just a weird quirk of certain shows' metadata. Not that common.

I think you can name the "specials" directory to... specials, and maybe even give it an arbitrary name in the Jellyfin settings, but I like "Season 0" or "Season 00" (either works, prepended zeros are ignored, I have both hanging around) because it matches the special episode naming in TheTVDB (like "s00eXX").

In a pinch, you can override which IMDB, TMDB, TheTVDB, et c. ID that Jellyfin decided belonged to the movie or TV show, using the web UI, and make it re-scrape the metadata. Usually it's better to figure out why it got it wrong and fix that instead—that way you don't even have to care about Jellyfin's database of scanned metadata, you can always just have it re-create it from scratch with little or no fuss. (and you can also set it to write the metadata alongside your shows and movies in files, like Kodi can)

I think there might be a way to put things like IMDB IDs directly in file names to make it even more clear what you mean, but "name (year)" has been so reliable for me I've never bothered to look into it.

I base my naming and years on what I find in the metadata sources themselves, usually IMDB and TheTVDB for me. Surprisingly often, Wikipedia disagrees with these, and sometimes [ahem] acquired files also have file names recording years that disagree with those sources. Usually it seems to be a festival-circuit vs. wide-release thing, as those often fall in different years. The metadata source should win, since otherwise it'll make auto-scanning worse.

Some people are really set on things like having their movies categorized in folders by director or whatever, and that doesn't work too well with Jellyfin.

(I know that file naming explanation is a lot, but it's really not that complicated in practice, and there are docs but I found there were some "but can I..." or "is it necessary to..." gaps in it for me that I've tried to fill in above)

DESPITE the impression probably given by all that text, I've found this one of the greatest parts of Jellyfin. Delete a file? After a couple minutes, it's gone from the UI. Add some files? In a couple minutes, they show up. (and you can force re-scans to speed it up). Slightly rename a file? But Jellyfin still reads it as the same movie from its metadata source? Your watch history survives. Hell I think you can even delete a movie, then add it again later, and your watch history survives (as long as Jellyfin decides it's the same movie by ID). There's no cruft that hangs around to deal with. It's very low-stress. Like 99% of my "management" of Jellyfin is just rsycing files, LOL.

-----------

As for non-Web clients:

- There's an official Roku client, but... most Roku devices have pretty limited codec support. The client works great though. If your server can transcode, this may be a totally fine choice. It's what I used for quite a while until enough of my files were in formats newer than h.264 that it was no longer viable.

- AppleTV has an official client. It's pretty good, but... if you can't transcode, there's one somewhat-common Dolby audio format (I forget which exactly) that AppleTV doesn't have a license to, so it causes problems. However, for that problem there's:

- Infuse (also AppleTV). It's amazing. The recent release supports multiple user accounts with different server access settings (not only can they log into Jellyfin with different credentials, they could conceivably use totally different servers), which is brilliant if you want parental controls or just to have different "watched" lists. It's free but there's a paid version with a few extra features that includes a license to that tricky audio format. I've been using this for years, at this point, and aside from wishing it supported multiple accounts (and it does now, as of very recently!) I've had no trouble with it at all. Also, Infuse supports other media servers as backends.

There are clients for tons of other platforms, too. And you can always Airplay or whatever from (say) a laptop.

----------

For going on the road (and short of taking your server with you) I have used two options:

- You can just use it directly over a VPN to your house, like Tailscale, if the client end's connection is solid (and your home connection is good, for that matter). I've streamed mid-quality 4K over such an arrangement, halfway across the US. You can even connect an AppleTV to Tailscale and take the AppleTV with you (it's much smaller than most servers, lol) for the full at-home experience while traveling (Christmas movie marathon at the in-laws' house this holiday season?)

- Long road trip with the kids and want them to watch Apollo 13 (and perhaps a couple Disney movies) while you drive to Cape Canaveral? Browse your Jellyfin web UI on the tablet they'll use, and download the file(s) you want straight from there. Play files in VLC. Done, no internet connection required. Being able to use the web UI is nice because you can browse categories and such, it's actually a fair bit better than something like using an SFTP client.