Homelab: VCF 9 in a box

Like many people running a homelab, I used William Lam’s excellent VCF starting page as the foundation to build my VCF 9 lab. => link

The goal of this post is not to repeat his blog, but to document the things I did differently, the parts that didn’t work as expected, and the tweaks required to get everything running smoothly in a compact 2-node homelab setup.

Content blog article

  1. Hardware BOM
  2. Licensing your VCF instance
  3. Installation steps
    1. Install ESXi
    2. SSH access to SDDC manager
    3. Enable 2 Node Deployment
    4. Retrieve ESXi SSL Thumbprints
    5. Create the Deployment JSON
    6. INSTALL!!!!
    7. Final result

1. Hardware BOM

Luckily, I purchased most of this hardware before memory prices went completely insane 😅

HardwareTypePriceWebsite
ComputeMINIS FORUM MS-A2 AMD Ryzen 9 9955HX935€ x2Amazon
MemoryCrucial 128GB DDR5 RAM Kit (2x64GB)443€ x2Amazon
ESXi Boot DiskSAMSUNG 990 EVO Plus 1TB85€ x2Amazon
Memory Tiering DiskSamsung SSD 990 Pro NVME 1TB108€ x2Amazon
VSAN DiskSamsung 990 EVO PLUS 2TB M.2 SSD129€ x2Megekko
RackDeskPi RackMate T2 Rackmount231€ x2Amazon
Rack ShelfGeeekPi 1U Rack Shelf27€ x3Amazon

2. Licensing your VCF instance

You have two realistic options to license VCF for a homelab.

Option 1 – vExpert (Free)

Becoming a vExpert gives you access to VCF licenses.
Joining the vExpert community has been one of the best things that happened to me professionally — expanding my network, learning from incredibly smart people worldwide, and pushing me to a higher level both personally and professionally.

Option 2 – VMUG Advantage ($210)

You can also purchase a VMUG Advantage membership:
👉 https://www.vmug.com/membership/vmug-advantage-membership/

This gives you:

  • A 128-core VCF license
  • Discounts on training and certifications

⚠️ Requirement:
At the time of writing, you need either the VCF-Admin or VCF-Architect certification to obtain the VCF licenses. This requirement may change in the future.

3. Installation steps

IP configuration

FQDNIP AddressFunction
dc01.vkasaert.com10.10.10.10DNS Server
esx30.vkasaert.com10.10.20.30Physical ESXi Host 1
esx31.vkasaert.com10.10.20.31Physical ESXi Host 2
sddcm.vkasaert.com10.10.30.40VCF Installer / SDDC Manager
vc-vcf.vkasaert.com10.10.30.41Management Domain vCenter
nsx01a.vkasaert.com10.10.30.42NSX Manager node
nsx01.vkasaert.com10.10.30.43NSX Manager VIP
opspn01.vkasaert.com10.10.30.44Operations
opsfm.vkasaert.com10.10.30.45Operations Fleet Manager
opscp01.vkasaert.com10.10.30.46Operations Cloud Proxy
auto.vkasaert.com10.10.30.47 – 48VCF Automation
edge01a.vkasaert.com10.10.30.49NSX Edge 1a
edge01b.vkasaert.com10.10.30.50NSX Edge 1b

3.1 Install ESXi

The MS-A2 systems already shipped with the latest firmware, so I didn’t need to update it.
However, definitely check William Lam’s firmware blog post, as it highlights several BIOS settings that must be adjusted.

For ESXi installation:

  • Update KS.CFG to match your disk layout
  • Update BOOT.CFG to ensure the correct KS file is used

After installation, verify that Memory Tiering is active.
I installed 128GB of physical RAM per node, so ESXi should report ~256GB available memory once tiering is active.

3.2 Enable SSH Access to SDDC Manager

Edit the SSH configuration => vi /etc/ssh/sshd_config

Change PermitRootLogin to yes

Reboot the SDDC Manager.
After the reboot, SSH access will be available.

3.3 Enable 2-Node Deployment

William’s script didn’t work for me, but the manual changes are minimal.

Edit /home/vcf/feature.properties and add the entries below
feature.vcf.internal.single.host.domain = true
feature.vcf.vgl-29121.single.host.domain = true
feature.vcf.vgl-43370.vsan.esa.sddc.managed.disk.claim = true

Edit /etc/vmware/vcf/domainmanager/application.properties and add the entries below
enable.speed.of.physical.nics.validation = false
vsan.esa.sddc.managed.disk.claim = true

Restart SDDC services:
/opt/vmware/vcf/operationsmanager/scripts/cli/sddcmanager_restart_services.sh

3.4 Retrieve ESXi SSL Thumbprints

Even with "skipEsxThumbprintValidation": true in my JSON, the deployment still complained.

From the SDDC Manager, run this for each ESXi host:
openssl s_client -connect esx30.vkasaert.com:443 | openssl x509 -noout -fingerprint -sha256

You’ll find the information you need on the last line

3.5 Create the Deployment JSON

Changes required:

Add the SSL thumbprints retrieved above

Add one extra IP address for the Aria Automation deployment

3.6 Install!!

Start the deployment and don’t forget to execute the vSAN fix PowerShell script during installation.

3.7 Final result

This is the final result — a fully functional VCF 9 homelab in a compact 2-node setup.
And yes… there’s still plenty of room to expand 😁


Leave a comment