im really tired of google music and spotify, and want to self host my downloaded music and create my library.
however, i know nothing about self hosting. My knowledge is absolutely zero. And Im completely lost about how to self host my own music. Dont find any good tutorial for dummies and i have a lot of question. I dont understand nothing. I see the tutorials of Navidrome and Ampache and still understand nothing. All of that looks extremely complicated to me.
How can i self host my music? I need to pay something? A very old and slow pc is enough?
Im completely lost. If someone can suggest something - like a tutorial , dunno - to build/self host my own music I appreciate a lot.
I use a Plex server and the PlexAmp app wherever I want to listen. There are probably better options, but it's something I set up years ago which was dead simple and requires almost no maintenance.
Agh Plex always rubs me the wrong way.... It acts like closed source software as much as is possible. Went with Jellyfin and it's been great. But haven't tried music.
Symphonium is a great Android music player which connects to a Subsonic or Jellyfin server (or any other protocol like SMB).
Navidrome is a music server which implements the Subsonic protocol. This means apps like Symphonium can connect to it.
Any old PC is enough, even a Raspberry Pi is fast enough for a music server.
Install Navidrome on the server/pc
Configure Navidrome (open ports, add your music library/folder)
Connect a subsonic-compatible music app to to the server (I.e. type in IP or domain as well as the port).
Anything more like SSL (https) and a domain is optional for getting it working, and only a benefit if used outside of your home network. Using Tailscale makes a domain/SSL unnecessary and also no longer needs messing around with networking (e.g. no opening ports on the router).
On the topic of SMB. If OP is mostly interested in accessing the music from their phone, a symfonium + SMB server setup may be even easier than setting up navidrome
I checked out Tailscale, and my 👀 popped when I realized what it does! 😄
I proceeded to install it on my phone, only to realize a moment later that my connection was down. I headed over to my Rethink DNS firewall and saw that Tailscale had taken over my VPN connection, causing Rethink to shut everything down (as it's supposed to).
Now, unfortunately, I'm probably gonna find out that Tailscale needs highly sought out for VPN slot on Android, and that I can't use it because I'd have to drop my firewall? 🙈
Yes, the restriction to a single VPN client is annoying.
Blocking ad/telemetry domains can be done by adding Adguards DNS servers in the OS settings. Sadly blocking apps Internet permissions completely is not possible (except on OS like LineageOS, CalyxOS or GrapheneOS).
I use Jellyfin. You can find a very easy to deploy docker container by linuxserver.io team. Jellyfin has dedicated music only apps as well, for phones as desktops.
Or just run Jellyfin on your desktop and sync the phone app from time to time. Finamp even allows downloads, so no connection to the server needed at all times.
That is a different usecase though. That is simply syncing local musical with a server.
I do that too because i have an SD card. Just use Syncthing for that. Much faster and less hassle. You can use any music player on your phone that you want, not just one that works with jellyfin.
If you aren't streaming music in real time for the majority of time, then do a phone sync, not a streaming server.
Maybe this is a stupid question, but what do you achieve with self-hosting music? What do you do with it? If it's only on localhost then I could just play the music locally? what is it for? :)
Depends what you want to play it on. In my house we have:
3 laptops
2 tablets
2 mobile phones (1 android, 1 iPhone)
TV
Not all these devices support local storage for music and it's a pain to sync files between them. With Jellyfin the complete library is in one location with a consistent interface. It can also be made available remotely if I choose.
I'm going to go another route here: do you need streaming?
Like, I've simply gone with a giant pile of FLACs that I put on a SD card for my phone, and use over the NAS for when I'm at home and don't currently use any fancy-pants streaming stuff.
So like, depending on how you're using your music library, you might not even need to drop deep into the giant self-hosting rabbithole for this.
Pretty soon you won't be able to buy a phone without expandable storage. On the plus side, internal storage is going up, but it's still not big enough to hold a complete FLAC collection if it's a reasonably large library. You can re-encode your library just for phone usage, but that's a bit annoying to maintain.
Also, I've found all of the offline music players on Android kind of suck, and don't support the workflow I like or have bugs.
¿???? it's not like you're going to be able to autism at a -0.0002dB disparity on the trumpets channel with those audio chips, why not just store the files there as opus or MP3 for ~6x more capacity? (not to mention faster overall reads)
Because I stuck a 1TB sd card in my phone and don't have to deal with transcoding or dealing with, well, anything, but copying new files over and listening to things.
I've developed quite the liking for stupidly simple solutions, and 'copy the files to a sd card' is about as simple as it gets.
I've been using ogg vorbis for music since about the mid 2000s. In the begining I was ripping them from my CD collection using grip on mandrake Linux (anyone remember?)
Nowadays I download vorbis direct from bandcamp.
Recently I compared 192 kbps vorbis files to FLACs and couldn't discern the difference, which I'm happy about since my 15000 file collection can fit on a very cheap 128GB SD card in my phone.
I use syncthing to sync music to my phone automatically.
There are many different ways, but personally (and hopefully I don't get crucified for saying this) I use Plex and Plexamp. Plexamp has got to be the best music app I've ever used. I even tied it into Last.fm to get recommendations for new music based on my listening.
Not necessarily overkill, you can run Plex on almost anything. I used to run it on an old NUC6 I had laying around, then upgraded to a NUC8, and more recently I setup it up as a VM on Proxmox on a Ryzen 5700u mini-PC and just reimported the DB.
Virtualizing it has been good for my purposes since now it’s running alongside AssetUPnP, AudioBookshelf, and a dockerized squeezelite setup, and I’ve another VM on the host running Home Assistant with still plenty of resources to spare. Crazy we can do that now with a “server” that literally fits in my palm.
But virtualizing it makes hardware acceleration for video transcode be I more complicated, just a heads up. I play everything native so don’t use it, but YMMV.
———
Edit - Plexamp is an awesome radio/DJ player, though I generally send to a Wiim Mini, as AirPlay quality with Plexamp can be kind of ass compared to direct DLNA.
I use Plex and jellyfin, honestly, plex only stays around because of plexamp. It's just too good. I don't like using streaming apps like Spotify or whatever because they're not as good
Easy option: because I only have around 40gb of music, I sync it between my PC and my phone using syncthing since 128gb is the minimum nowadays
Hard option: streaming is cooler so I installed nextcloud with an optional plugin called "music" which allows to connect an app called "ultramusic" and it becomes "self hosted Spotify" with android auto support and all the bells and whistles. Disadvantage: Nextcloud is a moving target. For some reason they have to release new incompatible versions every two or three months. So for plugin developers this is a very annoying upgrade threadmill that eventually leads to burnout and that plugin dies. Even officially supported plugins sometimes don't support the latest version when they launch it. If you choose to use nextcloud with docker, make sure to stay behind 1-2 versions (tag nextcloud:28 when nextcloud:30 is released) or your plugins might suddenly break without any warning. According to fanboys this is the industry standard nowadays and it's up to the user to manually check the GitHub issues of each of the 30 plugins if it's compatible before updating. Even if it's official plugin. They call it "stable" but they mean "beta testing for the paid enterprise version".
Any chance Jellyfin and Finamp have a music playlist and mix building feature?
Plex has this with Plexamp but I have not had a chance to look into jellyfin to see if a plugin offers something similar.
I hate building playlists, Plex offers a few different options like sonic sage, sonic adventure, artist mix builder, and automatic mixes based on past listening history.
Honestly creating playlists is probably the biggest weakpoint of my setup. I generally like to listen to full albums though, and am too lazy to curate my music by anything more extensive than albums.
Music assistant on home assistant or without HA will let you host your own music but also allow for the addition of streaming providers. It lets you cast your collection to pretty much any speakers. You can even build your own cast receivers with any android device and squeeze cast.
Actually, I'm gonna add another really simple option: Lyrion (Formerly Logitech Media Server). My wife swears by this one, supports local library, integrates with LastFM, and if you use Tidal, Qobuz, Deezer, or Spotify, you can integrate your streaming service with your local library for radio mixes.
Can install it right on a laptop or PC and connect to wherever your music is (local on the machine, on a NAS, etc.). After you install it, you can access it directly via a web browser or webapp, which will make it accessible from desktop or phone.
What's wrong with just throwing MP3s on an SD card, or hard drive?
Edit: Love how I have 4 upvotes, 4 downvotes. So a pretty divicive statement I've made. Yet nobody has told me why mp3s on local storage is or is not a solution for self hosting music. No opinions shared, other than angry arrows in both directions.
There are two main ways you can do it. You’ve already mentioned you have your library/music files, so that’s a good start, you’re basically looking for a way to access it on other devices. The first way would be to set up an old PC/rent a cloud server, and set up the service you want to use, though for now this may be a bit too complex if all you want to do is stream your own music, and have no experience. That being said, it’s always good to have a look and see, there may be a tutorial that works for you if you want to go down this route.
You’ve mentioned Navidrome, and it’s a good shout, basically just looks at the folders of music you have, and lets you stream them to your phone/PC (and more) like Spotify or Google Music. For the simplest possible setup, I’d recommend a service like Pikapods (https://pikapods.com), which essentially selfhosts applications for you, and gives you access to the files. For Navidrome, for 50GB storage (and the recommended settings of 1 CPU core and 0.5GB RAM), it’s $3.01 a month, which, though not free, is very affordable if that’s all you want to do, plus they handle updates, etc. You shouldn’t need to set any variables, and can upload your music to their service via FTP (File Transfer Protocol, a way to copy files to another PC/server from your PC), and they have docs on how to do that on the site.
however, i know nothing about self hosting. My knowledge is absolutely zero [...] I dont understand nothing
This is going to be a problem, unfortunately. You'll need to define your use case first:
How much music do you want to have access to? Hundreds, thousands, millions of files? How large is your collection?
Do you have downloaded copies of all the music you want to listen to? Are they all in one place, well organized and tagged? If you just have downloads in the Spotify app, you won't be able to use those files, you don't actually own that music. You'll need DRM-free audio files.
Where and how do you want to be able to access them? Just from one device like your phone? Many devices? Is having access at home good enough, or do you want to be able to access your collection while you're away from home?
Will you be the only user?
What kind of budget do you have to work with?
An old PC might be enough to act as a server, but there's more involved and the answer to what you need depends on what exactly you want to do. You will not be able to build a personal version of Spotify with just an old PC, for instance.
Skimmed comments, but if you download and manage your music on your own on a machine you can have a super simple setup like I do. All music is synced using Syncthing to my phone. So my phone gets local storage, and then I use Poweramp (android) to play it.
I pretty much have a folder for all the music though. But I assume you can sort music into folders to have them as playlists. But perhaps not as practical as desired.
So, self hosting is complicated. Everyone in this comment section has had tons of experience with it. I tried Plex, failed. Jellyfin, didn't connect. Entire OSes on a raspberry pi, didn't work.
I don't know your situation but for me giving up and just keeping it stored on my phone and manually updating is good enough.
A simple question with a mind boggling variety of solutions.
I was in same boat as you, I knew absolutely nothing & was bamboozled by the volume of different answers, often none of which worked. But I kept battling away & am now self hosting various platforms. None of which are music but here goes 😁
Choose your hardware. If you've not got spare hardware a Pi would work. I'd try to look at Pi4B or Pi5. Look at adding either external drive or SSD. If you go external drive route you'll need to learn how to format, mount & auto mount the drive
Choose a good notes app & make clear notes as you go. You'll be referring to them again at some point!
Its advantageous to be able to create a static IP address on your router. Consider picking up a cheap router preinstalled with OpenWRT (very powerful open source firmware). OpenWRT itself is complicated but the basics like port forwarding & static IP are straightforward
Install Docker. This keeps keeps your programs in separate containers. Allows you to stop & remove containers without interfering with other containers
Install Portainer. This was a light bulb moment for me - as soon as I realised you can build your own Docker containers and add your own Docker Compose files (add Compose files as a stack) from within Portainer. Allows you to easily control the containers from a web UI. This great tutorial is the most straightforward & outright useful tutorial I found on how to use Portainer (thank you Synthetic Everything if you ever read this): Install Nextcloud via Portainer & secure it with Nginx Proxy Manager
From here its a question of building a Jellyfin Docker container or editing a suitable Compose file you find online into Portainer so that it suits your needs
Decide whether you want to expose your setup to www if so look into Nginx proxy manager. Traffic to your domain such as Cloudflare or a free service is pointed to one port on your router which is exposed to www (WAN). Traffic to this port is handled by Nginx & forwarded to the relevant device IP address on your network (LAN). Nginx handles SSL certificates, is Open source & is brilliant. Free DDNS such as DuckDNS domain name can easily be set up in Portainer.
If not, you'll need to access your network externally. Tailscale is the current stock answer. Alternatively look into setting up Wireguard VPN. Once a device is granted access through a secure Wireguard connection you can access any device or its web UI on your network if you know its IP address (no need to remember them, this is what password managers are for, right?)
Navidrome server. Use podman. Buy a Fully qualified Internet address first, then go to cloudflare and proxy your IP to the new. Address. Finally in android install Ultrasonic or Subsonic and go to your server.
You don't need to have a Fully qualified Internet address. But I like it better than having to remember 55.655.67.533. but the IP address still works fine. The thing about the cloudflare proxy is that it never reveals your IP. So in case someone might be snooping around, they gotta get past cloudflare first.
I don't have any links to hand, but look into Dynamic DNS. It's basically a way for your device / router to talk to your domain registrar, and update their DNS records whenever your IP address changes.
Even without all this DNS thing, you can always reach your own IP from outside. The issue becomes a security issue. You will need to route your PC's specific Navidrome port. You can use any port you like, but you'll need it exposed thru. So that opens your system up for attacks from outside. With the cloudflare thing you can safely access your computer from outside without opening ports.
However you can sort of do this too by adding a couple more pod apps and using a dynamic DNS service. Portainer or cockpit, Pihole, and Ngnix Proxy Manager.
With portainer or cockpit you can organize the pods so they start-up automatically for example. Using your router, split your network into two separate ones ... One for yourself and another for your exposed stuff. Then use the pihole to protect them. Next set-up Ngnix proxy to route to different ports. If you get to my music.com, then it will route the name to a port. Without DNS you can also just route from your outside IP to a local host name. For example 56.45.35.76:657/music could route to NABODROME the local host name or simply to 192.168.7.12. there's a ton of tutorials on how to set these up on YouTube so go have fun. You might choose not to get into all this because it's a little complex. But you could, like many of us, really like it, and then you enjoy a little freedom.
RunTipi as a general server setup on a cheap mini-pc running Linux (any stable distro will do). It has an easy interface to install a music hosting app - in my case it's Navidrome. You can use an older PC for it with no problems, but be aware that it might be inefficient in terms of power consumption. Some newer cheap mini pcs with Intel N100 processor are more efficient and consume little power. You can get them for under 200 USD/EUR even.
I use MusicBrainz Picard to tag and organize the music files. All music files I previously converted to Opus format, which is very efficient in terms of size.
To stream music away from home I use Tailscale, which essentially creates a virtual private network between your devices. Then you can access the tailscale IP address of your music server from your phone through a music app that supports Subsonic (another music hosting software, Navidrome is compatible with it) - apps like Substreamer/Subtracks/Symfonium/etc.
@zeromoney I have a self hosted streaming service for music with #Jellyfin. But i think there's no an easy way to deploy it. You need to have some basic linux knowledge.
For music I have switched over to using my phones built-in music player and syncthing to synchronize the music folder between all the various machines.
There the big plus is that the music works 100% offline.
A lot of information is scattered about and it is difficult to find a solution that fits your situation. So you'll have to filter a bit. There are loads of youtube tutorials out there and some of them are well supported by documentation, some are not. Be patient.
My setup is basically a Jellyfin docker server with local storage so its easy for Jellyfin to see the files. Jellyfin is installed on Linux after installing docker. Jellyfin apps are installed on the devices I want to use to connect to Jellyfin.
My router has Wireguard so I can connect to the router as a Wireguard VPN to listen to Jellyfin content.
Thats it.
My Jellyfin server is a 2 core i3-6006U laptop with a broken screen I had lying around. These days I think you'll probarbly want to run an 8th - 9th gen Intel processor to support the latest features including GSync, but you don't have to, try it on what you have.
Once you have some hardware, look up how to install Linux, get a well known one like Ubuntu to begin with.
Put some files in a directory , called say music for testing.
Look up how to install Docker, then do that.
Lookup how to install Jellyfin in docker. I'd use a .yml because you can change parameters easily and try again.
Once you have jellyfin running go to the web interface and tell it where the music directory is so it can scann the files.
All this occurs on your home network
Install a Jellyfin app on your phone, connect to the server, play music locally.
If you want to access away from home use some form of Wireguard VPN but you probarbly have enough to be getting on with. for now.
You pretty much just need an Intern et connection though it would be best if it was unmetered. It doesn't take much as far as resources go to host music. You could also think about just syncing playlists to your mobile device. Lots of people forget about that.