Architecture
Hardware
For this self-hosted server, I chose to reuse my gaming pc as I don't play much anymore. And I knew that if I wanted to play again, I could just create a VM and pass-through my GPU. So it seems like a good solution compared to letting the pc collecting dust.
The specs of the machine at the time are :
CPU
AMD Ryzen 5 5600X - 6C/12T
Motherboard
Gigabyte B550 Aorus Elite V2
RAM
32 GB @ 3200Mhz non-ECC
System storage
2 x 240 GB NVMe M.2 SSDs - RAID1 ZFS
Data storage
2 x 8 TB HDDs - RAID1 ZFS
Software
Which bare-metal OS ?
This server will be used for multiple usecases :
As a cybersecurity student, I need to create multiple VMs, and if I could do it without draining my laptop battery, it would be great. So the solution I chose had to support virtual machines.
The server will also be used as a NAS, which implies data redundancy. As the hardware isn't server hardware per se, I don't have a hardware RAID controller to take care of my disks. The best solution at the time of writing in term of software raid is no doubt by using the ZFS filesystem. The solution had also to support that.
The server will host many self-hosted apps. So it had to support Docker.
With that in mind, I have retained only 3 solutions for the bare metal OS :
Proxmox
VMWare ESXi
TrueNAS Scale
VMWare is no doubt a great hypervisor, I use it at work, but the licence is clearly out of budget for a home user like me.
TrueNAS is also good, but virtual machines is a side functionnality not the main use of that OS. But my previous server had TrueNAS so i wouldn't have learned much by installing it, and it's container backend which is kubernetes is not ideal and clearly overkill for a single node like me.
Proxmox is on the countrary clearly a virtualization software like ESXi, but open-source with many options comming free with the community edition. It's the solution I chose for my server.
Architecture
Proxmox handles all my disks. Proxmox system is installed on a ZFS RAID1 pool on 2 NVMe and data is also hold in a ZFS RAID1 pool but on 2 x 8TB HDDs
A LXC Container is configured inside Proxmox to handle SMB shares to other VMs, Docker containers, Windows clients, and others. Storage is passed to the LXC using a mount point (explained in Sharing Storage).
A Ubuntu VM having docker installed and hold all of my self-hosted apps.
As I need it, I can create new VMs in proxmox for my every day use or even pass through my GPU to a VM and then have back a gaming pc over proxmox.
Last updated