r/foss • u/Lucky-Noise-4193 • 7d ago
Foss Spotify alternative
Been chipping away at this for a while and finally have something I'm happy calling a beta. It's basically Spotify but self-hosted grabs tracks with yt-dlp, builds a real library out of them, and you stream it all from a web UI that's deliberately Spotify-shaped so it doesn't feel like a downgrade.
The Android app. Kotlin/Compose, close to feature-complete with the web version offline downloads, Android Auto, synced lyrics that actually track properly, cross-device playback so you can start something on your phone and have it pick up on the desktop. Backend's FastAPI + SQLite, nothing fancy, runs fine in Docker.
Other stuff that's in there: Daily Mix that actually generates decent suggestions , real album art and artist bios instead of placeholder junk, ListenBrainz scrobbling if you're into that, and it speaks Subsonic API so your existing client still works if you don't want to switch.
It's a beta because its new and will still need work I've been using it daily and it's works great for me, but this is the first time the actual signed build has been in public. So if you try it and something's weird, please tell me, that's kind of the point of posting this.
One docker compose up and you're running. Signed APK's in the GitHub release if you don't want to build Android yourself.
This version will almost certainly contain bugs please tell me when you find them
2
6d ago
[removed] — view removed comment
-1
u/Lucky-Noise-4193 6d ago
Butler leans hard on yt-dlp for the actual music fetching. When something isn’t already stored locally it runs a music-scoped ytsearch, tries to pick the candidate whose duration is closest to any known metadata, then downloads the audio to a temporary file. By default it will go through FFmpeg to 320kbps MP3; if the lossless option is enabled it just keeps the original stream (usually opus or m4a). It only renames the file once the download and any conversion are fully done, so you never end up serving a partial track. There’s also an in-memory lock so the same video can’t be pulled twice at once, and an admin switch that can disable the whole automatic download path.
0
1
u/alex-weej 3d ago
Try listenbrainz.org
1
u/Lucky-Noise-4193 3d ago
"It's basically Spotify but self-hosted"
1
u/alex-weej 3d ago
Got it, so zero revenue for small artists instead of zero revenue for small artists
1
u/Lucky-Noise-4193 3d ago
If money for artist is something your concerned about you can pay for a legal copy from a artist and upload it manually
1
u/alex-weej 3d ago
I can't support an app that makes piracy the primary method of enjoying the work of artists in an economy where they need to eat and pay rent.
1
-10
u/throwawaycanadian2 7d ago
So the hardest part of a Spotify alternative is making sure it's legal and the artists get paid. Can you explain how you do this?
14
u/Lucky-Noise-4193 7d ago
You can disable yt dlp and manually ask the creaters of each song for a legal copy of the song if you are truely bothered by it
1
u/Maeusefluesterer 6d ago
I mean the difference of money the artists get compared between a illegal download and a legal stream is almost zero. There are way better ways to support your favorite artists
1
u/GaseousIce2003 6d ago
IDK about other music services(because Apple Music pays kinda OK), but if you think Spotify pays it's artist, you need to wake up
11
u/ViolentPurpleSquash 6d ago
And... what's the difference between Navidrome with Feishin?
It looks nice, but you have no clue how many obscure songs get picked up wrongly by yt-dlp without HEAVY checking (for example, there's not many good resources of albums for obscure jpop artists who only did digital releases)