Servers, players, APIs and applications for building your own private music service
If you have a large music collection on your own hardware, there is a surprisingly mature open-source ecosystem for turning it into something that behaves a little like your own private Spotify. At the centre of that ecosystem is Subsonic and, increasingly, OpenSubsonic. The important thing about Subsonic is not a particular server or player. It is the fact that the server and the player do not have to come from the same project. Your music can live on one machine, be served by one application, and played through a completely different application on a phone, desktop, web browser or even foobar2000.
The basic idea
The architecture is simple:
YOUR MUSIC FILES │ ▼ MUSIC SERVER │ ▼Subsonic / OpenSubsonic │ ┌───┼────────┐ ▼ ▼ ▼ Web Desktop Mobile
The server maintains the library and provides access to it. The Subsonic/OpenSubsonic API provides the common language. Clients use that API to browse, search, stream and control the collection. OpenSubsonic describes itself as an open, collaboratively maintained API built on the original Subsonic API, while maintaining backward compatibility with the existing protocol. That makes it possible to mix and match applications.
The server
The server is the part that knows where your music is and makes it available. Several open-source servers participate in the Subsonic/OpenSubsonic ecosystem.
Navidrome
Navidrome is probably the most visible modern example. It is a lightweight, self-hosted music server with its own web interface, transcoding, multi-library support and a large ecosystem of compatible applications. It is GPLv3 software. Navidrome currently supports Subsonic API 1.16.1 with some differences and is continually adding OpenSubsonic extensions. Its important characteristic is that Navidrome is not dependent on its own player. You can use its web interface, or choose from a large collection of third-party clients.
gonic
gonic is another lightweight Subsonic/OpenSubsonic server, written in Go. It is particularly interesting if you want a relatively small server rather than a large media-management application.
Airsonic-Advanced
Airsonic-Advanced continues the Airsonic branch of the Subsonic family. It is useful for people who want to remain closer to the traditional Subsonic/Airsonic lineage while still having a maintained open-source implementation.
Ampache
Ampache takes a different approach. Ampache is a broader web-based media server rather than simply a lightweight Subsonic server, but it can act as a Subsonic/OpenSubsonic server for compatible clients. Its current documentation shows OpenSubsonic becoming the default implementation, with the traditional Subsonic API retained for compatibility.
OpenSubsonic
Subsonic’s original API has become a de facto standard for self-hosted music applications. OpenSubsonic is the community effort to continue developing that API. The goal is not to throw away Subsonic and start again. Instead, OpenSubsonic extends it while maintaining compatibility. The API covers much more than simply “play this file.”
It includes:
- artists
- albums
- songs
- genres
- searching
- playlists
- ratings
- favourites
- playback information
- lyrics
- artwork
- streaming
- downloading
- transcoding
- play queues
- scrobbling/playback reporting
- jukebox control
- podcasts
- internet radio
- user management
- library scanning
It also distinguishes between browsing a collection through its metadata and browsing its underlying file structure. That distinction is particularly important for a serious music library. The API is becoming more capable as OpenSubsonic extensions are added, and servers can advertise which extensions they support.
The players
This is where the ecosystem becomes interesting. A server does not dictate the application you use to listen to your music. Navidrome’s current application catalogue lists dozens of clients for Android, iOS, Windows, Linux, macOS, web and other platforms.
Among the open-source projects are applications such as:
- Feishin — desktop/web-oriented Subsonic client
- Supersonic — desktop client
- Tempus — Android client
- Airdrome — web/PWA client
- Airsonic Refix — web client
- Radiccio — OpenSubsonic client
- tinysub — lightweight client
The OpenSubsonic project itself maintains lists of participating servers and clients.
There are also proprietary clients, which is an important part of the ecosystem. Subsonic compatibility does not mean that every application is open source.
The protocol is the common layer.
foobar2000
For audio-file.org readers, there is another particularly interesting option:
foobar2000 can now act as an OpenSubsonic client.
The foo_opensubsonic component connects foobar2000 to OpenSubsonic-compatible servers such as Navidrome. It can:
- stream tracks directly into foobar2000
- synchronize remote library metadata
- import and synchronize remote playlists
- retrieve and cache artwork
- report playback
It can even expose streamed tracks through subsonic:// paths. The current component supports foobar2000 v2 on Windows, including Windows ARM. That creates an interesting combination:
Music files │ ▼ Navidrome │ ▼OpenSubsonic │ ├──────────► Mobile player │ ├──────────► Web player │ └──────────► foobar2000
In other words, your server becomes a music-library backend, while foobar2000 remains one of your preferred music environments.
And then there is Music Assistant
Subsonic/OpenSubsonic does not have to be the final destination. Music Assistant can use OpenSubsonic-compatible servers as music sources. This creates another layer:
┌── foobar2000
│
Music Server ─── OpenSubsonic ─── mobile
│
└── Music Assistant
The result is closer to a complete home music system than simply a remote music player.
What works with what?
The important thing is the separation of roles.
| Application | Role |
|---|---|
| Navidrome | Music server + web player |
| gonic | Lightweight music server |
| Airsonic-Advanced | Subsonic-family music server |
| Ampache | Full media server + Subsonic/OpenSubsonic server |
| Feishin | Desktop/web client |
| Supersonic | Desktop client |
| Tempus | Android client |
| Airdrome | Web/PWA client |
| foo_opensubsonic | foobar2000 client |
| Music Assistant | Music-system integration layer |
This means you can build several different systems from the same collection.
Simple
Music files ↓Navidrome ↓Navidrome Web UI
Mobile
Music files ↓Navidrome ↓OpenSubsonic ↓Android / iOS client
foobar2000
Music files ↓Navidrome ↓OpenSubsonic ↓foo_opensubsonic ↓foobar2000
Whole-home system
Music files ↓Navidrome ↓OpenSubsonic ↓Music Assistant ↓multiple players / rooms / clients
So which one should you use?
There isn’t one universal answer because the components solve different problems.
- For a modern, general-purpose self-hosted music server, Navidrome is a particularly important project to investigate.
- For a small, lightweight server, gonic is worth looking at.
- For someone interested in the Airsonic/Subsonic lineage, Airsonic-Advanced remains relevant.
- For a broader media-server environment, Ampache provides a different approach.
- For foobar2000,
foo_opensubsonicis the obvious bridge. - For desktop clients, Feishin and Supersonic are examples of the growing client ecosystem.
- For mobile listening, there are numerous Android and iOS choices, both open and proprietary.
- And for whole-home music, OpenSubsonic can become one source within Music Assistant.
The important point is that these choices are not mutually exclusive.
Why this matters
The really interesting part of the Subsonic ecosystem isn’t streaming. It is separation. Your music collection doesn’t have to be tied to one application.
YOUR MUSIC
│
┌────▼────┐
│ SERVER │
└────┬────┘
│
OpenSubsonic
│
┌──────────┼──────────┐
▼ ▼ ▼
foobar mobile web
│
▼
your preferred
music environment
The server can change.
The player can change.
The phone can change.
The user interface can change.
The underlying music collection remains yours.
And because the API includes metadata, playlists, ratings, playback information and other library operations, it provides considerably more than a simple mechanism for delivering audio files.
Where this is going
OpenSubsonic is still developing.
That is particularly significant because newer extensions are beginning to move beyond the original “music streaming server” model. For example, current implementations are adding standardized mechanisms for playback reporting, lyrics, transcoding and other capabilities. There is even work appearing around sonic similarity.
Ampache’s current OpenSubsonic implementation documents a sonicSimilarity extension that can expose audio-analysis-based similar tracks when an appropriate analysis system is installed. That points toward something much more interesting than simply putting your music on a web server. It points toward a common interface between:
music collection → metadata → analysis → recommendation → player
And that is where this ecosystem becomes particularly interesting for anyone trying to build a genuinely intelligent music library.
The bottom line
Subsonic/OpenSubsonic is best thought of as an interoperability layer for personal music systems. You don’t have to choose one monolithic application. You can choose a server for your collection, an API for interoperability, and the players you actually like. For someone building a serious personal music library, that separation is a feature, not a complication.
