Recently, I added another service to my home server: a personal music server.
I already run several self-hosted services at home, and one of the things I enjoy about having a home server is the ability to keep adding useful services whenever I find something that I can bring under my own control. This time, it was music.
For people who are happy to subscribe to mainstream music platforms like Spotify or YouTube Music, those services are perfectly fine. They provide huge music libraries, excellent apps, and a very convenient listening experience.
But this setup isn’t really about replacing those services. It is about something else: self-hosting as much of your digital life as you reasonably can.
I already have a server running 24/7 and Docker installed, why not use it to host my own music collection as well?
From Spotify and YouTube Music to My Own Music Library
I can use public playlists maintained by other people as a source for my local music collection.
For example, I can use playlists containing:
- Latest Malayalam songs
- Latest Tamil songs
- Latest Hindi songs
- Popular songs
- Songs from different artists or genres
If someone maintains a public playlist and regularly adds new songs, I can use that playlist as a source for my own collection. This means I don’t necessarily have to manually search for new music every time.
The workflow becomes:
Spotify / YouTube Music → Playlist → Downtify → My Music Library
Downtify
The first part of the setup is Downtify. It handles downloading the music and preparing it for my local music collection.
One of the features I particularly like is that it downloads the music along with its metadata. So I’m not just getting a collection of audio files. The music can come with information such as the song title, artist, album, album artwork, and other metadata, which makes it much easier to build a properly organized library.
Downtify can also monitor playlists. I can add my own playlists or public playlists from Spotify or YouTube Music and let Downtify keep track of them.
For example, I could monitor playlists for the latest Malayalam, Tamil, and Hindi songs. When new songs are added to those playlists, Downtify can download them along with their metadata and add them to my local music collection.
So the process becomes much less manual:
Playlist → Download → Metadata → Organized Music Library
Navidrome
Once the music is downloaded, it is stored on my home server. This is where Navidrome comes in.
Navidrome is an open-source music server that scans my music directory and organizes the collection into artists, albums, songs, genres, and playlists.
Instead of browsing through folders full of MP3 files, I get a proper music-library experience.
Navidrome also supports the OpenSubsonic ecosystem, so I’m not restricted to a single client. This makes it possible to choose different applications for different devices.
Wavio
For Android, I’m currently using Wavio.
Wavio connects to my Navidrome server and provides a modern, Spotify-like interface for browsing and playing my music.
The actual music files remain on my home server. My phone simply connects to the server and plays the music, so I don’t need to keep my entire music collection stored on my phone.
The Complete Setup
The complete workflow looks like this:
Spotify / YouTube Music → Personal or Public Playlists → Downtify → Music + Metadata → Home Server Storage → Navidrome → Wavio → Android Phone
Each component has a specific job:
- Spotify / YouTube Music — Useful for discovering music and finding playlists.
- Downtify — Handles music downloading and metadata.
- Home Server — Provides storage for the music collection.
- Navidrome — Provides the music server and organizes the library.
- Wavio — Provides the Android client for listening to the music.
Why Self-Host This?
The obvious question is: why go through all this when services like Spotify and YouTube Music already exist?
For many people, there is no reason to. If you are happy with a mainstream music subscription, use it. The convenience is hard to beat.
But that’s not really the point of a homelab.
For people who enjoy self-hosting, the question is often:
“What else can I run myself?”
I already self-host file storage, photo management, password managers, media servers, monitoring, automation, and many other services. So why not music?
I already have a server running continuously. I already have storage. I already have remote access. Adding another service to that infrastructure is relatively simple.
For me, that’s the fun part of self-hosting.
It’s not necessarily about saving money or replacing every commercial service. It’s about having control over your own data and building services that work the way you want them to.
A Personal Music Server
This setup isn’t going to be for everyone.
If you just want to open an app, search for any song, and start listening, a mainstream streaming service is probably the better option.
But if you’re someone who enjoys running a home server and wants to self-host whatever you reasonably can, a personal music server is another interesting project to add to the homelab.
Now, alongside all the other services running on my home server, I have one more: my own personal music library, served from my own server.
And that’s really the reason I built it — not because everyone needs to leave Spotify or YouTube Music, but because if you’re already into self-hosting, why not self-host one more thing?
Project Used