Self hosted Spotify alternative reddit / selfhosted ---------------------------------------------------------------------- thatguy1429 · 2023-12-22 17:43 ## TLDR; My questions: - **Spotify playlists to audio files with metadata** - best tool to do this job? - **Exposing the server to access on my phone** - Once I host a server running in my local network (lets say Jellyfin for example), do I need to have something like nginx exposing it to the internet or set up a VPN so my phone can connect directly to the media server? ## Background: I am currently a Spotify premium member. All of my music library is on Spotify. I'm finally deciding that I don't listen to music enough for me to justify spending money on Spotify each month so I'm getting rid of it. I'd like to replace it with something open source or self hosted. ## Converting playlists to files: Since all of my playlists are on Spotify I need to convert it to audio files that also have metadata (album art etc). I was going to write my own python script to do this but seems like some already exist. Has anyone use any of these?: - https://github.com/spotDL/spotify-downloader - https://github.com/jsavargas/zspotify - https://github.com/casualsnek/onthespot - https://github.com/Rafiuth/Soggfy - deemix GUI - Someone in another thread suggested signing up for Deezer, converting Spotify playlists to Deezer then using Deemix GUI to download could work I was leaning towards using the spotDL since it just uses YouTube but obviously the downside of that is you lose some quality on the audio files ## Once I have the playlist files, I need a server/client: I used this repo for [research](https://github.com/basings/selfhosted- music-overview) #### My wants: - **iOS app and Windows desktop client** - **Offline/download music mode** - so I can still listen to music on planes or if I don't have phone service - **Easy install** - preferably an easy one command install or docker container for the server - **Clean UI** - I do enjoy Spotify's UI so something simple and clean would be nice - **Free** - I'm trying to drop some of my monthly subscriptions every month #### Given my wants my top picks are: - [Jellyfin](https://github.com/jellyfin/jellyfin) with [Finamp](https ://apps.apple.com/us/app/finamp/id1574922594?platform=iphone) - [Navidrome](https://github.com/navidrome/navidrome) - [Koel](https://github.com/koel/koel) - [Mopidy](https://github.com/mopidy/mopidy/) ---------------------------------------------------------------------- TheWicklowWolf · 2023-12-22 19:46 I use Jellyfin and Finamp, but I kinda miss Plexamp... ---------------------------------------------------------------------- Legitimate_Farm_3095 · 2023-12-22 20:13 [none of these threads had an answer to this commonly asked question?] (https://www.reddit.com/r/selfhosted/search?q=spotify&restrict_sr=on&i nclude_over_18=on&sort=relevance&t=all) ---------------------------------------------------------------------- ioslife_developer · 2023-12-22 21:08 Manet is a great iOS app for Jellyfin. https://apps.apple.com/us/app/manet-music/id6470928235 ---------------------------------------------------------------------- Faith-in-Strangers · 2023-12-22 22:58 Plexamp. (I also use Volumio for my hi-fi system) ---------------------------------------------------------------------- Top_Vegetable464 · 2023-12-23 05:12 Plexamp is great! ---------------------------------------------------------------------- thatguy1429 · 2023-12-23 06:57 Hey this was helpful, thanks for your response. I definitely should have used the search bar. I did some googling which is where I got the bullet points from a lot of my research but was a feeling a little overwhelmed with the fire hose of information... After some additional thinking and research and a helpful comment from u/TheWicklowWolf on their setup here's what I've done: * I used spotify DL which is a python based CLI to convert my spotify playlist urls into a bunch of audio files with metadata from Youtube. The files are not 256 kbps and are only 128 kbps but tbh I only listen to music in my shitty car stereo and gaming headphones... both of which I don't think I'll be able to notice the difference between 256 vs 128 (I'm not an audiophile) * Next I needed a media server. I decided to go with Jellyfin since it was open source, free, and seemed extremely easy to install. I also liked that if I wanted to do video content in the future I could set it up easily and not be limited to just music. * Once I had a media server, I needed a iOS client and a Windows client. I went with Feishin for Windows and Finamp for my iOS - both of which are working great so far The part I struggled the most with was exposing the network so I could access the Jellyfin server from the clients - even on cellular network: * I'm deploying the Jellyfin server on my old unused mac laptop since I didn't want to buy/build a server rack machine and I didn't want to buy a raspberry pi * I ended up buying a cheap (4$) random .uk domain from cloudflare and I used a cloudflare tunnel to expose the localhost Jellyfin server to the internet * I had to mess around with the cloudflared CLI but I got it working and now Finamp and Feishin are working great The only two things I need to figure out now are: 1. Is the cloudflare tunnel actually safe or are there things I can do to make it even safer? It takes you to the jellyfin login screen but I need to make sure this is secure? And am I voiding cloudflare TOS? 2. I'll need a good way of adding/importing new songs to the server easily because I don't think I can do this from the client. It will be a slight hassle having to use the spotify-dl cli every-time I want to add a new song but not the end of the world ---------------------------------------------------------------------- Dismal_Reindeer · 2023-12-23 08:44 If you’re touching the dark side this closely, I’d say just drop Spotify DL and move to Lidarr yo manage your music ---------------------------------------------------------------------- excetto · 2023-12-23 09:17 I tried spotdl with navidrome but it spat all the songs into different albums and such. Navidrome is great though. ---------------------------------------------------------------------- eirsik · 2023-12-23 09:42 Why not use bemusic? Spotify clone that you self host and it uses YouTube as source and spotify api for meta. I run my instance here if you want a demo: https://streamtune.me One downside is that mobile experience is not near as good as the desktop experience ---------------------------------------------------------------------- Tharunx · 2023-12-23 09:49 This ! Hearing great reviews about it. It’s recently launched ---------------------------------------------------------------------- TheWicklowWolf · 2023-12-23 10:38 The other options are use a reverse proxy or a VPN (tailscale etc.) Lidarr is a good option for albums. For Spotify playlists: https://github.com/TheWicklowWolf/SpotTube ---------------------------------------------------------------------- sadhgurukilledmywife · 2023-12-23 11:40 To make your cloudflare tunnel even more secure you can add an additional layer of authentication with cloudflare access. To do this with a Google or GitHub account login try this guide: https://youtu.be/wdmbAo02ktQ?si=xMlYvvRiUEiad0OU Then, you can simply add a new application that includes all subdomains of your main domain and enable Google/GitHub authentication for it. That will require the user to login with a Google account that is on a whitelist you set before accessing the jellyfin login portal. ---------------------------------------------------------------------- Legitimate_Farm_3095 · 2023-12-23 11:44 > And am I voiding cloudflare TOS? with the free tunnel service, yes. paid service, not 100% sure. that info can be found on cloudflare website. i'm sure you could even email their support and ask ---------------------------------------------------------------------- thatguy1429 · 2023-12-23 15:53 Thanks I'll checkout Lidarr! ---------------------------------------------------------------------- thatguy1429 · 2023-12-23 15:55 Hmm I like this idea... only thing I'm stuck at is Finamp smart enough to bring out this google oauth login screen? For example the only thing Finamp asks for on the setup screen is the server url and then the user and pass of your jellyfin login and thats it. Is it gonna get hung up on the oauth screen and fail? ---------------------------------------------------------------------- thatguy1429 · 2023-12-23 15:58 Gotcha, I'm not streaming video but streaming audio. I know their TOS used to have a clause about voiding TOS with non html content but they supposedly removed it from the TOS according to this video [https://yo utu.be/oqy3krzmSMA?si=QyZwUXWxF3KDOtpX&t=463](https://youtu.be/oqy3krz mSMA?si=QyZwUXWxF3KDOtpX&t=463) so I dunno ---------------------------------------------------------------------- thatguy1429 · 2023-12-23 15:59 I'll check out tailscale, I considered a VPN but wasn't thrilled with the idea of constantly having to run the VPN on my other devices (like my desktop or iphone) anytime I wanted to listen to music from my server Definitely going to be looking at Lidarr! ---------------------------------------------------------------------- Legitimate_Farm_3095 · 2023-12-23 16:01 https://www.cloudflare.com/en-gb/terms/ section 2.7 for things like that it's best to go to the source and not some youtuber. ---------------------------------------------------------------------- thatguy1429 · 2023-12-23 16:02 Yeah I considered this, there is also Spotube [https://github.com/KRTi rtho/spotube](https://github.com/KRTirtho/spotube) But I didn't want to setup all of my playlists only to find out 1 year later that spotify or youtube took down their api or added restrictions etc... thats how it always goes with APIs So I decided to take matter into my own hands of storing my own media files so I know they'll always be there ---------------------------------------------------------------------- sadhgurukilledmywife · 2023-12-23 17:22 If so you can just increase the session duration and open the link in the web browser... That will authenticate the session for however long you set the session duration to. ---------------------------------------------------------------------- [deleted] · 2023-12-23 17:35 [deleted] ---------------------------------------------------------------------- LeBB2KK · 2023-12-23 19:59 Plexamp for me, it’s just fantastic and I had absolutely nothing to do beside double click for install. ---------------------------------------------------------------------- beauhilton · 2023-12-25 21:21 Tailscale is super lightweight and there are no downsides to keeping it on all the time in the background. The iOS support is getting better (it works great when it's running, but iOS doesn't like background apps as a general rule so I have to manually start/restart pretty frequently - on Android I truly don't notice it running in the background, and it auto starts when the phone does). On MacOS/Linux/Windows the Tailscale client can also be silent in the background, and can run alongside other VPNs you may be using. It simplifies security to an insane degree. I share the node w my non-technical family members, takes about 5 min to onboard each one, and they can use the same crappy username/PW combos for the media apps since Tailscale provides the actual secure authentication. ---------------------------------------------------------------------- thatguy1429 · 2023-12-25 21:49 Does it route all of your traffic through tailscale? Like are my work emails, web browsing, Reddit browsing all routed through tailscale when I have it on? Or can I choose which apps will route through it on iOS ---------------------------------------------------------------------- beauhilton · 2023-12-29 17:36 Just saw your question - it's really a mesh network, more than anything else, not a hub-and-spoke VPN. It establishes direct connections between your devices whenever possible. This article has a good overview: https://tailscale.com/compare/reviewer-guide