Architecture of my home server
The following information represents the situation at the end of February 2026.
The architecture is made in such a way that it can easily be adapted and extended later.
1 - Hardware and OS
Hardware bought (650 EUR in total):
- Mini PC "MINIS FORUM UM350"
with "AirDisk 0.5TB" NVMe SSD included
- additional internal disks:
"Crucial MX500 2TB" SATA SSD
- additional external backup disks:
"Crucial P3 Plus 2TB" NVMe SSD,
"UGREEN M.2 NVMe" enclosure,
and "Crucial P3 Plus 0.5TB" NVMe SSD
- additional remote control:
"JetKVM" as IP-based KVM
To minimize power consumption (currently between 7 and 17 W), no HDD's are used.
At the same time the storage speed of SSD's is much higher.
Hypervisor software as OS installed:
- Proxmox Virtual Environment 8.3.0
(based on Debian Linux 12)
2 - Managed Resources
Resources managed by Proxmox:
- CPU:
4 cores/8 threads = 8 CPU
- Memory:
16GB RAM
- Internal Storage:
0.5TB NVMe SSD, named "local" in Proxmox;
2TB SATA SSD, named "local-extra" in Proxmox
- External Storage:
2TB NVMe SSD, named "usb-backup" in Proxmox;
the other 0.5TB NVMe SSD is used only as extra recovery disk for software on "local" storage
To maximize usable disk space, no RAID file system is used.
A backup system is implemented to take a snapshot every day,
which is saved on external "usb-backup" storage.
This way, data of the previous day can be recovered easily within a day (which is sufficient in my situation).
3 - Managed LXC Containers and Virtual Machines
3.1 - Node
Node "pve" (previously "proxmox01") with IP "192.168.0.11":
- manages LXC Containers and Virtual Machines as logical servers,
and allocates resources to these servers
- users: root, myadmin (with sshkey)
- internal DNS name "home-pve.robertthecoder.org"
3.2 - LXC Containers (LC)
- "home-pvehelper" with id "191" and IP "192.168.0.91":
used for installing software which is used by pve (to prevent changes in pve itself);
added software: Cloudflare-DDNS
- "home-fileserver" (previously "nas-fileserver") with id "192" and IP "192.168.0.92":
used for installing file server and backup server software;
added internal DNS name "home-fileserver.robertthecoder.org";
added mounts: 64GB "local", 1024GB "local-extra", 1024GB "usb-backup" storage;
added software: Cockpit, Syncthing, Borgbackup
- "home-utilityserver" with id "193" and IP "192.168.0.93":
used for installing utility software (not for custom applications);
added internal DNS name "home-utilityserver.robertthecoder.org";
added software: Homarr, Passbolt
- "home-devdepserver" with id "194" and IP "192.168.0.94":
used for installing development and deployment software for custom applications;
added internal DNS name "home-devdepserver.robertthecoder.org";
added software: Gitea, Ansible, Semaphore
- “home-testappserver” with id "195" and IP "192.168.0.95":
used for installing custom applications in staging/test phase;
added internal DNS name "home-testappserver.robertthecoder.org";
added software: Portainer, Cloudflare-Agent, Nginx
- "home-prodappserver" with id "196" and IP "192.168.0.96":
used for installing custom applications in production;
added internal DNS name "home-prodappserver.robertthecoder.org";
added software: Portainer, Cloudflare-Agent, Nginx
All LXC Containers are created using the following Container Template:
- "templ-ubuntu" with id "301":
resources: 2 CPU, 2GB Memory, 32GB "local" storage;
users: root, myadmin (with sshkey);
installed software: Ubuntu-server 24.10 (includes ssh), Curl, Docker, Stow, Git, Zsh
(*)
SSH, Zsh and user 'myadmin' with sskey are used to easily access the servers.
Curl and Docker (or Podman) are installed on all servers,
because they are often needed to install other software.
Stow and Git are installed on all servers,
because they are used to distribute software settings and data.
3.3 - Virtual Machines (VM)
- "demo-LinuxMint" (previously "LinuxMint") with id "251" and IP "192.168.0.151":
used for experimenting with software, installations and settings;
resources: 2 CPU, 4GB Memory, 32GB "local" storage;
users: root, myadmin (with sshkey);
installed software: Linux Mint 22.2, *
(*)
LXC Containers (sort of "lightweight virtual machines"), and not virtual machines, are used as logical servers,
because they only allocate resources dynamically at the moment that it's realy needed.
LXC Containers can be started and shutdown very fast and easily when needed.