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 :

Type
Specs

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