Jun 3rd, 2024
Like most people old enough to remember paying for music instead of for streaming rights, I have a pretty extensive collection of music. It starts with the CDs I bought in the late 80′ through early 2000s and the songs I bought on iTunes after it’s release in 2003. I listened to my collection on iPods and uploaded them to my phone at one point, but with the streaming services and ease of music, my own catalog has faded into the background. It started fading in 2005 when pandora came out and just tailed off from thereā¦
To get back in touch with my music, I’ve made it all available to me again anywhere I have an internet connection, or even offline. Navidrome is a music server that is used to stream personal music from a server to your computer, phone, iPad, etc. I can now send music to anything with a browser or can load an app that is subsonic compatible.
Navidrome Setup
Navidrome has the option to install on windows, mac, Linux, a raspberry pi or other ARM based operating systems. Navidrome can be installed on a computer directly, or in a docker container. I chose to install Navidrome on to a tiny ubuntu server.
My reasons for setting up Navidrome is always, because I can, and because I will find it useful. To have my full personal collection of music available to listen to is quite useful. It’s been many years since I’ve enjoying listening to that eclectic mix of music from the 60’s to the early 2000s that I call my own.
My Home Lab Setup
I’m running Proxmox on a raspberry pi (Pimox) with a shared storage pool also hosted on a raspberry pi using Open Media Vault (OMV). My first instinct was to install Navidrome as an LX Container. Unfortunately, I’m storing my music on a shared folder on OMV. With LXCs to get the network connection to work, I’d have to move from an unprivileged container to a privileged container, so I abandoned that route. I didn’t want to give the Navidrome server root access to my Proxmox/Pimox server.
Building Out My Server
My next thought was a docker container. However, since I don’t have any existing docker instances I want to install Navidrome on, I’d have to spin up a new server for the docker environment. If I was going to spin up a server anyway, I might as well just install the app directly on the server. I guess I f I end up needing the space or loading my docker instances I’ll convert it then.
My final setup is a ubuntu server virtual machine, running on Pimox on a raspberry pi. Because Ubuntu server can go with very few resources, and Navidrome requires even less, I went with a single core, 2 gb installation, with an 8 gig hard drive running on my shared storage. This means it would only take up 1/4th of a raspberry pi 8 gb’s computing power.
I have Navidrome running on Pimox and an 8 gig virtual hard drive. The 57 gigs of music is sitting on my Open Media Vault, on a mounted share. This is then mounted on the ubuntu server via NFS. This keeps the setup modular. I can spin up and down the Navidrome without having to worry about the storage of the music.
Loading the Music to the Navidrome Server
A hurdle that I had to over come was how to get the music from my old dusty hard drive onto the OMV NAS to use and my Synology NAS for backup.
Question – if I’m going to be putting the music on my Synology NAS, why also put it on the raspberry pi OMV NAS? Why not just stream directly from the Synology? Mostly for homelab extermination. I want to see what I can do to build out a completely raspberry pi solution and rely on the Synology NAS as little as possible. That’s my current philosophy. Everything goes on a component of the home lab, a raspberry pi or my old gaming machine I converted into a proxmox server.
Uploading the music was not too hard. Connect the drive to my computer, mount a shared folder from the Synology and boom, I have my data on the NAS. Once it was on my Synology, I had to figure out how to get it to OMV. The answer, Rsync, specifically rsync powered by Synology’s Hyper Backup. Yes, I know I could have just mounted a folder from OMV and uploaded it directly but this next solution came with a couple of perks.
Synology’s Hyper Backup has the ability to do a rsync to an external location, in this case OMV via NFS. By using Hyper Backup, I didn’t need to do much more than setup the Rsync server on OMV through the user interface and then create a task in Hyper Backup. No command line and no chron jobs.
I saved the music to the NAS and then ran a Hyper Backup task that backed up to the same folder the Navidrome Ubuntu server is pointed at. I ran the Hyper Backup task once and viola, all my music was available to Navidrome. Since then I have left the Hyper Backup task running. This way as I rummage through the rest if my digital warehouse and find more music all I have to do is add it to the folder on the Synology NAS and the music with automatically make it’s way to Novidrome and both locations with stay in sync.
Conclusion
In conclusion, Navidrome is a pretty cool little piece of kit. It does audio music really well and has options for playback. I’ve been able to complete another home lab project, and create something I’ll use at the same time. I also think my rsync solution is a little novel, and functional. I’ll be listening to my own music for years to come.
Resources: