Open source media servers for video, music and audiobooks
Self-hosted servers that index the movies, shows, music and audiobooks you already own and stream them to your browser, phone, TV or receiver. None of them supplies content; they replace the server and the apps, not a catalog.
12 apps, sorted by GitHub stars as of 21 October 2026. Guide updated .
-
Jellyfin
Self-hosted server for movies, TV, music, books and live TV, with no paid tier
-
Navidrome
Lightweight music server with a web player and Subsonic API support
-
Koel
Web-based personal music streaming server with a polished player, built on Laravel and Vue
-
Audiobookshelf
Self-hosted audiobook and podcast server with progress sync across devices
-
Black Candy
Self-hosted music streaming server in a single Docker image, with its own iOS and Android apps
-
Ampache
Long-running PHP music and video streaming server that speaks almost every client protocol
-
Polaris
Fast Rust music server built for very large collections, with no premium version
-
Universal Media Server
DLNA, UPnP and web media server that transcodes for TVs, consoles and browsers
-
gonic
Small Subsonic-compatible music server in Go that browses by folder or by tags
-
Kyoo
Low-maintenance video server for movies, series and anime that needs no folder structure
-
Swing Music
Self-hosted music player and streaming server with a streaming-app style interface
-
Gerbera
Lightweight UPnP media server in C++ for TVs, receivers and other home network players
Compare at a glance
| App | License | Self-hosting needs | Hosted version |
|---|---|---|---|
| Ampache | AGPL-3.0-or-later | MySQL or MariaDB, Web server with URL rewriting, FFmpeg (for transcoding) | No |
| Audiobookshelf | GPL-3.0 | FFmpeg, SQLite | No |
| Black Candy | MIT | Docker | No |
| Gerbera | GPL-2.0 | libupnp or libnpupnp, SQLite (or MySQL/MariaDB, PostgreSQL) | No |
| gonic | GPL-3.0 | FFmpeg (optional, for transcoding), mpv (optional, for jukebox) | No |
| Jellyfin | GPL-2.0 | FFmpeg (jellyfin-ffmpeg) | No |
| Koel | MIT | MySQL, MariaDB, PostgreSQL or SQLite, FFmpeg | No |
| Kyoo | GPL-3.0 | Docker Compose, PostgreSQL | No |
| Navidrome | GPL-3.0 | FFmpeg | No |
| Polaris | MIT | Nothing beyond the app | No |
| Swing Music | AGPL-3.0 | Nothing beyond the app | No |
| Universal Media Server | GPL-2.0 | Java 17 (bundled except on ARM), MediaInfo, VLC, MPlayer and MEncoder (Linux) | No |
License exceptions, such as proprietary directories or paid plugins, are explained on each app page.
Find an alternative to
Choosing media servers software
Four kinds of media server
The tools in this category share one job, serving files you own to other devices, but they approach it in different ways.
- All-in-one video servers scan movies and series, fetch artwork and descriptions online, transcode on the fly and ship apps for TVs, phones and consoles. Jellyfin is the established choice and also covers music, books, photos and live TV. Kyoo is a newer, video-only server that needs no particular folder structure.
- Music servers are much lighter. Most implement the Subsonic API or its OpenSubsonic extensions, which means many third-party mobile and desktop apps work with them: Navidrome, gonic, Ampache and Koel all do. Black Candy, Polaris and Swing Music rely on their own web player and apps instead.
- Audiobook and podcast servers add what music servers lack: per-user listening progress synced between devices, chapters and podcast downloads. Audiobookshelf is the main one.
- UPnP/DLNA servers publish media on the home network so that TVs, receivers and consoles can browse it from their own menus, with no app to install. Universal Media Server focuses on transcoding and device profiles; Gerbera is a small C++ server that runs even on routers. Neither is meant for streaming over the internet.
What to check before you choose
- Media types. Most video servers treat audiobooks as plain music. Jellyfin handles the widest range; some people run Jellyfin for video next to Navidrome or Audiobookshelf.
- Clients for your devices. Check that there is an app for each TV platform, console and phone you use. For music, Subsonic/OpenSubsonic support matters more than the server’s own player, because it opens up the whole client ecosystem. Navidrome (experimental) and Ampache 8 (opt-in) also offer a Jellyfin-compatible API.
- Transcoding load. Video transcoding is the heaviest task in this category. Jellyfin’s documentation strongly recommends a GPU or integrated GPU with hardware acceleration and describes most single-board computers as too slow. Music servers run comfortably on a Raspberry Pi.
- Remote access. Open source servers do not route your traffic through a vendor relay. To listen or watch away from home you expose the server yourself through a reverse proxy with HTTPS, a VPN or port forwarding. Swing Music’s premium plan is the exception, offering subdomains for reaching your own server.
- How your library is organized. Navidrome relies on tags and has no true folder browsing; gonic and Ampache can follow folders; Kyoo needs no structure; Audiobookshelf expects one folder per book.
- Footprint. A single Go or Rust binary with SQLite (Navidrome, gonic, Polaris) is a much smaller commitment than a PHP application with MySQL (Ampache) or a set of Docker services with PostgreSQL (Kyoo).
- License and paid editions. Most tools here are GPL, AGPL or MIT with nothing held back. Two are open core: Koel’s paid Plus edition adds private per-user libraries, folder browsing, cloud storage and single sign-on, and Swing Music keeps features such as transcoding and daily mixes in a private premium module.
Moving from Plex or Spotify
No app here documents an importer for Plex watch history or ratings. Because Plex libraries are built from your own files, pointing a new server at the same folders rebuilds the library, with metadata fetched again from online sources, but watched status and ratings do not come across. Leaving Spotify is a different kind of move: a self-hosted server only plays music you own, so the work is building or digitizing a collection, not migrating an account.
Protocols and standards
OpenSubsonic is a community-maintained, openly developed set of optional extensions to the Subsonic API that stay backward compatible, so servers and clients that use them still work with those that do not; its extensions add features such as song lyrics. UPnP and DLNA are local-network standards for discovery and playback; Jellyfin moved its DLNA support into an official plugin in version 10.9, while Gerbera and Universal Media Server are built around it.
Projects not listed
Emby is not included because it became closed source with version 4; Jellyfin started in December 2018 as a fork of Emby 3.5.2. Funkwhale, a federated music server, is developed on its own GitLab instance rather than GitHub, which the site cannot track yet. Airsonic-Advanced has had no commits on its main branch since April 2024. Music Assistant controls playback on speakers from Home Assistant, and Lyrion Music Server serves Squeezebox-type network players; neither is a server that streams a library to client apps. We found no notable source-available media server under licenses such as BSL or SSPL; the main proprietary products in the field, Plex and Emby, are closed source.