Anyone here use Navidrome or other self hosted music streaming services?
If you use Navidrome, does anyone have any clients apps that they prefer for any of their devices?
I’ve started my journey away from the big streaming services now that I have a home lab and am going back to self hosting my music library like back in the good ol’ days. I’m testing the waters with Navidrome and a few different clients but would love to hear anyone else’s experiences with other services that are similar.
I’ve been self-hosting my music library for an age. I’ve been through all the hits: mpd, subsonic, airsonic, ampache, jellyfin, navidrome, plex, lms and more. That’s not to say I’m an expert in it, I mostly just want something easy to use that stays out of my way. My biggest demand is having it make a random playlist, maybe based on genre. So take my suggestions with that in mind; I haven’t really dug into all the integrations and star ratings and podcast fetching and scrobbling and whatever the kids are into these days, I just want 8 hours of background to get me through the work day, or be able to quickly go to a single track when I want to.
For a client, Supersonic would be my recommendation on anything with a GUI/desktop environment. It’s in active development but it’s solid enough for my daily use. It’s Window/Linux and works with any Subsonic API-based server, including Navidrome. It’s easy to set up and decently customizable. I really like that it doesn’t take up an entire damn screen with album art and lyrics and whatnot, it scales down and sits nicely out of the way.
Since you’re homelabbing and obviously a total nerd with a pocket protector, I’ll lay out what I do and maybe it’ll give you some ideas (or maybe you can give me some).
I’ve got an NFS export on my NAS called Music where everything lives. Pretty standard and not interesting.
I run beets in a little container which ingests from a target folder on Music, this handles all the processing/metadata from Discogs and MusicBrainz and sorts everything into folders and names things correctly (most of the time) in the share. It’s also a queryable db so you can find that one 128k mp3 that you downloaded from Kazaa 20 years ago and replace it.
For a server, I’m using Gonic in another container pointed at that Music share. It’s easy to configure, it works great and it stays out of the way. Most importantly it respects and uses the folder structure of the underlying fileshare which jives really well with beets - not only are my folders and files all organized and pretty, my music server actually wants them that way. Gonic is a Subsonic API server, so it gets along well with Supersonic.
On my Linux machines without a desktop, I use CMUS as a player. This is important because it just uses an fstab mount of the Music export so it’s again all based around folder structure, which is in place because of beets and Gonic.
I work from home, so things like streaming on the go isn’t a high priority. I do have a VPN I can get to from my phone and play stuff (I use a free app called iSub that’s just another Subsonic client). Gonic handles all the necessary transcoding and it works pretty well the few times I’ve done it, but it’s really not my use case. I’d probably work on a more robust and easy to use setup if I was doing that more.
I’m the only one who uses this, so multiuser/account/‘music for mom’ stuff is way outside my scope. It’s probably doable with what I’m using, but I have no idea how easily.
As a fellow nerd, I’d love to hear how you’re set up. This stuff is great to geek on.
I have not heard of Gonic, but started checking out the repo a little bit. I’ll likely pull it down and give it a shot, especially since it uses subsonic.
I’m still in the tinkering stages of music hosting, but I’ll tell you what I’m doing right now:
I am testing Navidrome running as a service on my windows gaming/development PC. This is just temporary for testing it out.
All of my music is on an HDD mounted directly into the PC. This is also temporary.
I’ve been using MusicBrainz Picard for my metadata needs. (I stumbled upon Beets when i was looking for something to do this (just flipped a coin and tried Picard first). Not sure if it can be automated in the same fashion you described for Beets, but that would be nice so might dig a little further and try beets as well.
So far, I have only tried the Feishin for desktop clients, its ok, i like the look and feel but there are a few bugs related to fetching artists data, especially around artist images that are annoying. I’m working around this for now a little bit, but that workaround will not be ideal once i move things to my server. I already had plans to try supersonic since it seems like one of the most polished.
For mobile (iOS) i have tried Play:Sub and substreamer. both are ok, but i’ll probably stick with Play:Sub since it has carplay support and i like to listen to music while i drive.
Right now, I’m just port forwarding the Navidrome service for testing streaming outside of my network, so far so good there, works like a charm and is nice and responsive.
I do have plans to allow my small friend group access to this, and have a bit more of a robust solution for this that ties in to the whole home lab / server.
Speaking of that, my little Home lab, it is a small little thing i just built, it’s in a simple Mid ATX, runs a ryzen 7 7700, 64gb DDR5 ram (2 x 32, so if i need more later i can, although i feel like this is note likely). No fancy frills or anything. operates headless. I have an older RX 580 that i use for video transcoding.
I’m using Proxmox hypervisor as the primary OS. Everything is managed either by ssh or the web interface.
Right now i have one VM and just a couple of small containers.
The VM runs ubuntu server. This hosts my Plex media server. I have jellyfin installed as well (service is off rn) because i want to try it out, it’s a bit more decentralized just because for plex you have to make an account with them. That being said, plex has more apps on a variety of platforms (Tizen, Playstation, etc) and myself and friends use some of those devices so it makes it a bit of a pain. (There is a repo for a Tizen app, it’s just work to get that set up and i havent had time yet). I’m passing through my GPU to this VM for transcoding of videos. I also have a HDD in the pc that i am direct mounting to this VM, which is not ideal, but it is NTFS, and theres only so much i can do with it. Id rather create a directory in proxmox so sharing is a bit easier between the VM and containers, but i would have to wipe / reformat it (ext4) and i don’t have another drive big enough (8tb) at the moment to do a swap. So it will have to do for now until i can get another drive. For now i’m using Samba so i can manage that drive from my gaming pc.
I have two other containers (lxc) right now as well. One is for Nextcloud, the other is waiting for Navidrone (or whatever else) once i finish testing it out.
I have a few more containers coming down the pipeline soon as well, including:
Matrix / Element (a replacement for discord, but i’m doing light / moderate customization, so I’m having to build from source code and recontainerize after i have made my modifications)
Frigate. I’m moving away from arlo for my home security, as their subscription is annoying. I’d rather self host that stuff. This wont be until buy a new house though. I also dont currently have any devices / cameras that support RTSP. I also dont have any switches that suppoer POE, so it will be a while. I’ll probably also get a Coral module for tenserflow object detection.
Some sort of identity provider (looking into Authentik currently) so that i can have my friends and family that use these services regularly not have to have multiple logins for everything. I myself dont want to remember different passwords for Jellyfin, Nextcloud, Navidrome, Element, etc. Not sure what I’ll land on here yet, I don’t need some enterprise grade shit, but i want something vetted that is not still deep in development.
I’ll spin up one soon for some of my game servers, like Minecraft, 7D2D, etc. Right now those run on my gaming machine, which is annoying. SO i’m going to migrate them away to the server.
One for hosting some various websites and a few other scripts and apps that i have set up.
I’m sure there are like a million other things i could talk about, but i have to go help the wife with some laundry. Thanks again for the feedback and suggestions. I like talking shop so feel free to keep pestering me about it.
As an aside, I’m new to Proxmox (although the concept of virtualization is not new to me, we do a fair amount of that kind of stuff in Azure at my current job), and it has been a very long time since I have used any Linux distro in any capacity aside from WSL here and there (Used it at an old job for a while before they bought macbooks for everyone), but never got very deep.
I’m quite comfortable working in bash and other terminals so not having a GUI isn’t a problem. I just don’t yet have that deep grasp on all of the commands related to administering a server or doing fine configurations on my containers (things related to disk space, partitions, network interfaces, hardware interfacing, dir ownership and permissions, things like that.)
That being said, there is enough information out there for me to feel at least like i can keep my head above water, just probably not efficiently. Maybe I’m more capable than i think and I’m just at that point in the Dunning Kruger trajectory where i don’t have that false confidence and instead realize the vastness of knowledge i don’t posses.
Or maybe I’m just a dumbass who has no idea what he’s doing, Who knows at this point, lol!
That seems like a solid and sensible setup. I think there’s so many ways to get to where you’re going and none of them stand out as entirely better than another, it’s just about picking the feature set and pain points you’re willing to live with. Like Gonic works better for me for the reasons I stated, but I know that’s a opinionated use case, same for Supersonic.
I live in Linux land most of the time at work and home, so again my preferences point that way, and it sounds like you’re doing a lot more user facing stuff than I am (game servers, multi-user, file sharing, video, etc) so it makes sense that your stack would look different from mine.
beets vs Picard - I looked at both, honestly don’t remember why I landed on beets at the time, but it’s been good for me. I think beets won out because I had 30 years of music to process and it seemed more customizable and automatable that Picard. I think Picard makes more sense for fine-grained control of the metadata. I also liked that beets could be configured to pull from Discogs ahead of Musicbrainz as I was finding more of my content was represented on Discogs. I don’t know if that’s still the case and is probably a pretty minor thing in the long run.
That’s all I got. Zyxel L3 switch (because VLANs are handy), some old ITX AMD board for a NAS in a Fractal Node case with 4x 12TB drives, Dell SFF with a Xeon W3223 and 64GB that I snagged from a work decomm, and a UPS. After trying to live with old rackiron that was huge, clunky, loud and hot, I’m a fan of small, simple and quiet. I’m not running a datacenter here, I just want to be able to stand up VMs and mess around.
I used Proxmox for years and it’s great. I really like that it’s manageable/automatable from the cli alongside the GUI. These days I just use KVM/qemu/libvirtd on a stock Debian install, so basically Proxmox without the web stuff. I use all the big gun stacks at work - vCenter, AWS/Azure, Docker, K8, but honestly VMs and containers in Linux are just so simple to manage I’ve never found a reason to go crazy at home. I’ve considered running Docker just to manage updates/uptime/restarts in a less manual way but it’s just added complexity and I’m not sure what it’d get me. It’s all the same stuff, just a matter of which buttons to push. Like you say, if you’re familiar with virtualization it all looks familiar. I think Proxmox is a great way to go.
Probably depends on what you’re after as well as your budget, but I’ve found good outcomes from having a NAS separate from my virtualization. Slow changing storage with good redundancy and error checking vs speed and direct access. I’ve got a 1TB SSD in my host that runs all the VMs, then the NAS holds all my media and is a backup target for the host VM and containers. It’s some overhead but I’ve found the separation of concerns makes for easier management as well as being easier to scale one or the other without tearing things down.
I’d love to go the NAS route as opposed to DAS, but yeah, it’s not really in the cards right now simply due to budget, but that’s definitely a goal for the future when i can afford it. It would nice to have the redundancy, especially because if my plex media drive goes right now, that’s about 6 tb of movies and tv shows that would be gone, which would be a huge bummer. So the piece of mind would be nice there for sure.
I do have 2 old Mac Pro towers, a 3.1, and 5.1 (the big beefy tanks from like 2010-2012) And have considered repurposing one as a NAS, as they have four 3.5 bays built in. The 5.1 is decked out to the max with aftermarket CPU’s and RAM so its quite capable. Just need to get a new OS set up for that. What OS do you use for you NAS? I know TrueNAS CORE is super popular, so I would probably look into that first but would love recommendations.
Yeah, I considered something more akin to a rack style server, but went with a small build due to the cost, space requirements, noise, and heat. They look cool and I think there is a part of me that would “feel cool” by having that kind of setup, but yeah, at the end of the day, I don’t need anything like that.
Plus, even though its not server grade stuff, modern components that get the job done were not too expensive. My little containers so far barely use any of their allocated CPU / RAM, so i think it should be fairly future proof as far as what I’m trying to build.
I did have a funny little thing where i noticed on the Proxmox dashboard for the Plex VM that my used memory would be good for a while, then run up to about 98% usage and just stay there (VM is assigned 8GB!). I though maybe plex was either just a fucking memory hog (which, it sorta is, but not that extreme) or maybe there was a bug with a memory leak or something.
Turns out that Proxmox dashboard doesn’t factor in cache/buffers in the RAM (which, after thinking about it a bit more makes sense to me. Why would it care about differentiating the cached memory? That’s sorta outside the scope of it I think.), as I was able to verify usable memory was still quite high inside the vm using htop.
I’d like to set up some sort of monitoring that is a bit more robust so that i can have better insight into this sort of stuff. Another container coming down the pipeline I guess. lol
Now I’m the one that needs to shut up. I should be working on an azure function right now and instead i’m getting distracted. haha
Following, as I too need to get in on this action. I just got a 4-bay NVME NAS and new pc, so I’m considering repurposing the old tower into a sever as well. I still have all my music library from the last 25 years which contains plenty of stuff that isn’t even on streaming services. I also want to do an offline AI bot. Just need a home to install the lab in
Sweet, Its really fun to set up a home server, even if it can be a pain at times.
Let me know if you want any help or want more specifics on how I set mine up. Myself and others may be able to help you get started if you’re interested.
Yep, same as @Guy_Wachtel, happy to help if I can. Repurposing old hardware headed for the scrapheap is a great way to get into a home setup. I often argue that an old laptop is the best server there is because it has a built in battery backup (there’s a lot of problems with that argument, so I’m not dying on that hill lol)
If you want a dedicated host, I’d second Guy’s choice of Proxmox - download, image, setup and you’ve got a web ui to do all your virtualization with. There are plenty of other options but I think it’s the most straightforward and feature rich without dumping a bunch of time and money into it. After that it’s just a matter of finding services to run (like a media server), making a VM and installing it.
At the risk of sounding like a broken record, Debian. I’ve been a user for about 20 years and it feels comfortable without all the opinionated antics of Ubuntu. Mostly I just know how it works and how to make it jump when I need to, and it’s really, really stable. If I could only install Debian on a single system, it’d be my NAS.
mergerfs for union/FUSE (to present multiple directories over multiple drives as a single drive/mountpoint) and SnapRaid for parity. I’ve got a nightly cronjob set up to scrub the disks and email me about any issues with parity or SMART data. I had a failing drive a couple of years ago and had no problem slotting in a new one and rebuilding. That’s about as dumb simple as I can make it and still feel good about data integrity.
I know TrueNAS is the player in the space,but I feel like it’s the wrong tool for my use case. ZFS is as clunky and problematic as it is amazing (in the rare instance that something goes wrong, it goes horribly, often irrecoverably wrong),and I’m not a fan of having to have same-sized drives across vdevs. My NAS is mostly used for static/slowly changing read data. The few things I cannot live without (personal records, family photos, some music) are backed up offsite because the most amazing file system in the world won’t protect you from a house fire or theft or any of the non-tech things that can happen to a drive. For everything else, I can live with rolling back to what I had max 24 hours ago.
Again personal preference, but I’m not a fan of jamming extra technology into a NAS - it’s for storing, serving and protecting data. I don’t need containers or Docker or whatever newfangled thingymabob is happening, I don’t need dedup or snapshots or CoW, I just want my files. TrueNAS and the like seem like a very slick Homer Car for people that want one box to rule them all. That’s fine, but it’s really not what I need so I didn’t click with it. I guess you can make the case of utilizing free resources, but I’m not going to upset the apple cart where my files live for one more container.
I don’t think I’ve logged into my NAS in 8-9 months because it just keeps trucking with automated updates, parity scrubs and a simple email if something is amiss. It just sits there doing it’s job, so why load it up with a GUI and bells and whistles that are better served on my host. I handle multi-petabyte arrays at work, I know what those features are for, I just don’t need it for my midget porn and Garbage Pail Kids cosplay pics.
Oh, I actually am planning on taking an old motherboard/CPU, adding a bunch of used server drives (server parts deals) and making like a 20-40TB raided NAS later this year after I’m out of school. Primarily, I want to rip my 4K BDs because they apparently start to rot after like 5 years and I say bullshit I am not rebuying these movies again now. So I was just going to host that locally with something like Jellyfin. I don’t want to get too into the weeds and have to work on this thing, so I got a license for HexOS last year during their intro sale. I know they don’t have everything built into their nice UI, but underneath it’s TrueNAS so you can go around the UI and just do TrueNAS stuff if it’s needed.
I do retro gaming too, and I might be able to take advantage of RetroNAS to manage my ROMs all in one place. They aren’t huge, but not having to duplicate that and keep it updated across 3-4 machines would be nice.
Another pro is I could do that with my music too. I was planning on dropping my music collection on there (it’s not massive, I actually keep the whole thing on my laptop with a backup in the fireproof safe) as just the files that I currently have. Can I then just play those off my NAS from any computer with VLC? I’m not fancy, I just use VLC for everything. Since I’m already happy with my organization of the collection, what extra bonus features do I get by serving the music with a more advanced player? Or will VLC not work over the network?
VLC will work just fine. Probably the easiest way to set that up is to get your files on the NAS and (assuming Windows for your client computer) create an SMB share for the music folder, which should be an option in the GUI. That directory is then advertised on the network and you can connect to it through the file explorer and treat it like it’s a drive on your computer (with added latency since it’s over the network, but that shouldn’t matter). Once you’re happy with the setup you can map the drive in file explorer so it’s constantly available.
It does open up some options. Remote streaming out of the house or to players that can’t use a network share. A lot of servers have a built-in web player where you just go to a webpage and play music from there. Playlists, random tracks, favorites, history, etc - all the bells and whistles you’d expect from a Spotify-esque replacement. Whether that stuff’s worth it for you setting up the framework, no idea.
I will mention that any ‘media server’ ie Plex, Jellyfin, etc that serves video will likely also do audio - you’d just add your music folder and tell it to scan and serve the content. If you’re doing your BRs like that, might as well lump the music in as well and have a single place to access all your media. That also doesn’t preclude doing what I outlined above with VLC; you can both have your media server looking at those files as well as sharing the folder over the network.