Configuring a NAS for a friend in need. Many questions. [music] [pi-hole] [vpn]

I have and older friend in his 70s who’s done a lot of good for a lot of people. He occasionally comes to me for help with tech stuff, and I help him any way I can. He deserves it. Recently he asked about making his music collection available in his workshop. Through the evolution of that conversation I was able to ascertain several things he actually wants. Here is the goal, prioritized in order of most important:

  • Backup all his classical music (~500 CDs)
    
  • Tag all music by composer, and instrument (the latter of which doesn't appear to be included in file meta-data)
    
  • Self-host the collection and make it available wherever he is
    
  • Data redundancy (he's been educated that RAID is not a backup 😛)
    
  • Networked file storage accessible from multiple devices (mac, windows, mobile) for work related docs and various other files important to him
    
  • Low maintenance (less calls to me). AKA "It just works"
    
  • Pi-hole for whole network ad-blocking
    
  • VPN on his iPhone for mobile ad-blocking through pi-hole.
    

For additional clarity, the scope of his needs are unlikely to expand from what is stated above. He has a large movie library too, but seemed very convinced he won’t ever want to stream it. Anyone posting here can be confident this is the full scope of the project. Outside of that first bullet point I’ve not technically done any of this before. However, all of it sits squarely within my general aptitudes and I learn quickly. Below I’ll post some of my immediate questions in order of importance. I’m sure I’ll have more.

  1. What is a good, easy to use software for ripping CDs (WITH metadata)? 
    

My friend will be doing the majority of the ripping. He is pretty decent navigating modern programs for his age, and can follow instructions well. We tried EAC, and that seemed to work fine but the files weren’t tagged with any metadata, meaning you’re relying on a good file name to do the heavy lifting in whatever streaming software we go with. If EAC can do this I couldn’t find the option for it. I’d like to avoid having him use one program to rip, and another to update all the meta-data.

  1. How to tag music by instrument(s)? 
    

I could not find a good automated solution for tagging an entire collection by instrument(s). Manually doing it is not something I’d wish on either of us. I really hope SOMEONE has some insights to share on this because otherwise this part of the project probably won’t happen.

  1. Navidrome? Jellyfin? Something else?
    
  2. DIY NAS or turn-key solution? 
    

Budget isn’t a huge concern, but I don’t want him to throw money away needlessly. I’ve built about a dozen computers so I’m comfortable doing it myself.

  1. True-NAS Scale? Unraid? Something else? 
    

He really wants to avoid monthly charges. I can appreciate that. True NAS scares me though. My research on TrueNAS keeps leading to deployment methods I find out later no longer work or have been deprecated. Just one example is mountain of conflicting information on setting up Pi-Hole (see below).

  1. Why do I even have question about Pi-hole on here? 
    

Pi-hole seems like it should be the easiest part of this whole process (to me), but I’m reading many reports of it being tricky on TrueNAS. Many are recommending TrueCharts installation method instead. However, TrueCharts website says they don’t support it anymore and to use TalosOS. Nothing about TalosOS looks like a better solution to me. I’ll take as much time as necessary to make this work for him, but anything involving Linux is like digging through weeds that keep growing before your eyes unless you are already living and breathing that world. I’ll do it, but I need good documentation.

  1. A question about adding drives to the array: 
    

My guess is we’ll probably use two drives in RAID 1. It’s also my understanding that adding drives and migrating to Raid 5 or 6 is technically possible, but in practice not really. From what I’ve found there are finicky ways you can do it but you won’t have redundancy during the process. I’m confused because if I’m backing up the data, wiping everything, and building a new array how is that different? I don’t have redundancy with that method either. RAID isn’t a backup so assuming a backup already exists (which it will) why does it matter? :confused: Anyway, how am I meant to do this if he wants to expand later?

  1. All the questions I'll think of later... 😅
    

For transparency I’m cross-posting this in a few other websites to reach more eyeballs. If that offends anyone, I’m sorry, but I really want to make sure I do this right.

LTT cross-post: sorry, I can’t include links here
Serve the Home cross-post: sorry, I can’t include links here

Without going into technical details of a potential NAS, there are people far more qualified to answer this than myself. Some general remarks about your goal.

Digitizing CDs is hard, if you want to do it right.

  • You need to be sure that the rip is accurate, see http://accuraterip.com/
  • Decide on a proper audio format for storing
  • You have to be sure that the metadata is available (non-commerical CDs, like classic, not often the case) and if so, that it is accurate. => You have to check all fields for all tracks. Easy stuff, e.g. wrong spelling of an artists, inconsitent usage of “The Artist” vs “Artists, The”, or adding CD number to Album names …
  • Decide a scheme for how to tag the metadata in the files. Especially for classic, this can become tricky. Out of the blue, I wouldn’t have an opinion on how to store the instruments …
  • Get the correct cover and back side of the CD => Scan it yourself, crop it, rotate it, store it …
  • You made it this far, scan the whole booklet
  • Ah, and also scan the print on the CD

For some of these things there are helper tools and information online.

I wrote over time some python stuff to help me with all of that, but it will take some time

Ah and if he has some vinyl … don’t. Just don’t …

Ah and if he has some vinyl … don’t. Just don’t …

He did ask about it LOL, but only for one record.

You need to be sure that the rip is accurate, see [link removed]

IIRC from my previous research EAC uses the same or similar tech. My main issue is it doesn’t seem to add metatdata to the files, so we’d have to use another program for that which complicates the process. Does Whipper solve this issue, or maybe I just missed something in the EAC settings. I looked through everything.

EAC is pretty much the gold standard for ripping CDs on Windows. It can be a little fiddly to setup in the way you want it to work. E.g. I have it look up metadata, including cover info, convert both to FLAC and mp3 in separate folder structures.
Start by following this guide.

500 CDs stored in lossless FLAC format should require only 300-400GB storage. Fits easily on a single SSD/NVMe.

I am not into classical music, so I don’t know what metadata is available from supported sources.
I typically spend some time cleaning up metadata (id3 tags) on ripped files with an editor. I have tried many editors both on Windows and Linux, and while I find several that do what I need, none are perfect and therefore require personal selection.

How/where will your friend listen to the music? Does he have a stereo that he uses most of the time? A phone? A DAC?
Or will he listen on a computer with a thick client (VLC? ITunes?) or from a browser window (Navidrome, Jellifin)?

The former setup typically streams music from a server. The standard technology to stream music is DLNA. There is plenty of open-source and free server software available. Most linux distros package a very simple app called miniDLNA. Good to try out the technology, but it only supports searching using some basic tags and likely will not satisfy the listening requirements.

I think the music selection and listening in Jellyfin is rather limited as it is targeted towards video. Try Navidrome (again, easy to setup in a docker container) with some sample files to validate the user experience is satisfactory.

The requirements are not complicated. There are many off-the-shelf solutions that will work.

If you’re looking to DIY, you should ask yourself if a basic Linux box (e.g. debian/ubuntu/rocky) with samba share and a docker image for Pi-hole is all you need.
TrueNAS does a lot of complicated things, and yes, for the most part it makes a relatively easy GUI for all of it. But I am not sure you need all of it. It’s great if you’re generally familiar with TrueNAS or the underlying technologies (ZFS, Kerberos).

TrueCharts is dead for TrueNAS, don’t even waste a sec thinking about it.
Pi-hole runs fine on TrueNAS from the default catalog with default settings. I have no idea about issues.
Pi-hole also runs fine in docker, or on a raspberry pi. Maybe the latter is best if you’re not familiar with K8s or docker.

You want a desktop drive with calibrated offset and use Cyanrip which very likely will be less painful than EAC in the long run and it’s CLI and runs off a single line (there’s also a Windows build). See pkg-message « cyanrip « audio - ports - FreeBSD ports tree

Packaged by several distros, cyanrip package versions - Repology

Given the amount of data and lets say he’s using FLAC and we calculate on high numbers there’s about 250Gb worth of data (500Mbyte per disc) so a simple 1-2TB SSD mirror setup will be fine (ZFS recommended).

There will be some manual taggning involved given the requirements, I’d suggest using Foobar2000 for additional metadata and/or changes as it’s simple to use and works very well in general.

As for network accessabilily, run Samba and NFS. If DLNA/UPNP is needed just add Gerbera to the mix and pretty much everything is covered without any/much hassle.

Ditch Pi-Hole, just use blocky (GitHub - 0xERR0R/blocky: Fast and lightweight DNS proxy as ad-blocker for local network with many features) or adguardhome (GitHub - AdguardTeam/AdGuardHome: Network-wide ads & trackers blocking DNS server) and you’re done with much less hassle.
These are packaged by multiple distros too such as FreeBSD, Arch and Alpine.

As far as performance goes you’ll be fine with pretty much anything, even a RockPro64 ( ROCKPro64 - PINE64 ) and a ASM1166 controller card (yes, these support optical drives) will do fine for an all in one box.

If you want a simple x86 box I think ODROID-H4 PLUS – ODROID would fit the bill nicely (cases etc are also available for cheap prices on the same site), just add 16Gb of RAM to be safe in the long run and run whatever you’re comfortable with.

If you run a distro which packages all this software it will be very little work to maintain it instead of messing around with docker etc.

As for the VPN stuff, Wireguard will do fine but there are alternatives like Tailscale etc but I honestly think that’s more job than what it’s worth.

I guess you could go NVME for storage but that will require significantly more expensive hardware and to little/no gain at all in this case.

Ah and if he has some vinyl … don’t. Just don’t … 

He did ask about it LOL, but only for one record.

Haha, well it would be a nice exercise in audio engineering :wink:


EAC and whipper are both capable of adding metadata if it is available. Both use various backends to search for the data, but as I said in my previous answer, I wouldn’t expect it to be too accurate for your audio subset. Thus, expect at least SOME manual intervention. (you could also use https://picard.musicbrainz.org/ for lookup/editing) For me discogs is the ground truth and everything is taken from there, by hand …

Thanks for all the feedback. That’s given me plenty to go on. I appreciate it. If I have any more questions later I’ll be back. :slight_smile:

Don’t know about EAC but Whipper pulls metadata from Musicbrainz during the RIP if the disc’s TOC can be found (actually it won’t rip at all otherwise I think).

Metadata needs to be available on whatever metadata source you are using. MusicBrainz is probably the most detailed database, but it is by no means perfect or complete. If it isn’t available, you’ll have to do it by hand (and/or enter it on MusicBrainz and then pull it in).
Tagging music collections properly is a tedious process, and very rarely is it a one-click-fits-all-approach.

However, tagging is just one side of things. Accessing that data is a whole different rabbit hole. Personally I use Jellyfin, I tried using Navidrome briefly but it seemed to do worse with my collection then Jellyfin even though it is supposed to be specialised in music.
Both of them support composers, but I’m not aware of any music server that supports sorting by instrument. Picard can tag them:

 ffprobe 01\ Prelude_\ The\ Atlas\ March.flac
...
    PERFORMER       : Waltraut Wächter (concertmaster);Taka Kigawa (piano);Ragna Schirmer (piano);MDR Sinfonieorchester (orchestra)

 mediainfo 01\ Prelude_\ The\ Atlas\ March.flac
...
Performer                                : Waltraut Wächter (concertmaster);Taka Kigawa (piano);Ragna Schirmer (piano);MDR Sinfonieorchester (orchestra)

… but I haven’t seen anything actually access them.
I can search and find the names in Jellyfin, but they aren’t connected to any tracks.

I don’t see why you’d use whipper over cyanrip though these days which uses a lot less deps and also supports Musicbrainz

At the end of the day it doesn’t really matter what’s used for ripping, as long as it has AccurateRip support, and most decent rippers these days do. From the readme I can’t even tell why I’d switch beyond a generic “we’re better” (which fun fact: everyone says that). Use what you’re comfortable with and that’s that.

If you’re ripping that amount of volume you could also set up ARM so you wouldn’t even have to interact with anything outside of popping a new CD in every now and again.

Could also use some elaboration by the way. Setting up pi-hole took me an entire 5 minutes until my entire network was using it.
But same thing really, they probably all use the same blocklists (and if not, you can configure them to do so), so one over the other is a matter of comfort.

Well, it does to some extent in regards of flexibility, compatibility and performance. ffmpeg’s FLAC encoder is also much faster than flac official one so less time spent waiting a process to finish.

pkg install blocky (or whatever package manager you use), add it to init.d/rc.d and start it
Update your DHCP server’s settings regarding assigned DNS
Less than 5 minutes, no remote scripts or “unrelated/remote fetched” services/applications and integrated with your OS package manager so less hassle

This topic was automatically closed 273 days after the last reply. New replies are no longer allowed.