Four years ago, I replaced my Xiaomi router to Netgear R6300v2 since I need to run Shadowsocks on my router. After that, I bought a Mac mini and built a 15TB RAID storage system. I found that my network could only reach 20Mbps through Shadowsocks due to poor CPU performance of my Netgear R6300v2 after China Telecom offered me 100Mbps FTTH. I tried to add a fan to cool down the temperature but it's to no avail. Finally I replaced my router once again with a mini pc with four ethernet port and few UniFi AP.
An OpenWrt is running in mini PC and a HASS and UniFi Controller is running in my Mac mini. I found that it's a waste of performance only running a OpenWrt in my dual core Celeron CPU, 4G RAM mini PC. Finally I found ESXi, a bare-metal hypervisor that installs directly onto a physical server. I'm going to install ESXi on my mini PC and all OS will be running in virtual machine.
First you can download VMware vSphere Hypervisor (ESXi ISO) image for free after you registered for it.
You can know about your devices compatibility in VMware Compatibility Guide. There is some third party driver for ESXi. You can customize your own ISO with drivers that are not originally included using ESXi-Customizer.
If you forget to integrate SATA driver in to your ISO image, you can follow this instruction.
Install Virtual System
There is two way to install an operating system in ESXi. One is installing from an ISO image. The other is convert existing img file to an ESXi compatible vmdk file.
Setup ESXi network
If you want use setup a router OS (eg. OpenWrt, RouterOS, iKuai) in your ESXi, you have setup at lease two vSwitch, one is for LAN and the other is for WAN. And the last thing you need to do is add port group to a vSwitch.
It's recommended to set two network card with static IP and DHCP. So that you can reach your ESXi system easily as an LAN device via DHCP. And you can reach via static IP in case your router OS is broken.
Setup Additional Entropy
Install UniFi Controller on Ubuntu
It's recommended to use Ubuntu 14.04 LTS.