A cozy living room setup shows music streaming across a laptop, phone, and home audio system.
Brian Burgess at XDA Developers describes a familiar home-lab project. He re-ripped an old CD collection to lossless files and put them on a Jellyfin server. Then he used an open-source client called JellyBox to listen from anywhere. The idea is simple and the setup is mostly ordinary PC and server work. The details are where it gets useful, because JellyBox's own documentation adds limits the write-up doesn't mention.

A cozy living room setup shows music streaming across a laptop, phone, and home audio system. The setup in brief​

Burgess says JellyBox is a client, not a server. The project's README says you need access to a running Jellyfin, Emby or Navidrome server with a music library on it. The division of labor looks like this:

  • Ripping: CDs are converted to lossless files. Burgess had most of his collection ripped as MP3s more than 20 years ago, so he re-ripped it. He doesn't name his ripping software or settings.
  • Hosting: The files live on a Jellyfin server and serve as his own streaming service.
  • Listening: JellyBox acts as a music-only front end on phones, Macs, PCs and other screens.

Burgess says he subjectively noticed better sound, and he lists three reasons for doing this:

  • Higher lossless tiers on streaming services cost more.
  • He doesn't truly own that music.
  • Catalog titles sometimes disappear from those services.

Why a music-only client matters​

Burgess contrasts JellyBox with video-first Jellyfin clients such as Findroid and Streamyfin, and with all-media apps such as the official clients and Moonfin. His argument is that browsing albums, bands and artists gets clumsy when everything shares one interface.

JellyBox's own pitch is that it gives you Spotify-like features using only your own self-hosted music library. The developer says it is written in Flutter and compiled to a real binary for each platform without adding electron or tauri overhead. Burgess mentions smart playlists, search, cover art, and lyrics via the LRCLIB-backed synced lyrics plugin. He also likes that it shows the full bitrate of the file that is playing.

What Windows users should know​

The app isn't Mac-only, and the project's README lists a Windows installer .exe or portable .zip. It also lists a Windows media overlay with artwork and transport controls in the system media popup, plus media-key support. The home page also lists macOS, Linux, iOS and Android, along with CarPlay and Android Auto.

JellyBox's FAQ gives these platform requirements:

  • iOS 17.4 or later
  • macOS 12 or later
  • Linux on x86_64 or ARM64, with glibc 2.38 or newer
  • Raspberry Pi 4 and 5 on a 64-bit Debian 13 or Ubuntu 24.04 base

That last item fits Burgess's idea of a Pi-based jukebox.

Checking what you're actually hearing​

A caveat on the sound-quality claim: Burgess's "better audio quality" is his personal impression. He doesn't describe a controlled comparison. FLAC preserves the encoded audio without lossy compression, but whether you can hear a difference from a good MP3 depends on your ears, your gear and the encode settings.

JellyBox does give you a way to verify the playback chain. Its FAQ says FLAC and ALAC play at full quality. If a device can't handle a format, such as ALAC on Android, the server converts it to FLAC, so it stays lossless. The player bar also reports codec, bitrate and sample rate. That lets you confirm the app is playing your FLAC rather than a transcode.

Library setup trap​

If albums don't show up in JellyBox but look fine in Jellyfin, check the library type. The FAQ says JellyBox only works with Music libraries. Depending on when a library was created, its content type may be empty or "General." The fix it gives is to open the Jellyfin admin dashboard and change the library type to Music. The FAQ also mentions an incomplete library migration from Jellyfin 10.x to 12 as another cause. It suggests rescanning first, and if that fails, removing and recreating the library.

Remote access without port forwarding​

Burgess praises the remote-access plugin because it needs no router changes. JellyBox's documentation lays out the requirements and steps:

  1. You need Jellyfin 10.11 or later and JellyBox 2.10 or later.
  2. In the Jellyfin dashboard, add the JellyBox plugin repository under Plugins → Repositories.
  3. Install "JellyBox Remote Access" from the catalog and restart Jellyfin.
  4. Open the plugin page and choose Connect to Jellybox Link, then sign in and enter the code.
  5. Open JellyBox once on your home network with each account that will listen remotely.

The mechanism is that the plugin opens one outbound connection to a relay. At home the app connects directly. Away from home, it switches to the relay when the home address stops answering. The developer says traffic is end-to-end encrypted and the relay can't read your library or audio. That is the project's own claim, not an independent audit.

The limits matter for planning:

  • It's Jellyfin only for now. Emby and Navidrome aren't supported yet.
  • It's JellyBox only. The Jellyfin web UI and other apps can't use it.
  • Jellyfin treats relay listeners as local, so its remote bitrate limits don't apply. You set cellular quality inside JellyBox.
  • Each remote Jellyfin user takes a seat, and the seat count depends on your Jellybox Link plan. Users without a password can't get one.

Burgess says it needs no "port forwarding, reverse proxies, or VPNs." That is true for this route, but you aren't locked out of the traditional options. If you already use Tailscale or a reverse proxy, you can add that address in Settings → Server. The app then tries home, then your address, then the relay.

Continuity: handy, but experimental​

Burgess pauses a track on his Mac and resumes on a PC or phone. The documentation calls this Continuity, and compares it to Spotify Connect for your own library. It requires signing in to a Jellybox Link account on each device, and every device must use the same server. Link passes queue item IDs, the playback position and which device is playing. It doesn't see or store the audio or the library contents.

The "any device" framing needs qualifiers, because the docs say:

  • Continuity is experimental, so expect the occasional delay or rough edge.
  • An iPhone can take over playback only while JellyBox is running, because iOS won't let a background app start playing on its own.
  • A laptop must be awake with the app open.
  • A sleeping Android phone can be woken from the device menu.

Offline listening and data limits​

Offline downloads are the other piece of the portability story. Per the FAQ, you can download albums and playlists and play them with no network. Downloaded playlists update when they change on the server. For patchy coverage, the app caches upcoming queue tracks ahead of time. You can set separate streaming quality for Wi-Fi and mobile data, and lower quality is converted on your server before it is sent.

Burgess says you can drop FLAC streams to 320 Kbps or less. The documentation confirms configurable quality, but the pages I checked don't name 320 Kbps as a preset, so treat that figure as his description of his own setup.

Privacy​

JellyBox says your music, library and server login never reach the developer. The FAQ says the app sends one anonymous "app opened" event with your operating system name, plus crash reports. You can turn both off in Settings. Remote access shares only a server ID with the relay so it can route requests.

The practical takeaways​

This is a reasonable model for anyone with a CD collection and a spare PC, NAS or Pi:

  • Ripping is still the heavy lift. Burgess admits it is tedious for a large collection.
  • Lossless files take real storage, and the server needs upkeep.
  • Remote access and Continuity depend on a Jellybox Link account, and remote seats depend on its plan.
  • You trade a subscription for ownership and maintenance. Whether that is a good deal depends on how much you value controlling your own library.

Burgess's pitch is that, once the CDs are digitized, the app makes the finished library portable. His claims about sound and convenience are one reviewer's experience. The documented features back up the portability, with the caveats above.

 

References

  1. I built a self-hosted Spotify for my lossless CD rips, and this open-source app made it portable XDA 2026-11-08T13:31:20+00:00
  2. JellyBox FAQ: Jellyfin, Emby & Navidrome music player jellybox.app
  3. Continuity: move playback between devices - JellyBox jellybox.app