When building the new Elitedesk server I was sure it would run an hypervisor so it can perform lots of different tasks. A few years ago I would have used Vmware ESXi since that is the industry standard. But in recent years I tend to choose more open software, and ESXi is also getting less interesting for small businesses since Broadcom took over Vmware.

Patrick from ServeTheHome explains it well in his video and I think it is especially an issue for the small and medium size business market we typically have here in Belgium. For a lot of smaller companies it will just become too expensive and they will need to look for an alternative.

I have been using Proxmox for a few years already and in my opinion it is a perfect fit for smaller companies that need an affordable solution. Since it is running on Debian it is also a popular choice with Linux users.

A good alternative is XCP-NG, especially for larger companies, it looks to be more scalable more in line with how ESXi is working.

Tom Lawrence from Lawrence Systems explains it well in his video, go and have a look at his YouTube channel and website if you are interested in a company that promotes more affordable solutions and software.

At the moment I am running two Proxmox nodes, the new Elitedesk and an older Intel NUC. Both with dedicated SSD storage and shared storage. I am not using high availability but have daily backups set up on both nodes, so in case of failure I will have to replace whatever is broken to get that node working again. In that time I will not have enough resource to start all services again, but thanks to the shared storage I will be able to restart the most important VM's on the other node.

The VM's and LXC containers on the Elitedesk

Around halve of the services are running in an LXC container, these containers share the linux kernel and resources like memory from the host making them a lot more efficient. For example, when creating a container you can set an amount of memory the container can use, but this is just a limit, the unused memory will still be available to the host. In a VM you typically reserve the entire allocated memory making it unavailable for the host and other VM's.

I prefer VM's when I want more separation from the host or would like to run multiple applications that are working together to provide a single service. The reverse proxy and web server is a VM for security reasons, just like the PFSense firewall. The Home Assistant VM and the Truenas VM need hardware pass-through, that is also a functionality a container cannot provide.

Two important VM's are the firewall and the virtualized NAS. The firewall has a bridged connection to my network and has a second connection to a virtual switch that is also bridged to a physical network port. The virtual NAS is mainly secondary storage in addition to the main NAS providing storage for less important files or just temporary storage.

Another important VM is debian-proxy since this VM is making all the public web services accessible on a single public IP address and is maintaining the Lets Encrypt certificates for all forwarded domains in a central place. Some less important websites are also hosted on this machine.

The debian-db container is hosting all the databases and alpine-wg is providing remote access to the virtual network.

Another fun one is the Windows 10 machine, this VM has direct access to the video cart and is responsible for streaming games to the TV and Steamdeck handheld. And of course are we also running a Minecraft server. 🙂

In a later post I will get into more detail about some of the services running on Proxmox.