One of my largest home lab projects was building a custom server stack and setting up an enterprise-grade network.
Since this topic is security-sensitive, I won’t go into specifics like the hardware used or how everything is configured in detail. However, I’ll provide an overview of the setup and how I made my equipment work for me, making my life easier.
I’ve configured both a RHEL-compliant Linux server and a Windows server to host personal services, such as a self-hosted cloud/NAS, personal media hosting, and isolated game server environments. I’ve implemented scheduled automation using cron scripts, Windows Scheduler, and Group Policy modifications for tasks like routine maintenance.
I also wanted a secure VPN solution, so I rebuilt my network, set up isolated VLANs, internal firewall blocks, a VPN server, Quality of Service policies, and scheduled backups to plan for potential disaster recovery.
I set up SSH and secure remote access to my Windows and Linux servers via my private VPN server. When I ran into a disaster situation where my NAS became completely inaccessible, I discovered the cache partition was getting full. I’d only been running the NAS for a couple of months, and although I could clear the cache partition in Linux, I didn’t want to do this regularly. I tried expanding the partition and shrinking others to avoid rebuilding the server, but the cache was a directory within a larger partition, not its own volume. Due to the partitioning constraints of the initial setup, I realized this would be a recurring issue. So, I decided to spin up a new VM and reconfigure the partitions, allocating closer to 100 GB for cache instead of just 4 GB, ensuring the partition is less likely to fill up before the system clears it out.
Ironically, when I rebuilt my NAS server, I was dragged on a shopping trip I didn’t want to go on. While waiting, I used the VPN server to SSH in and rebuild my NAS from my phone. To anyone else, I probably just looked like I was scrolling through a news feed or reading an article. But I was executing a full disaster recovery operation, maximizing my time for both shopping and rebuilding my NAS. The rest was as simple as restoring the data from the old VM and then removing the old VM once I ensured full parity.