That said, I don't actually like Jellyfin, and I wish it weren't implemented in such a Windows-centric language framework.
Once I found out that Jellyfin existed, I excitedly spun up an instance and put all my media on it. It can't handle any AVI videos and lags a lot more than my Plex VM with exactly the same specs. Worst of all, it can't detect my external Chromecast, only the one built into my smart TV.
After assessing how well Jellyfin worked, I had to hang my head in defeat and return to using Plex. I can see that Jellyfin has a very active user / developer community on Matrix, and I bet things will get better.
EDIT: I accidentally said Windows-centric above, but what I meant was Microsoft-centric. I meant the company and not their OS. Leaving it the "wrong" way above for posterity.
"The .NET Framework (pronounced as 'dot net') is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows".
The official documentation for both C# [1] and .NET Framework [2] live on Microsoft.com.
I would say the above constitutes a pretty Windows-centric existence relative to some other vendor-agnostic languages, but maybe we're saying different things. What did you mean?
Refs
----
0: https://en.wikipedia.org/wiki/.NET_Framework
1: https://docs.microsoft.com/en-us/dotnet/csharp/
2: https://dotnet.microsoft.com/en-us/download/dotnet-framework
And the documentation is on Microsoft's site because it was originally developed at Microsoft.
"Free. Cross-platform. Open source. A developer platform for building all your apps."
The download page for .NET which includes downloads for Windows, MacOS and Linux is https://dotnet.microsoft.com/en-us/download
What the GP meant is exactly what they said, "C# and .net 6 are not windows-centric.", sadly it shares a name with .Net Framework which was windows centric.
There are several GUI libraries that are still Windows-only (e.g. Winform, WPF, etc.), but the latest one MAUI targets MacOS as well as Windows desktops, in addition to iOS and Android.
Just glancing at the code on GitHub, Jellyfin is primarily an ASP.NET web server targeting .NET 6. The download <https://jellyfin.org/downloads/> page shows a wealth of platforms, of which Windows is only one.
The original statement suggested the Jellyfin was somehow weaker on other platforms than Windows when there's nothing to suggest that there isn't parity on all supported platforms.
The .NET team has put a lot of effort into shedding its Windows-only past. I'm honestly not sure how FOSS the platform is, but at least some of it is open-source.
I was also not aware that .NET 6 is not the same as .NET Framework, so that was my mistake. I'm partly going to blame my ignorance on Microsoft for that one; for us folks that don't develop in M$ land, these distinctions can be subtle.
What I _meant_ to say was that I wish it weren't such a Microsoft-centric language framework.
XBMC (now called Kodi) still exist and is open source. I’ve been using it for going on 15 years now and it’s never disappointed.
Kodi's for running on your set-top box, mostly. Like, yes, you can link Kodi instances together and stuff like that, but it's mainly for running attached to a TV.
I've tried with Kodi off and on, never really being happy with it, since it was still XBMC. I much prefer the Jellyfin model of operation. I spend a lot more time using it and a lot less time having to mess around with it, while using more features than I ever even tried to with Kodi.
That's an unfortunate holdover from it's origin as an Emby fork.
> Once I found out that Jellyfin existed, I excitedly spun up an instance and put all my media on it. It can't handle any AVI videos and lags a lot more than my Plex VM with exactly the same specs.
AVI is just a container format and Jellyfin leverages ffmpeg to do most of the actual decoding work, so that sounds like an issue with the VM's ffmpeg. Jellyfin also doesn't enable hardware decoding by default; could be related? I'm not sure what Plex does (for codecs/etc).
Unfortunate? My initial guess on first contact with the project was that it'd be some Node thing. I was so relieved to see it wasn't. My unkind but honest and built-on-experience assessment is that it's a big part of why it's so not-shitty. C#'s a great choice for a backend language.
Also just a note, C#/.NET is cross platform and totally open source. I run an open source app that is in .NET, like Jellyfin, but just for reading and it runs of everything, including Pis.
If that worked (and I'm not sure if its a cert problem or something else) I'd be happily away from Emby/Plex and every other option I've used in the past.
I just made a domain name for all of my local network services. Each service gets a subdomain that resolves to a local IP address, so like jellyfin.mydomain.com -> 10.x.x.x. Then just do DNS validation with letsencrypt. Boom, valid cert.
Oh, and for some reason local storage deletion doesn't work for me on iOS -- need to investigate that. But if you want to listen to music that's stored on Jellyfin and store some for offline use, it's great so far. Just needs some small stuff built out!
The Android app works really well on a Shield, and is much more pleasant to use. Can't vouch for other devices, and Android experience, especially Android TV, can vary a lot with the device. The Shield also handles more video codecs and can pass through more audio formats than my Roku can, which means less transcoding, which means my poor, weak old server doesn't get abused while still only barely managing to generate a slideshow. In fact, I'm not sure I have any files that the Shield can't handle natively.
I love, love, love having a Web interface to use when I want to change things. Mixing the library & settings management interface with the "6-foot" remote-friendly interface, as on Kodi/XBMC, is a UI disaster. It's also very nice as a fallback streaming option, and works way better than I'd have expected.
You do have to have your media metadata correct though, e.g. ID3 tags, etc.
You get the whole service, open source, easy to run as a docker container or on K8s, love the web UI.
#/bin/bash
docker run -d \
--volume /opt/jellyfin/config:/config \
--volume /opt/jellyfin/cache:/cache \
--net=host \
--restart=unless-stopped \
jellyfin/jellyfin:10.7.7-amd64
That's "docker, run this and detach the console...""Also, mount these two directories in the image, to where Jellyfin expects to store its config, so that stuff persists across container restarts and upgrades..."
"... uh, I don't remember what --net=host does, I think maybe it directly exposes the container's ports on the host interface, because I was being lazy when I wrote this? Anyway, it works..."
".. restart this unless I explicitly stop it..."
"... and run this official Jellyfin image, at this particular version"
Then after the second "--volume" insert more lines for every folder you want to map in, like so:
--volume /mnt/storage/movies:/media/Movies \
--volume /mnt/storage/tv:/media/TV \
--volume /mnt/storage/kid-movies:/media/Kids \
--volume /mnt/storage/music:/media/Music \
Add as many as you like.You'll see the directories on the right of the ":" show up in the Jellyfin UI, where you can add them as media sources and tell it what's in them, who has access (say, granting some users access only to that "Kids" library), et c.
Save as "jellyfin.sh" or whatever, and chmod +x. Run it. Done. To upgrade the version, change the last line to the new version, kill the container with a docker command, and run the script again. Do the same if you want to add more directories.
(might want to check the version, that may not be latest, it's just what mine is running right now)
You could also do it with docker-compose, I just tend not to do that unless I'm dealing with a container that depends on other containers.
Works ~anywhere that can run Docker containers. Doesn't matter which distro you're using. I'm pretty sure it even comes back up on system restart, and I didn't do any extra work to make that happen. Self-contained, simple, and clean.
[EDIT] To be clear, you also need to create those "/opt/jellyfin/config" and "cache" directories. The left side is what's on the host filesystem. But, you can put those anywhere, they don't have to go in "/opt".
Helpfully, the "--volume" list is also a complete list of everything (aside from the shell file itself) that you might want to back up. Which is one of the things I love about configuring services with Docker.
"Note that this project is supported on all major operating systems except FreeBSD, which is still incompatible."
Considering both Plex and Emby support FreeBSD, I'm sad to to learn that Jellyfin does not.There's a Jellyfin chart on TrueCharts as well.
[0] https://www.truenas.com/docs/scale/gettingstarted/migratingf...
Besides, the FreeBSD based TrueNAS Core will almost certainly be deprecated and replaced with Linux based TrueNAS Scale within the nest couple of years. Further strengthening the idea that this is a pointless platform to support.
(As for music, I ended up just running Airsonic in another container on the same box, so all set there till something better comes along. Navidrome, maybe...)