As an avid listener of music and burgeoning self-host geek these days I drift between YouTube & Spotify for my music fix and speaking frankly these are not the best places to be for longevity. As we are all too familiar with YouTube taking down videos like nobody’s business and not even Spotify is safe from this, Artists could take down (which is their right, looking at you Neil Young) or have their content taken down for X copyright reason. At this point I imagine we’ve all felt that cold digital sting of missing songs and ruined playlists.
- Enter Volumio…
- My Setup
- The Good
- Loading music into Volumio
- A tiny NFS-server with Docker guide
- The Look
- The Bad
- Making an account
- Minor UI glitches
- The Good (Reprise)
- Final Word
Having learned this lesson many times over has made me up my self-hosting game and take control over the way I consume media. My music files have been shuttled around from PC to PC until they’ve reached their current resting site on my server collecting digital dust (and real dust too probably). It seems only right to take advantage of this and build a personal music streaming center. Enter Volumio! An open source ‘audiophile’ music player built on top of Debian.
I should note that Volumio also offers the “Primo” which is a complete hardware player that has a built in 12S DAC (Digital Audio Converter) and wifi adapter, along with SPDIF/RCA/HDMI outputs (24bit PCM 192khz) for a premium price of $649 dollars. A bit pricey but if you’ve ever looked at the cost of practically any “audiophile’ piece of equipment or cable, this is par for the course. Thankfully Volumio allows their VolumioOS to be installed and ran on a Raspberry pi or similar microcomputer and act as a audio setup box. Here are some key features:
- All-in-one music player where you can play all your music, local or otherwise.
- Works out of the box!
- Sounds great even on stock pi hardware with support for DAC boards!
- VolumioOS will turn your pi into a audio hub with a web interface you can control from anywhere in your house.
- Supports many streaming services & protocols.
Admittedly I don’t have an expensive audiophile setup but I do have a very decent music recording setup (Motu 828mkIII) and a pair of studio monitors ( JBL LSR305s) I enjoy listening on inside of my acoustically treated room. I’ll be running VolumioOS on an old Raspberry-Pi 3B that I had laying around, the VolumioOS image is available on their official website, linked here.
Having now spent a good amount of time playing with Volumio I can say I really dig it, and it does a lot well that won me over but not without its quirks. For now let’s focus on what Volumio does right: Playing music! Volumio doesn’t care what file type your music is in: Mp3, Mp4, FLAC, OGG, AAC, etc, it’ll play it all, and do it without any hiccups.
Loading music into Volumio
Out of box, you’ll find that Volumio plays well with local media as USBs are recognized pretty much instantly and are good to go, provided you load them up with audio files beforehand. You’ll also have options to attach network storage via NFS or CIFS. Internal storage is also recognized which is good if you have a microSD with ample storage or if you need to manually mount a file system to that path (which I did, and will provide info on below).
In the pursuit of mounting my own files I dug a little into NFS (Networked File System) and used a docker image to spin up an NFS-server container with a disk volume mounting my Music folder onto the network. Unfortunately this didn’t interface well with Volumios’s built in NFS/CIFS mounting system so I had to SSH into my pi (check out this help article from Volumio’s official docs to enable SSH: here) and install an NFS client and mount the container onto Volumio’s default music path at
A tiny NFS-server with Docker guide
To not get to caught up in the setup I’ll just briefly cover what I did in case anyone else wants to do the same. On a server with
docker-compose installed I have this YML file that is then run via
docker-compose -f docker-compose.yml up -d.
# docker-compose.yml version: "2.1" services: # <https://hub.docker.com/r/itsthenetwork/nfs-server-alpine> nfs: image: itsthenetwork/nfs-server-alpine:12 container_name: nfs restart: unless-stopped privileged: true environment: - SHARED_DIRECTORY=/Music volumes: - /path/to/your/music:/Music ports: - 2049:2049
On the Pi hosting Volumio (default username/password is volumio/volumio), note that this mount point is lost on reboot/power off, editing
fstab, scripting or scheduling the mount command using
systemd is advised to not have to login and mount it yourself everytime the system powers down.
sudo apt install nfs-client -y sudo mount -v -o vers=4,loud <your-servers-ip>:/ /mnt/INTERNAL
Once that is mounted, you can go back into Volumio in the Settings→Sources menu and scan and update you Internal Music Library which may take some time to index especially on larger music collections.
The UI is dark with a splash of color where it counts, but if you don’t like it Volumio also offers 2 other skins. You may also customize the player with your own background image. When it comes to actually using the program, it’s straight forward. All of your categories are laid out in a panel to the left with the transport controls in the bottom bar, very reminiscent of Spotify’s web player or any media player in the last decade.
Unsurprisingly Volumio also has a wealth of playback options, where you can change the audio output, various hardware/software playback settings, and local file audio resampling. 12s DAC support can also be enabled from this menu, but since I don’t have one of those external HAT boards for my Pi, I kept all of these settings stock, but any audiophile will love to tinker in this menu. There are a few other settings of interest here: setting Volumio up as an alarm clock, networking options (including a hotspot mode!), a sources tab to mount USBs/NAS along with DNLA settings and the plugins menu. Which is where the trouble starts, which before I get into the rest of the cool stuff that Volumio can do I must address.
Making an account
Now on to the thing that I didn’t like: you’ll have to make a MyVolumio account with Volumio to access its plugin system which holds all the other streaming services hostage until you fork over that sweet, sweet email of yours. Not a big deal to some folks, but personally I absolutely hate having to make an account to use something especially when its my own data, maybe its just a nitpick but it just doesn’t sit that well with me. We live in a post SaSS world and Volumio is no different in that regard, devs have to make money somehow, especially on a free product.
Speaking of making money of a free product, UI data collection is also enabled by default, and you may or may not be inconvenienced by the fact that Bluetooth\SPDIF\Analog inputs, CD playback\ripping and streaming support for TIDAL, Qobuz and HiRes Audio are locked behind a paywall. The premium subscription tier with the above and a few other additional features is available for $7.49/mo or $70/yr with no current lifetime license option available. A 15 day trial is also available.
If any of those are a deal breaker well then, there you have it. Personally the free tier fulfill its purpose well enough for me to be happy with Volumio for now.
Minor UI glitches
The only other issues I encountered were minor UI glitchiness that would happen occasionally. I’ve found that the seek bar at the bottom will sometimes get out of sync with the song but that only happens during aggressive song switching, and isn’t that noticeable. Aside from that there is not much else wrong with Volumio. Back to regularly scheduled programming:
The Good (Reprise)
Onto the plugins which take this moderately interesting music player from OK to rad; Volumio has many plugins available, most of which come directly from the community which is always super awesome to see. In the plugin store you’ll find support for YouTube, Spotify, Soundcloud, Bandcamp, and clients for Logitech Media Server, Jellyfin, MiniDNLA, and many others.
Being from the community however, support for these plugins is limited. I had issues with the Spotify plugin until I found a Reddit thread on Volumio discussing this problem. For anyone else, the right Spotify plugin to use is Volumio Spotify Connect2 (make sure to enter your credentials too), but you’ll only be able to cast to your Volumio and not directly browse Spotify from inside of it, like you can with the Youtube plugin which has a built-in search. Plugins are not limited to just music services as there are also plugins for the hardware like IR remotes or GPIO control for advanced DIYers, as well as a last.fm scrobbler to track your listens.
As it stands this is a great music player with tons of features and is very flexible about where the music is coming from. Be it YouTube, Spotify or a music file proper, you can count on Volumio to play it and play it well. Honestly having a centralized hub where I can cast Spotify and use an audio only version of YouTube without seeing the insufferable comment section is a dream. If you are in the market for a home audio set-top box, have a spare Pi laying around, check out Volumio!