Hey all, I am setting up my first “serious” HiFi rig at home and I wanted to get some feedback on what I’m planning on the streaming side of things. I’m writing this also to gather my thoughts so I apologize for the length [Edit: If I ever accomplish this I will write a tutorial to try and help the community in case anyone else has similar goals]:
- System76 Meerkat that I had leftover from an old project, running Ubuntu Server 20.04 LTS
- Roon Core installed on the boot drive, a 500 GB NVMe formatted as ext4 (I know that’s unnecessarily huge for my purposes, but it’s what I have on the Meerkat so I’m going with it)
- Secondary internal 2.5” 2TB HDD formatted as ext4 holding the actual music library consisting of FLACs
- External 2TB USB 3.0 HDD formatted as exFAT (for compatibility with Mac/Windows) for nightly (and upon mount) rsync with the internal 2TB music library
- 64 GB Micro SD formatted ext4 inserted directly in the Meerkat for nightly backup of the Roon database
- External USB DVD-R/W drive connected to Meerkat for (hopefully) automatic FLAC ripping of CDs to the internal 2TB drive using abcde upon CD insertion, ejecting on completion
- Will be using a separate Pi 3B+ with touchscreen running Ropieee as a “now playing” display. Another room will have a Pro-ject Stream Box S2 Ultra as an endpoint
- Will be controlling the Core via iPad Pro, iPhone, iMac, and/or MacBook Pro
- Will likely run Cockpit on the server for web based admin
- Docker for Roon Extension Manager (on this note I debated using the CD ripper extension instead of abcde but I would prefer the ripping to be automatic)
- Some web interface for Cron jobs (crontab-ui?) or I could use systemd instead of cron for my backup stuff and manage that with Cockpit
- Cockpit Docker plugin for managing containers in Cockpit
- Maybe (?) xubuntu-desktop in case I want to run dbPoweramp in Wine for ripping HDCDs… and just so I have a GUI in case there’s any other random non-CLI stuff I want to run
- System76 Drivers (I guess I need to install these per System76 website)
Some explanation. In my mind, it works like this…
- My Roon Core database is backed up nightly to MicroSD using Roon
- My music library on the 2.5” internal 2TB HDD will rsync nightly and upon mounting of the USB external 2TB drive, for 2 purposes: One being backup so I always have a mirror, and second so that if I disconnect the external drive, hook it up to a Mac/PC and add some music, when I reconnect to the Meerkat, the new music will automatically get transferred to the internal music library.
- On CD insertion, it rips to FLAC in the best possible way (whatever that may be) using abcde, fetching appropriate metadata and album art and saving it all to the internal 2.5” HDD. I might also have this trigger an rsync to the external HDD. Then ejects the CD.
What can go wrong and what am I not 100% sure of how to do?
- Don’t fully comprehend the best way to auto mount all of these drives via CLI on boot or media insertion (fstab? usbmount?)
- Still reading various tutorials on automating the CD ripping with abcde… not sure what settings to use for the config file to get the job done properly once the ripping actually begins… have looked at some premade scripts like “ARM” (automatic ripping machine), but it does a lot of things I don’t need (like ripping movies)
- Still debating whether to just use the CD ripper extension for Roon (seems like less of a nightmare to setup), in which case I assume I would just have to insert the CD and manually rip using the Roon app on my iPad
- Regarding the backup of my music, I think rsync is what I want, and I think a cron job makes sense for how to do it… I don’t care about having multiple backups or being able to go back in time on the library, I literally just want a mirror, where I can add music, reconnect the external drive and have new additions move to the actual internal library.
- If I use rsync (or any other backup utility) I anticipate running into issues because the internal library is ext4 and the external HDD is exFAT - among them, issues with time stamps (there’s a way to compensate for this by only looking at file size or reducing the sensitivity of the timestamp comparison), case sensitivity (not sure how much of an issue), and special characters (theoretically a “munge” function in abcde script should fix those)… I’m wondering if this is still workable.
- I also read that 20.04 has kernel support for exFAT which I assume means that I won’t need the usual fuse packages installed to work with exFAT. Just not sure how robust the kernel support for exFAT is…
- Do I need to worry about the ufw firewall, and if so, which ports will I need to open for all this to work…?
- Might make the internal HDD a samba share for giggles…
I’m sure there are a million and one other issues that I’ll run into. If you read this far, I would greatly appreciate any input regarding my overall plan. If you think the whole concept is dumb, but have a workable solution that uses the same hardware and accomplishes the same goals, I would love to hear it. I’ve been reading my butt off about all of the pieces of this puzzle, but each tutorial I’ve found differs slightly from what I’m planning in some way or another, so I really don’t know if I can get all of this working. I’m a Linux beginner but I am not afraid of the command line and I consider myself fairly tech-savvy. Thanks!!!