· what i do · 10 min read

Welcome to my home lab!

Here, servers do their thing, code gets a bit wild, and it's a mix of organized chaos.

Here, servers do their thing, code gets a bit wild, and it's a mix of organized chaos.

At the ripe age of 5, I embarked on my IT adventure by liberating my grandma’s Nokia from its mundane existence. With the audacity only a kindergartener could possess, I orchestrated a grand finale for the phone – a thrilling aquatic escapade down the toilet. Shockingly, that pint-sized rebellion marked the commencement of my IT journey. Turns out, even at 5, I had a knack for making technology take an unexpected plunge.

Fast forward to 2018, and I found myself tinkering with my first home lab—a humble old laptop running FreeNAS. At that time, the word “server” still held an air of mystery for me, and I was determined to unravel its secrets. My journey into the realm of servers had humble beginnings.

For years I had tried to run my own Minecraft server on the Internet without any success. The problem always came to port forwarding… I had no idea what it meant. I watched tons of videos on YouTube, and they were good, I got the server running on my local network but those videos always ended like: “Good now that we have our Minecraft server running, you just need to open a port on your router and you are done.” and guess what, they never showed how to open the port on your router and if they did, the GUI of my router never looked the same as in the video. After years of trying, I gave up on running the server at my house and rented my first server in 2019. It was a readymade package for a Minecraft server, and I only needed to press a button on a website to run it.

Before I even had run the FreeNAS server, I tried those website building sites. The only thing that bothered me was the website domain. The domain was always something like “mywebsite.wix.com” and I wanted to have my own domain. Back then I didn’t want to release much of my personal information to the web and always used the alias “Jaakko Virtanen”. So was the case with the domain and I just made up a company name and bought my first domain and web server in 2020. This was the time when I first found out about Wordpress.org, it was the easiest thing ever. There were good looking modern templates of websites and I you could edit it in any way you wanted, and it was free.

After getting used to those readymade packages I started to get bored and bought my first virtual private server in 2021. The package came with Windows Server but later I changed to Ubuntu Server. This wasn’t the first time I was using Linux, I used to use Linux on my first laptop in 2017. Of course, I had no idea how to install an OS to a computer back then, so my brother did it for me and I watched. The only game I played was CSGO, so Linux was fine for me since the game worked on it. I used Linux for a while and then Epic Games released a game called Fortnite in summer 2017. The game started to get popular among my friends and I switched back to Windows so that I could play it with my friends.

Gaming started to get a bit boring in early 2021 so I wanted to start developing my own game in Unreal Engine. I watched a couple beginner videos on YouTube for a while. I love playing CSGO, so I tried to make a copy of it. Then in summer I found a course on sale for 10€ where guy had created a tutorial on how to make an FPS Multiplayer game on Unreal Engine. The whole summer I watched the tutorial and got to the end of the course just before my summer break ended. The course was great, and I learned so much about Unreal Engine and networking in games. However, the course was not fully completed, and it lacked a couple features. I started watching YouTube videos and reading forums about how other multiplayer games have resolved problems like lag compensation and player movement prediction. One feature that I especially liked in CSGO was “bhopping”, I researched for weeks about what causes it and how can I implement it to my game. After a while I got a couple game servers running on my VPS and even bought a license to put my game on Steam. I spent a month implementing some of the Steam features to the game and uploaded it to Steam. At one point I created a whole SDK kit for players to be able to create their own maps for the game.

The last year in secondary school started and I wanted to focus more on school and started to go to the gym more so I kind of forgot the game development. I never really published the game and I just have been giving game keys to my friends so that we can play and test the game. I haven’t touched the code for I while and I don’t think I even have the latest source code anymore, just some old backup. Anyways I am not really that interested in it anymore and I can’t even imagine how messy the code must be.

I have never had a good Internet until the end of 2021 when I decided to buy a 4G antenna and a fast 200 Mbps prepaid network connection. After my brother found out about my intensions, he promised that he can buy a proper Internet connection if he gets to use the connection too and if I buy all the needed hardware and cables. I bought a 100-meter roll of CAT6, 4G antenna, a core switch and built a computer running pfSense that acted as the router. I spent two weeks running CAT6 all around our house. I installed the cables neatly through our attic and inside the walls, then terminated the ends with those ethernet wall outlets. The 4G antenna was there only a few months before we upgraded to a 5G connection. The 4G antenna was the best thing I bought at the time, and it improved our Internet speeds greatly. Before the 4G antenna pinging to google.com took about 80-150 ms and it was very inconsistent, after installing the 4G antenna it only took a steady 20 ms. After finding out that the antenna increased greatly our network speed and response time, my brother was confident in buying the 1 Gigabit 5G network connection. I bought a huge 5G antenna and removed the old 4G antenna from our roof and installed the new 5G antenna.

The reason for all the hassle with the better Internet connection was because I wanted to learn about networking and run my own servers inside my home. After I got the network up and running, I built another computer for the sole purpose of running an Ubuntu server. Inside that “server” I run my first personal website r3ne.net, a Minecraft server and a Discord bot that I created. Then I started to have problems with that server. Every now and then it randomly freeze, I suspected that the cheap motherboard was at fault and tried to install a new BIOS in it. I tried multiple times, but I just was not able to install the BIOS to it. My fix for this issue was to buy an Arduino and a relay. I wrote a program where the Arduino would send a message to the server through serial and if the response to the message lasted more than 100ms the Arduino would close a relay that was connected to the server’s restart pins and reboot the freeze server. That worked great until the server started rebooting every 2 hours. Later I found out that I had been trying install the wrong BIOS. I had two similar looking motherboards and from the same brand, I updated the BIOS on the other one successfully but because I didn’t notice that they were different models I was not able to install the BIOS to the Ubuntu Server motherboard.

The “server” I used for the Ubuntu Server was quite unreliable, so I decided to buy an old rack server in the summer 2022. I bought a Supermicro Rack server that had a total of 24 cores and 96GB of DDR3 ram. Now I finally had a real rack server and it looked like a fucking supercomputer. At full speed the server was so loud that I had to take it to our warehouse, except no one had run a data cable to the warehouse from our house. I started to research what would be the best way to get good Internet there and I ended up buying 25 meters of fiber optic cable and couple of fiber to RJ45 converters. I dug some conduit to the ground and drilled a hole to the wall on our home and the warehouse. Then I carefully pulled the fiber cable through the conduit with the help of my father. I placed the rack server to the warehouse and installed ESXi to it and everything was working fine again. The fiber has worked great for a year now. One thing that I fear is if the conduit gets filled with water and then freezes the fiber probably wont survive that.

My brother moves out to his own apartment and along goes the good Internet connection in November 2022. Although my father finally decides to upgrade our home’s Internet connection to a usable one, the one at my brother’s apartment is a fiber connection, so it is fast. The response time to google.com is around 1.4ms at my brother’s apartment, and at our home it is around 20ms. We agreed with my brother to put the server in to the dressing room at his apartment if the server is quiet and doesn’t consume insane amounts of power. The old rack server consumed a lot of power and was loud as fuck. So, I started to research if I could change the power supplies to be more power efficient and change the fans to be quieter. I replaced the 2U server fans with 120mm fans and made large holes for the fans. Then I replaced the power supplies with an ATX power supply. The noise was minimal, and the power consumption was a bit lower than earlier. The setup was junky, and I was thinking if I take the server to my brother’s apartment, I should only need one physical server because I can use virtualization for the whole setup and the main cable box is very close to the dressing room, so I don’t have to worry about running cables either. At home that was not ideal since I only had one cable going between the house and the warehouse, so I had to keep the router inside the house. So, I went hunting for old computer parts around our house and found a 8 core Ryzen CPU, couple of 8GB ram sticks and an old motherboard. I build the new server inside an ITX case, and it only consumes an average of 60 watts which is way better than the 250 watts that the Supermicro rack server was consuming. I installed ESXi to it and inside it there is a pfSense router and a couple of VMs for webservers, game servers and for test servers. This setup was running very reliably for the whole year of 2023. In November 2023 I reinstalled everything to try make everything even more secure by create even more VLANS for each trust level of servers. I have VLANS such as Trusted, Secure and Unsecure. Virtual machines are assigned to one of those VLANS according to the level of trust that server has. For example, the Trusted network has the management interfaces for pfSense, ESXi and TrueNAS those are the core virtual machines needed to run all the other virtual machines. No other servers should run on the Trusted network.

Back to Blog