Host your own music server with supysonic

I like to self-host services to make things fit my needs instead of the other way around and to satisfy my need to control my data. Also remember that self hosting is really important for the health of the open web and internet.

There are a couple of options for self-hosted media servers. I always go for FLOSS solutions, so Plex and friends are not an option. A couple of years ago I tried Subsonic, including the MadSonic and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't last long. Musicabinet was second in my evaluation and it looked really promising. It had an automatic radio station generation from local content and included information to your library. A feature particularly useful for explorations in huge libraries shared between friends. Unfortunately Musicabinet was abandoned by its creator and eventually started to show its age. Last came MadSonic which is probably the most feature full and actively developed Subsonic fork to the day.

All these shared the same problem: A heavy java-based codebase with a ton of features and a horrible user experience. And all I needed was a backend to stream music to my laptop and mainly to my Android phone.

Since there is a great app for Subsonic on Android (DSub) it sounded like I needed an app with a Subsonic compatible API.

I tried Ampache which offers a Subsonic API along with its own, but I was unimpressed. Huge codebase, horrible UX now in PHP. In any case you're interested I created a docker image for ampache as well.

And then I discovered supysonic a python implementation of Subsonic's API with transcoding support, which is really important for mobile streaming.

Since supysonic only implements the API it's super simple. There's only a minimal web interface for configuration and basic links to players. Music catalog scanning is blazing fast too because supysonic doesn't mess with your library. It will only read metadata, make no stupid decisions about your library and will even server cover.jpg if it exists. I keep my library clean and tidy with Beets which holds the crown of the single source of truth for my music collection.

DSub connects, reads and streams the database successfully. While you can setup maximum bit-rate on DSub itself, you'll need to connect to supysonic's web interface to configure transcoding formats to fit your needs.

I created a Docker Image for supysonic and you can get started within 10 minutes. Just clone the repo at and follow the instructions.

Go Top