//rp.wtf

My road to Navidrome

Mon Apr 21 2025

So, originally I didn't mean to write an article about personal music consumption, but I felt inspired by Emi's blogs about leaving Spotify. In the same conversation, Nozomu mentioned Navidrome, and that's how we got here.

In this blog I'll describe my journey to how I listen to music currently and the choices and the issues that led me to this point. Hopefully it helps someone make some choices of their own or, at the very least, is some light entertainment during a [long] toilet break.

Streaming services

Just like a lot of people, I listened to music mostly via Spotify. That was the perfect logical step after physical media before I realized that "X as a service" was just a different way of saying, "You don't own anything, and we can take everything away at any time." Then again, it didn't bother me that much back then, because my financial situation at the time didn't leave me with much money for either physical or digital releases of music anyway.

In time I started buying the odd release on Bandcamp, and reading about the mistreatment of artists by Spotify (which only seems to be getting worse) only reinforced that I should try and move away, or at the very least reduce my reliance on the streaming service. I had successfully de-googled at one point in my life (although I'm still a heavy YouTube user), and this minor lifestyle adjustment had similar vibes.

I tried out Tidal, which has higher quality audio—something that I appreciated a lot, although I wouldn't call myself an audiophile—and also rewards artists with a higher royalty payout. I was slightly disappointed with the size of Tidal's catalogue, so I knew that I wouldn't stick with it in the long run. I still think that out of all the available streaming service choices, Tidal is a very good option if you want to support the artists you love more and get high quality playback as a bonus. You can try it for free for a month or pay $1 to try it out for two months, which I think is a pretty good deal.

Physical media

Eventually I decided that I was going to try and focus on owned music, but for a guy in Eastern Europe, there aren't many options for where to get the music from. Bandcamp is great but has a limited catalog because, I guess, a lot of record labels don't want to give away DRM-free music. As for other storefronts, many just aren't available in my corner of the world thanks to copyright bureaucracy. They are also well secured and easily saw through my simple attempts to fool them with a commercial VPN. Eventually, I did discover Beatport and Junodownload which I still buy from occasionally.

This is where I realized that if I want to grow my music collection with all the stuff I love, present and past, I need to go back to physical media. I didn't have many CDs not because I didn't like them—quite the opposite—I loved to pore over collections of family members, wishing I could have my own, just as big. One of them was the source of a big chunk of my digital collection as a kid at one point. When my mom and I went to visit them, I brought my desktop PC tower along and spent the whole day ripping my favorite CDs to MP3. It must've been like 20 or so years ago. I distinctly remember that I used CDex and ripped them to 192 kbps files, even though, I think, 128 kbps was the "standard", but I felt like the compression artifacts were too audible, while 192 kbps, for some reason, seemed perfectly fine to me.

I didn't have many CDs because [I thought that] physical media is expensive. And then I found out about Discogs.

If you don't know about Discogs, in a nutshell, it's basically a huge marketplace + database + a bit of a social network for music nerds. It's fantastic. You can get a lot of stuff for ridiculously cheap prices. For example, you could get a sealed copy of a System of a Down "Mezmerize" digipak for three euros, if you looked right. And a big part of what makes physical media appealing is the thrill of the hunt!

Basically, I could just buy used (or mint) copies from Discogs, rip them, feel like I actually "own" the music, and have nice art and lyric booklets to look at.

It's an interesting conversation from the artist support perspective, which is important to me. If I buy a used record, the artist gets nothing, which is a shame, and even if I buy a brand-new record from a record store, in theory the artist will probably get less than they would from me streaming their music on occasion during my (or Spotify's) lifetime. Unless you're an indie with less than a thousand streams. Then you are kind of screwed now.

So, if we're considering the artist support angle, especially for indies, the best thing I can probably do is buy the record at their show. Or, if they sell on Bandcamp, on Bandcamp Fridays.

If you care to have a look, here's a random threads.net conversation conversation I found while looking into this.

Vinyl or Compact Disc

Now that I had decided to commit to growing my physical music collection, I found myself in a dilemma: do I go for vinyl or CD? In audio geek circles, this is a holy war akin to tabs vs. spaces. Here are my thoughts at the time.

Vinyl seemed like the obvious choice at first. It's the coolest music storage format; there's no arguing that. It's quite a ritual to put on a record on the spinning motor and slowly lower the needle until it connects with the grooves. Considering that vinyl is more expensive, which can definitely be argued as a downside, I think it makes you appreciate your collection more and grow more attached to the records you have. If streaming is fast food, listening to vinyl is like enjoying a five-Michelin-star dinner.

As an analog format, vinyl theoretically has no limitations in regard to the frequencies it can reproduce, and I'm guessing the same is true with dynamic range (the difference between the quietest and the loudest parts of a recording), although there is an upper limit, considering the sound is represented by physical grooves, but it's probably outside the human hearing range. Also, there are frequencies that you can feel, even if you can't hear them, and also they might interact with frequencies that you can hear. That should make vinyl the clear winner. Sonically, at least.

Even with all these upsides, I started leaning more and more towards compact discs.

Usually you'd put the record player in the living room, but that's not even where I consume the most music. So I'd put it probably where I work, but what if I want to listen to music in the living room? Do I get a second record player? Or do I just rip the vinyl to digital audio? It seems like then I lose the point of getting vinyl in the first place, but how do I listen on the go then? Ripping vinyl feels like a science of its own. It's an analog process because I have to literally record the playback, so ripping an hour of music off vinyl will take an hour. Can I use my existing gear, or do I need to buy something where I can stick an RCA cable in? I have to make sure my gain is right so the audio doesn't clip, and there are probably a bunch of things that I can't think of off the top of my head. Basically, it can add up to being quite pricey and time-consuming, although I'm sure I'd learn a whole lot. Records take up more space. Technically, vinyl lasts longer than CDs, but its storage and playback need more care and attention (which, I admit, does contribute to its romantic nature).

CDs are way cheaper. They are easier and faster to rip. I already have some, so I'm not starting from nothing. I already have a Blu-ray writer, so I am already equipped for ripping, backup and making copies. The sonic limitations don't concern me that much. I'm fairly sure I wouldn't be able to tell the difference on any of the audio gear I use for listening to music anyway. All in all, the CD just feels more practical and convenient. Basically, for my individual needs, the CD is the winner, even if that excludes me from the cool kids club.

But one of my primary goals of replacing streaming services, even if partially, is to be able to listen anywhere, so I need to pick a digital format for storing the audio.

MP3 or FLAC

I'll be honest, I can't tell the difference between a 320kbps MP3 and a FLAC. This statement alone is probably enough to get me a restraining order that prohibits me from being within a one-mile radius of the cool kids club.

I've done primitive blind A/B tests with myself, but thankfully there are people who, unlike me, aren't too lazy to do experiments a bit more scientific in nature. There are videos on YouTube showing people doing reversed-phase comparisons and such, and all I can hear is some missing frequencies very high up. Maybe with these frequencies missing, I'm also missing out on inaudible frequencies that will make my ears tingle, but this won't matter when I'm listening in my car or in the gym.

So I chose FLAC as the CD music storage format. The main rationale is that if a disc succumbs to disc rot or something else unfortunate befalls it, I have lossless files, which I can use to restore a copy. The extra quality is just a nice bonus.

For all digital purchases, I do get the MP3 files, though. Apart from Bandcamp, stores might not even offer FLAC in the first place.

foobar2000

As a kid, I really whipped the llama's ass. I used Winamp. I loved the skins. All my music was just put in a single, big playlist, and that was it. Then in university, my roommate at the time showed me foobar2000. It was pretty basic and had no skins, but it had a "media library"—a concept that at the time was pretty foreign to me, but pretty soon Winamp felt like old news.

Remembering that, I went to go and download it. Sadly, I realized that foobar2000 had no Linux version, but as it turns out, it ran just fine through WINE, and that was what I'd use to listen to stuff from the desktop. I'd just set up a SAMBA server on the living room PC, which stored the actual music, mounted the share to a folder on my machine, and added it as the folder of my media library. Worked like a charm. Down the line I also learned about ReplayGain, which ensures that all music has the same approximate volume on playback, and I started utilizing that too.

I also didn't have to rack my brain about what to use on the phone, as foobar2000 was also available on the Apple App Store with the same feature set, as well as exposing an FTP server, so it's simple to upload music without fiddling with Apple's walled garden.

That served me well for a good time, but there was the nagging feeling every time I had to upload new music files to my phone. I was just doubling my collection, and it felt redundant. And this approach had an expiration date—the moment my music library exceeds the size of the free space on my phone. It was far away, as I don't take many photos or install many applications, but it was there regardless.

At this point any normal, more-or-less tech-savvy person would say, "Just install a media server, Jellyfin, or whatever. This will solve all of your problems."

But I went for a stupid, overengineered solution, and looking back at it, I can't tell you why.

What I did was I set up a home VPN with Wireguard so I could directly connect to my SAMBA share from my phone. That for me seemed elegant. Nothing had really changed from the phone's perspective except that instead of the media library being local, that same media library was remote. No need to duplicate my media library anymore—what a relief!

There were several problems with this approach, which only became apparent over time. First, the relative battery drain when comparing to local playback. The VPN had to send entire FLACs over the encrypted connection. This also had quite an impact on my data usage, as an album in FLAC format is like 400MB, and I got the cheapest data plan my mobile provider will give me, so as you can imagine, if I'm outside the range of WiFi, there's not much music I can listen to. If only there was a way that I could pre-cache music on my phone so I don't incur data usage charges while listening…

enter Navidrome

So in time, Emilio posted about his musical collection journey, which led me to decide that I'd switch to using a media server for my own collection as well.

But Jellyfin felt like too much. The only multimedia I care for managing this way is music. Then came Nozomu's post, which made me aware of Navidrome. It was just what I was looking for. Lean and music-focused.

It supports the formats I need it to support—MP3 and FLAC—and it has a media library and playlists. And some neat features on top, like ratings, artist bios, and sharing functionality, as well as multiple users if I ever became successful in gaslighting my girlfriend into not listening to the radio. I then learned that it supports a "Subsonic-compatible API," which would basically mean that I'd have plenty of clients to choose from.

The install was quite easy on my Ubuntu living room PC, as was the configuration. You just point it to where the music is, and it will do the rest. There's some extra stuff to configure, like the PasswordEncryptionKey, so the passwords are hashed more securely (I recommend checking out the Security Considerations section from their documentation). In total, there are plenty of configuration options for various things, which the documentation explains pretty well. My current Navidrome configuration looks like this:

DataFolder = "/var/lib/navidrome"
MusicFolder = "/media/user/external-hdd/music"
LastFM.ApiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
LastFM.Secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Address = "localhost"
Port = "9000"
PasswordEncryptionKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

About the reverse-proxy part, I set one up because I wanted HTTPS to work so I know that I'm not sending stuff with plain text and have an SSL certificate so I know that I'm connecting to the right server. This is also a recommendation in the "Security Considerations" section. Usually I'd use nginx, but I wanted to try Caddy as I wanted stuff to "just work" without fiddling in configs, and Caddy comes with Let's Encrypt support out of the box, so setting all that up was fast and painless. Here's my Caddyfile:

https://mynavidromedomain.com:6969 {
    reverse_proxy localhost:9000
}

Now I could point my client application (or web browser) to https://mynavidromedomain.com:6969 and start listening!

Migrating playlists

During my time with foobar2000, I had made some playlists, which I stored in its proprietary FPL format. To migrate them to Navidrome, I only had to save them as M3U and M3U8, as I had read that Navidrome supports reading playlist files and would sync them to internal playlists, which I thought was a good selling point.

So, I resaved them as M3U8 (so foobar2000 encodes them as UTF-8). I had to replace the path separators via a script because foobar2000 is a Windows player, but Navidrome is hosted on a Linux machine.

Instantly Navidrome picked the playlists up and imported them, and any changes to the files would be synced up right away. Missing files, if any, are reported in its output log. It's how I discovered the path separator issue in the first place.

Now, I wanted to not rely on Navidrome's internal playlists as much, as I can reuse the M3U8 files in other players or if I ever switch away from Navidrome to something different.

That'd mean that I would need something to continue managing the playlists with. For simple cases, I can just open the playlist in a text editor and do any edits, as M3U/M3U8 files are just plain text file lists separated by line breaks. I could continue using foobar2000, but then I'd have to replace the file separators every time, which is a minor inconvenience. I tried VLC media player, which I had already installed, but it HTML-encodes things like spaces (basically, it treats paths as URLs), which apparently no other player on Earth can parse. Eventually I settled on Exaile, which is a FOSS music player, and it handled playlist management just fine for my needs.

Clients

I needed something I could listen to the music through. Navidrome ships with a web app player itself, but it's kind of barebones and resembles more of an admin interface than a music player.

I mentioned the Subsonic API compatibility before. Subsonic is another media server software, and Navidrome, if I understand correctly, mimics its HTTP API and the feature set of the API, making them compatible, which opens up a whole lot of possibilities regarding what applications can be used to listen to music.

For the desktop, I didn't explore too much and settled on the first one I tried—Supersonic. I really like its simplicity, the top bar with web-browser-like navigation. It did crash once when I was making a playlist, though.

For my iPhone, after trying a couple of options, I decided to stick with iSub. It's free (without ads) and has plenty of features, although I wish it had a bit more of a modern experience for exploring the media library.

At first I hadn't set up transcoding, which, once again, almost drained my data plan, reminding me of my former foobar2000+VPN experience. I went into iSub's settings and set it to transcode the audio to 320 kbit while I'm on mobile data, so it doesn't stream 1000 kbit FLACs. To further save data, I precached my more popular playlists (you can left-swipe a thing to open a context menu that allows you to precache a song, an album, an artist, or an entire playlist). The downside is that the screen has to be on while you're caching the data, but I suspect this is an iPhone hardware limitation, as I also had to keep the screen on while foobar2000 ran its FTP server. iSub also caches every song you play, so replaying a track won't use data. It even displays a small icon next to the track to indicate which song is already in the cache. As mentioned before, there are settings for all this stuff!

Both Supersonic and iSub support gapless playback for enjoying those nice prog-rock concept albums uninterrupted.

I'm only a couple of days into using Navidrome and its compatible clients as my main mode of music consumption. So far it's been a very pleasant experience, with just a couple minor hiccups.

My ripping "stack"

I also figured that I'll write up a little summary of the applications I use for bringing the music from CD to Navidrome. I hope to simplify it with time, but this'll have to do for now, because I want to stop fiddling with applications and just focus on enjoying the music for a while.

Conclusion

Fuck me, I started planning this article and thinking, at least it won't be as long as my Godot add-on article, and this ended up being even quite a bit longer. Anyway, much love to you if you read until the very end! I really appreciate it, because I enjoyed writing it and reminiscing, and now you and I can talk about it over a beer.

I'm sure my audio collection strategy will continue evolving, and I will try updating the article as I go and discover new things, but for now I'm quite happy and feel inspired to listen to and buy more music than I ever did before.

If you have anything to add, comment, criticize, or recommend, tag me on bsky or mastodon!