Now that I had an ESXi up and running successfully, it was time to decide on the VMs that will run. The clear-cut choices were one Ubuntu server and one Windows server. The former would be running docker and all the containers, whereas the latter would provide LDAP (with Active Directory) and DNS services. Pretty good with those two, I started looking for something that can serve as a NAS.

Initially, I was more inclined to run the NAS from a docker container, but it is always good to separate storage from applications. For example, if my apps take up too much RAM and start up the OOM killer, I would not want to lose my NAS share on my PC. With this choice made, I had only two options really, TrueNAS Core (the erstwhile FreeNAS ) and openmediavault . Since I did not have enough disks for RAID as of then, and given that I already was limited in terms of RAM, ZFS was a price I was not ready to pay. So, I went with openmediavault and btrfs for the filesystem.

With all the plans in place, it was a pretty straightforward task to install the VMs and perform the so-called day-0 and day-1 configurations.

  • For Ubuntu, I allocated all four cores and 8 out of the 16 GB RAM as I expected this to be where all applications run. I also enabled passthrough of the Intel Iris Plus 655 graphics as a PCIe device which I will use later. This needed me to prevent the ESXi kernel from grabbing the iGPU during boot, as outlined here , otherwise, after a host reboot, the VM would not boot until you enable passthrough again. The initial configuration included disabling the systemd-resolved and removing the snap packages, then installing docker and docker-compose packages as outlined here .
  • For Windows server, I allocated two cores and 2 GB RAM, which is the minimum system requirement for Desktop Experience and good enough for me since I don’t expect it to be loaded with anything else. Initial configuration was enabling the roles of Active Directory and DNS. While I was there, I also enabled Active Directory Certificate Services and configured it as an intermediate to the offline root CA using openssl I already had. The linked tutorial is very handy when using openssl for certificates.
  • For openmediavault, I allocated the same as windows, which is more than enough since its minimum requirements are tiny. I had to passthrough the disk as a VMDK like so which will create a raw disk mapping (RDM) of the disk, which you can then mount to the VM as usual. With RDM complete, I was able to add the disk, initialize it with a filesystem (btrfs), and create the users and shares as I needed. While here, I also created a service account for the Ubuntu VM since I had planned to run applications that would utilize the NAS and backups.
Openmediavault UI

Just like that, the VMs were done (for now, as it always tends to be!).