Architecture
Home Lab Architecture
Section titled “Home Lab Architecture”The home lab grew over time, from my sole workstation to a more complex setup with multiple devices and a dedicated network. The homelab is composed of a few devices, some of them are part of the lab, others are part of the network, and others are part of the house. The lab is composed of a Raspberry Pi cluster, a Dell Optiplex, and a Lenovo ThinkCentre M90n. The network is composed of a switch, a firewall, two routers, and a few access points.
Diagram
Section titled “Diagram”The diagram below shows the architecture of the homelab and the network.
Raspberry Pi Cluster
Section titled “Raspberry Pi Cluster”The Raspberry Pi cluster is composed of three Raspberry Pi 4B, with 4GB of RAM each, and a 500Gb SSD connected to each of them. The cluster runs Docker Swarm and host supporting services for the home lab.
| Property | Value |
|---|---|
| Hostname | rpi01 |
| Operating System | Ubuntu 24.04.3 LTS (Noble Numbat) |
| Kernel Version | Linux 6.8.0-1045-raspi #49-Ubuntu SMP PREEMPT_DYNAMIC |
| Architecture | arm64 |
| CPU | Raspberry Pi 4 Model B Rev 1.4 |
| CPU Cores | 4 |
| Logical CPUs | 4 |
| Total RAM | 3.74GB |
| Swap Memory | 0.00B |
| Disk Hardware | sda (00SSD1: 465,8G) mmcblk0: 119,1G |
| Disk Partitions | /dev/mmcblk0p2 (/): 116.69 GB /dev/sda1 (/data): 465.8 GB |
| Network Devices | wlan0 eth0 |
| IP Address | 10.102.0.200/24 |
| IP Addresses | 192.168.18.200/24 10.102.0.200/24 |
| Property | Value |
|---|---|
| Hostname | rpi02 |
| Operating System | Ubuntu 24.04.3 LTS (Noble Numbat) |
| Kernel Version | Linux 6.8.0-1045-raspi #49-Ubuntu SMP PREEMPT_DYNAMIC |
| Architecture | arm64 |
| CPU | Raspberry Pi 4 Model B Rev 1.4 |
| CPU Cores | 4 |
| Logical CPUs | 4 |
| Total RAM | 3.74GB |
| Swap Memory | 0.00B |
| Disk Hardware | sda (00SSD1: 465,8G) mmcblk0: 119,1G |
| Disk Partitions | /dev/mmcblk0p2 (/): 116.69 GB /dev/sda1 (/data): 465.8 GB |
| Network Devices | wlan0 eth0 |
| IP Address | 10.102.0.199/24 |
| IP Addresses | 192.168.18.199/24 10.102.0.199/24 |
| Property | Value |
|---|---|
| Hostname | rpi03 |
| Operating System | Ubuntu 24.04.3 LTS (Noble Numbat) |
| Kernel Version | Linux 6.8.0-1045-raspi #49-Ubuntu SMP PREEMPT_DYNAMIC |
| Architecture | arm64 |
| CPU | Raspberry Pi 4 Model B Rev 1.4 |
| CPU Cores | 4 |
| Logical CPUs | 4 |
| Total RAM | 3.74GB |
| Swap Memory | 0.00B |
| Disk Hardware | sda (00SSD1: 465,8G) mmcblk0: 119,1G |
| Disk Partitions | /dev/mmcblk0p2 (/): 116.69 GB /dev/sda1 (/data): 465.8 GB |
| Network Devices | wlan0 eth0 |
| IP Address | 10.102.0.198/24 |
| IP Addresses | 192.168.18.198/24 10.102.0.198/24 |
Proxmox Cluster
Section titled “Proxmox Cluster”I’m running Proxmox VE 9.x on two Lenovo ThinkCentre M90n devices, named bell and baklouti. Both devices are small form factor desktop computers.
Lenovo ThinkCentre M90n (bell)
Section titled “Lenovo ThinkCentre M90n (bell)”The Lenovo ThinkCentre M90n is a small form factor desktop computer, with an Intel Core i5, 16GB of RAM, a 1Tb SATA SSD and a 1Tb NVMe SSD. It is running Proxmox, a hypervisor based on Debian, and is used to run virtual machines and containers.
| Property | Value |
|---|---|
| Hostname | bell |
| Operating System | Debian GNU/Linux 13 (trixie) |
| Kernel Version | Linux bell 6.17.4-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.17.4-2 (2025-12-19T07:49Z) x86_64 GNU/Linux |
| Architecture | x86_64 |
| CPU | Intel(R) Core(TM) i5-7500T CPU @ 2.70GHz |
| CPU Cores | 4 |
| Logical CPUs | 4 |
| Total RAM | 15.43GB |
| Swap Memory | 32.00GB |
| Disk Hardware | sda (CT1000BX500SSD1: 931,5G) nvme0n1 (CT1000P3PSSD8: 931,5G) |
| Disk Partitions | pve-root(/): 794.3 GB /dev/sda1 (/DATA): 915.82 GB |
| Network Devices | enp0s31f6 wlp2s0 vmbr0 |
| IP Address | 192.168.18.2/24 |
| IP Addresses | 192.168.18.2/24 10.102.0.2/24 |
Lenovo ThinkCentre M90n (baklouti)
Section titled “Lenovo ThinkCentre M90n (baklouti)”The Lenovo ThinkCentre M90n is a small form factor desktop computer, with an Intel Core i5, 16GB of RAM, a 1Tb SATA SSD and a 1Tb NVMe SSD. It is running Proxmox, a hypervisor based on Debian, and is used to run virtual machines and containers.
| Property | Value |
|---|---|
| Hostname | baklouti |
| Operating System | Linux 6.8.12-5-pve |
| Kernel Version | #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-5 (2024-12-03T10:26Z) |
| Architecture | x86_64 |
| CPU | Intel(R) Core(TM) i5-7500T CPU @ 2.70GHz |
| CPU Cores | 4 |
| Logical CPUs | 4 |
| Total RAM | 15.51GB |
| Swap Memory | 8.00GB |
| Disk Hardware | sda (CT1000BX500SSD1: 931,5G) sdb (SPZX-35Z10T0: 931,5G) |
| Disk Partitions | /dev/mapper/pve-root (/): 93.93 GB |
| Network Devices | wlp1s0 vmbr0 |
| IP Address | 192.168.18.3/24 |
| IP Addresses | 192.168.18.28/24 192.168.18.3/24 |
Network
Section titled “Network”Internet Links
Section titled “Internet Links”The house has two internet links used in a failover configuration. Both links are fiber links with 750Mbps download and 150Mbps upload. The links are connected to an Ubiquiti UCG Ultra, working as a firewall and responsible for load balancing the links, partitioning the network into VLANs, and managing the Wireless networks and SSIDs.
Switch
Section titled “Switch”The network switch is a small 1Gb L2 TP-Link switch, with 8 ports, used to connect the devices in the lab and the network.
Access Points
Section titled “Access Points”The house has four Ubiquiti AP-U6-Mesh access points, providing wireless coverage to the entire house. The access points are connected to the switch and managed by the Ubiquiti UCG Ultra. There are three SSIDs, one for the main network, one for guests, and one for the lab, witch is also connected to a cabled VLAN.
Subnets
Section titled “Subnets”The network is divided into several subnets, each one with its own purpose and devices. The subnets are managed by the Ubiquiti UCG Ultra firewall/router.