I’ve been running ROCK on ESXi (free) for a year without issue. I have a 1U server with 32GB and plenty of cores for all my VMs. Containers are great but would add significant complexity to my environment (as example, I use the virtual network layer in ESXi to attach virtual NICs to VLANs for isolation). I don’t mind dedicating resources to ROCK instead of “sharing”. That’s obviously a different philosophy but it works for me. The other nice thing is that I never worry about upgrades within the ROCK path. There is no concept of a “node” which needs to be maintained. ROCK takes care of itself. If I was managing a ton of microservices I’d certainly transition to a container architecture but honestly I just don’t have that much to maintain at home. In my current set-up I can upgrade and reboot every “Linux install” on my server and ROCK is never interrupted. That cannot be done with containers unless you’ve got multiple nodes and the containers can be fronted by a LB (which ROON cannot). While I love the enthusiasm I see for loading Roon as a container… it just won’t work in all environments. For that reason loading ROCK in a VM makes a lot more sense if you’re not wanting to drop another bit of hardware into the environment. And, on top of all that, the money I saved by not buying a NuC went directly into a lifetime sub and I’ve got 99% of the NuC benefit (with faster cores).
One other bit I wanted to mention. “Sharing” of resource in ROCK I don’t recommend. I don’t have a routine for listening nor do I always listen to the same zones. Some of my zones I use upsampling. Some of files need DSD (multi-channel) → PCM (2-ch) conversion. Additionally, there are others in my house who use Roon. Without routine this means I may be listening at the same time I’m hammering another VM or multiple VMs. I get consistent, predictable, performance from ROCK regardless of what my other VMs are doing as I’ve dedicated resources to ROCK. I can drive all my other VMs into the ground and I never hear from a family member that “somethings wrong with Roon”. That’s a priority for me and has worked consistently over the year. Again, a different philosophy to how to run Core.
Anywhoo… just wanted to throw an alternative “why” out there.