Welcome to a series of articles where you’ll learn to build your own server, also known as a Homelab! This guide is designed both for tech enthusiasts and for those taking their first steps into this world, or simply for those geeks like me who enjoy tinkering.
In this first entry, I’ll share with you the process I followed to build my homelab, highlighting the wins and mistakes I made along the way. My goal is for you to learn from my experience so you don’t have to make the same mistakes and can build your own homelab more efficiently. Fuel up, and let’s go.
First things first. Why build my own homelab?
Good question! The short answer would be: why not? (Okay, that’s a joke).
There are many reasons to build a homelab. Maybe you have a Synology NAS that can no longer keep up with the load of your Docker containers. Or maybe you’re worried about privacy and prefer your data not to be in the hands of third parties. Or maybe, like in my case, it’s a combination of both, plus the exhaustion of paying subscriptions for absolutely everything: Netflix, music, storage…
Let’s be honest: over the years, everything has shifted to streaming. And we own less and less. Your files, your shows, your music… no longer belong to you, they’re in the cloud, under the control of companies that can change prices, terms or even remove content whenever they see fit.
Building my own homelab meant taking back control. It meant having the freedom to manage my own data, host my own services and stop depending on third parties.
Well, that was one of the reasons I decided to build a homelab. But I won’t lie to you: I’ve always been a tech tinkerer, so I really just needed an excuse to do it. What I didn’t know is that this “excuse” would end up becoming a firm and solid reason the more I thought about it.
What would my homelab be used for?
Once the “why” was settled, it was time to answer the “what”: what was I going to store and what was I going to use it for?
If you were paying attention to the previous paragraph, you’ve already guessed some of my motivations, but here I’ll summarize them more concretely:
My own Netflix:
I always wanted to have a personal library of movies and shows without depending on subscriptions. But I soon discovered that my homelab wouldn’t just serve this purpose, but also for viewing the entire gallery of photos and videos I kept in the cloud.
Development environment:
I like to program and learn new languages or frameworks, so I wanted an environment that would let me develop locally and learn about CI/CD. On top of that, I was interested in having a backup of my GitHub repositories so I wouldn’t depend exclusively on the cloud.
Backups, backups and more backups:
There are never enough backups. You know those photos you keep in your gallery, that you never look at but don’t want to delete either because they’re memories? Exactly, my homelab had to take care of storing and protecting all of that.
Centralized home automation:
Alexa is great… until you have 20 devices from different brands and you need 20 apps to control them. That wasn’t for me. I wanted to unify everything under a single system and manage my home more efficiently.
IT and cybersecurity learning:
If you’re a sysadmin, work in IT or are simply passionate about technology, building a homelab is one of the best investments you can make. Why? Because it lets you experiment with new technologies, understand how they work and learn to apply them in the real world.
A homelab is a perfect environment to test configurations, simulate infrastructures and develop technical skills without risk. Whether it’s to improve your cybersecurity, learn about virtualization, networking or automation, having your own lab gives you a huge boost in practical knowledge.
Basically, building my homelab was a one-way ticket to continuous learning in the IT field.
Homelab components
To be honest, I was a bit cheap with the spend. After eight years of use, I decided to renew my old gaming PC, which still ran a GTX 1050 Ti. Considering we’re already on the RTX 5000 series, it was obvious it was time for a change.
So yes, the homelab idea came up after upgrading my gaming PC and not knowing what to do with the leftover parts. I didn’t want to sell them, because I knew they could still be put to good use. The reality is that I no longer have as much time to play as before, but every now and then I like to unplug for a while.
By reusing the old hardware, I managed to cut the cost of my home server quite a bit:
- GTX 1050 Ti
- AMD Ryzen 5 2600X
- 16 GB RAM DDR4 2400 MHz
- 4 TB HDD (x1 or several drives, depending on the case)
It’s not the most powerful or efficient configuration out there, but for a lightweight server that didn’t require heavy compute resources, it was more than enough. I only had to buy three new components: a case, a motherboard and a 500 W power supply. I was clear that I wanted a small and functional server, so I went with the mATX form factor, which gave me the ideal balance between size, performance and power consumption.
Is it the most efficient option? No. Neither the graphics card nor the processor is designed for a server environment, and I know it. But, being honest, what mattered here was the wallet and the budget. I wanted something cheap, functional and that offered the best value for money within its possibilities.
The operating system
Okay, this is where more than one person gets their hands on their head… What operating system did I choose? Well, surprising as it may seem… Windows.
Why Windows and not Ubuntu Server or another Linux distribution?
Good question. Initially, my idea was to install Ubuntu Server without a graphical interface, since it works wonderfully even on PCs with few resources. However, there was a problem, and a pretty big one, that forced me to go with Windows:
iCloud.
And what does iCloud have to do with all this? Well, you see, as Jack the Ripper would say… let’s take it one piece at a time.
One of my main goals was to make local backups of iCloud on my homelab. But, as expected, Apple doesn’t make it easy at all (at least on Linux). After some research, I found a project on GitHub that allowed backing up iCloud through a Docker container.
But here three important problems came up:
- The project wasn’t official → It depended on the developer or the community. If they stopped maintaining it, at some point it would stop working.
- It required granting full access to my iCloud account → I needed to generate an API Token with full access to my account and trust that the code was safe. Even if it was today, nothing guaranteed it wouldn’t turn malicious in the future.
- It wasn’t compatible with ADP (Advanced Data Protection) → If I wanted to use it, I had to disable one of iCloud’s most important security features.
If anyone is curious, here’s the project: boredazfcuk/docker-icloudpd
What is ADP?
iCloud offers an option called ADP (Advanced Data Protection), which lets you enable end-to-end encryption on all the information stored in the cloud. With this option enabled, not even Apple can access my data, which adds an extra layer of security against possible leaks.
Disabling ADP just to be able to make local backups of my own data wasn’t an option.
So, before compromising my account’s security, I decided to try another solution: Windows.
And what does Windows have to do with all this?
Here’s the key: ADP’s end-to-end encryption means only authenticated devices can access the data. And, among those devices, Apple includes… Windows PCs.
Yes, ironic as it may seem, Apple developed a program called iCloud for Windows, which lets you sync iCloud Photos, iCloud Drive and other services on an authenticated Windows PC.
This doesn’t mean it automatically downloads the files to the local disk, but simply that it lets you access them in the cloud. Only when you open a file (for example, a photo or a document) does Windows download it at that moment.
How do I make the backups?
I’ll explain that in detail in another post, so if you want to know how I managed to make local iCloud backups without disabling ADP… you’ll have to stay tuned. But I’ve already left you a hint.
WSL2: the ultimate solution
Besides solving my iCloud problem, I remembered that Windows has WSL2 (Windows Subsystem for Linux - v2).
WSL2 lets you run a Linux environment inside Windows without needing a separate virtual machine or dual boot.
As Microsoft’s official documentation says:
WSL is designed to provide a seamless and productive experience for developers who want to use Windows and Linux at the same time.
Exactly what I needed.
Thanks to WSL2, I was able to keep using Windows to manage the iCloud backups and, at the same time, keep my services on Linux within a WSL2 environment. It wasn’t the solution I had originally planned, but it worked. And that was what mattered.
The great forgotten one: Proxmox
Proxmox. The virtualization solution par excellence for home homelabs (and not-so-home ones). Why didn’t I use it?
Honestly, I could have installed it. It would surely have made my life easier in some aspects and improved security a lot. And I don’t rule out doing it in the future.
The main problem was RAM. For each virtual machine in Proxmox, you have to allocate a fixed amount of memory. And remember I only have 16 GB.
Even though I needed Windows for iCloud anyway, with Proxmox I could have created a virtual machine for each thing:
- Windows → To manage iCloud.
- Linux → For the rest of the services.
But here came the problem: each VM would need at least 8 GB of RAM to run well. If we add that my maximum was 16 GB, the room to maneuver was practically nil.
Despite this, the configuration I built is functional and serves its purpose. I don’t rule out installing Proxmox in the future, especially once I get more RAM and more storage. At that point, I could make better use of VLANs, improve security, back up VMs and countless other things.
Conclusions
If there’s one thing I want you to take away from all this, it’s this: don’t wait for the “perfect” moment or the “perfect” gear to build your homelab.
With platforms like Proxmox and a huge community backing countless containerized services, you can start little by little and scale at your own pace. A homelab isn’t just a set of servers: it’s a space to learn, experiment and improve technical skills.
It’s a project that grows with you. And the best part is that it’s never too late to start.
It doesn’t matter if you use second-hand hardware, an old PC or even a Raspberry Pi. What matters is taking the first step. Trust me, once you get into this world, you’ll wonder why you didn’t do it sooner.