The situation with Subsonic alternatives seems pretty dire

Want to stream your local music library to your phone over the internet? Then welcome to hell! Welcome to hell!!!!

The situation with Subsonic alternatives seems pretty dire
Pictured: A sub, and Sonic. That's Wordplay™.

A lifetime ago,[1] I purchased a lifetime license for Subsonic before it went closed-source, and when that lifetime license was sub-$20 and there was no ongoing payment required. Turns out, putting the screws on new users wasn't enough of a revenue driver to be worthwhile for the developer, and Subsonic hasn't been updated since 2019. Of course, even after abandoning it he never released the source for the final version, and just kept the website lights on enough to keep drawing those monthly payments. Not enough to have the site function in HTTPS, which is pretty half-assed, but at least there are still download links, I guess?

So, based on my lingering annoyance at the Subsonic dev going closed-source, jumping the price up, and then still fucking off, I decided to give a shot tonight at migrating to one of the open source alternatives.

Whoops! That was a mistake!

So, as far as I can tell, the two currently maintained options are Navidrome and this fork of a fork of Airsonic. Madsonic, LibreSonic, and regular Airsonic are long abandoned.

For me, Navidrome is right out because its web interface is metadata tag sorting only. I get why someone else would want tag sorting, and it's definitely a feature that Subsonic should have had, but I have my music painstakingly sorted into folders with the precise organization I always want to be browsing with.

Big ups to Navidrome, however, for having proper per-platform binaries, because Airsonic is distributed as a fucked up Java[2] file called a .war that I've never encountered before. Getting it running was a pain but I was ultimately successful in doing it.

So it turns out, Airsonic offers nothing over the final version of Subsonic that I care about except one (1) minor web UI improvement. Changelogs tout "security" enhancements, but the way that manifests is exclusively in inconvenience to the user:

  • Share URLs tack on a JSON Web Tokens identifier that is over 150 characters long, tripling or quadrupling the length the of the URL depending on your domain name.
  • Passwords are handled with a new and stupidly complex Credentials menu, where you can choose what method you want your password hashed with, via several extra steps vs. Subsonic's sane behavior of having new password and confirm new password boxes on user account pages.

Compounding the disconnected-from-reality security priorities at work here is the lack of Subsonic's ability to use an SSL certificate and natively serve HTTPS. My Subsonic install uses a self-signed certificate to encrypt the traffic between it and my web server that reverse proxies to it from a proper domain name with a proper cert from a proper authority. Not only does Airsonic not offer this, but it has at least one bug that causes some links to attempt to redirect to the Airsonic server's IP address without HTTPS. Unhinged! Also it was very unstable generally and I encountered several errors and UI bugs in my brief time with it.

So, anyway,

In conclusion that was a huge waste of time and I'm using Subsonic again. Oh well!

  1. If you think this is stupid wordplay, wait until you see the Subsonic app icon! It's a yellow submarine!!! Do you get it??? ↩︎

  2. The programming language, not the coffee. Did you know that the menus on blu-ray discs are full Java programs, and could conceivably do a ton of crazy stuff that was impossible with DVD menus, but then most consumers decided they were fine with never owning media again, and left physical media to bleed out by the side of the road as they drove down the highway to "what if cable and Blockbuster Video had a baby and it was the antichrist"? True story! ↩︎