Virtual machines. They took the IT world by storm, and for good reasons. But the tech is just as relevant in a self-hosting environment.

Sure, you start with an app or two, play with those for a while, and maybe even get good results. But not even Nextcloud can do everything. You’ll find something that doesn’t feel right, some reason to bring another app into the picture. If you do repeated experimentation on one machine, you will eventually make a mess. Even if you are careful about backups, careful about how you install software, and careful to take notes on everything you do, the one system will eventually get too complex to make any further changes.

Virtual machines (“VMs” or “VM”) isolate things. They ensure the database server isn’t affected when you tinker with that podcasting app to see if it works better than Nextcloud. They guarantee that CPU and RAM are available to each program, and that Nextcloud can’t starve the SQL database of RAM. And lastly, you can snapshot an entire VM, try some change, and if something breaks, revert the entire VM to the snapshot.

Big picture: You install a hypervisor on a computer, same as you would install Windows. You install Windows/Linux on the virtual machine, the same as if you had built a desktop.

If this sounds like the basic premise behind VMWare, that’s because VMWare is (at its core) a VM tech. While I’m sure VMWare has a lot of good products in the virtualization space, I know nothing about their product stack, and my interests lie in other solutions.

Proxmox is an opinionated, reasonably-complete, appliance-like virtual machine host. It’s based on Debian Linux, but don’t let that intimidate you. So long as you have a computer with a pretty good SSD, it’ll handle the basics, with power left over to do some pretty advanced stuff easily.

I mention the SSD while talking about Proxmox for two reasons. First, SQL databases are almost unavoidable, and the SSD matters with SQL. Second, adding more virtual machines means more disk activity, and SSDs are more suitable for that extra load. If you’re going to run ~5 virtual machines on a single computer with a single disk, make that disk an SSD, and make sure your backups are in order.

Another option for virtualization is XCP-NG and Xen Orchestra. The setup process on this one requires a few more steps, but the docs don’t look that bad to get going. There’s a lot more capability in this route, such as the ability to automatically test your VM backups on a schedule to make sure the VMs still boot. I haven’t played with Xen enough to have a solid opinion on approachability, but it is on my list of things to look into.

If you run Windows, it’s pretty easy to get Hyper-V up and running. No experience from me, but it’s there. You can try it.

In addition to those, there’s a bunch of “management shims” around KVM, the low-level virtual machine tech that’s built into the Linux kernel. If you’re feeling ambitious, you can look them up.