Hey Kyle!
The whole infrastructure grow very quick and in different ways. Initially I started BoxyBSD just by providing my free resources of already present and personal used hardware for this project - this was mostly running on bhyve with FreeBSD. Later it grew and I wanted to continue the project and scale more better and also provide are more stable service - more stable in that there aren’t any required maintenance windows for node patching etc - this required live migrations and I therefore started with Proxmox. This year, I also started with XCP-ng (based on Xen) as an additional platform which also works pretty well. This makes the provisioning a bite more complicated but the automation is done by Terraform and/or Ansible. - depending on the used node. For the placement (evaluating which node fits best for a new VM from a resource perspective which gets live evaluated) I use my self written tool ProxLB - this project is now also opensource and free quickly.
So, overall I use:
Hypervisor: bhyve, KVM (Proxmox), Xen (XCP-ng)
Automation: ProxLB, Ansible, Terraform (BPG provider), Matrix Bot
You can also find my slides about that project here:
https://cdn.gyptazy.com/files/talks/BoxyBSD_A_non_profit_hosting_platform_for_education_and_research.pdf
Example of managing VMs on bhyve/FreeBSD orchestrated by Ansible:
https://gyptazy.com/howto-managing-vm-on-freebsd-with-bhyve-and-vm-bhyve/
A stripped down example of provisioning FreeBSD on Proxmox with Terraform/BPG:
https://gyptazy.com/howto-automated-deployment-of-freebsd-vms-in-proxmox-with-proxlb-and-terraform/
And more about #proxlb at:
https://github.com/gyptazy/ProxLB
Matrix Provisioning Bot:
I also wrote a small Matrix Provisioning Bot which gets used on the Matrix channel of BoxyBSD with some additional checks (it fetches a string from GitHub for validation before providing boxes):
https://boxybsd.com/matrix-bot/
Hope it helps! If you have any further questions - feel free to ask :)
@kta