I recently came across the concept of Home Lab, where you set up some servers at home to do miscellaneous stuff such as hosting home utilities or running various applications locally. Some examples of home utilities could be a NAS server for devices at your home, a local Media Server for streaming audio/video content, Network ad-blocker, etc. It caught my attention & I thought of giving it a try.
As a software engineer, I had an idea of what data centers & servers are, but didn’t have any hands-on experience of the hardware or networking configurations. I saw this as an opportunity to learn more about it. This would let me work with the actual physical servers, rather than working with cloud provider consoles. I would also get to choose & set up the servers according to my use case, maintain & upgrade them as required.
This is the first in a series of articles that I plan to write as I go about setting up my home lab. Following articles would include details on how to set up hardware & networking components, how to choose & install the required software components & then use it to run various applications.
Follow my series “Kubernetes Home Lab 101” to learn how I use my home lab to set up my personal media backup & streaming service as well as how I get rid of most of the ads displayed on all the devices on my home network, at once.
What is a Home Lab?
Some of you might be wondering, what is a Home Lab? It means having a compute & sometimes supporting networking setup in your personal space such as home, typically running 24 X 7 & hosting workloads as per your need. This setup can be as small as having one or more Raspberry Pis, all the way up to having one or more professional servers with Enterprise level hardware & networking setup. You can choose the setup based on your needs, budget & enthusiasm. So there is no single right setup here. Everyone can have their own unique Home Lab setup, running various things as they see fit.
Why consider having a Home Lab?
As a software engineer, there are a few things you can consider having a Home Lab for.
- Having a dedicated Sand box to run & test your applications.
- Hosting home utilities such as NAS, Media Server, Firewall, Game Server, Backup storage & many others.
- Learning to set up, configure & upgrade different hardware & networking equipment to suit different needs.
- Learn Edge Computing – Data Center in a closet
- A capital investment makes more sense for you than the cloud providers’ pay as you use model.
- Data security is a concern for your applications.
- Hosting a critical application for yourself or for a business in an area with unreliable internet connection.
I was interested in the first four reasons above. Also, these are some of the reasons that I could find. There may be some other reasons which would make it feasible for you to set up a Home Lab.
Things to consider
There are a few things that you need to consider while setting up a home lab. Namely budget, power consumption & space availability. All three factors vary quite a bit based on the computer equipment you choose for your home lab. Let’s discuss these factors below & then look at the compute options available.
This is one of the most important factors for many, if not all. You first need to decide how much you are willing to spend, before you embark on this journey. As with many home labs, it is very easy to start pouring down money into your setup with no end in sight. Based on the hardware you choose, some of the equipment costs thousands of dollars. On the other hand, you may even be able to set one up without spending any money, depending on the old hardware you have lying around. Hence it is very important to decide on a budget for yourself & try to stick with it.
This is a factor that often goes ignored. Based on the equipment you start with & as you keep upgrading your setup, your power consumption also increases. If the Home Lab setup requires a lot of power, you’d end up paying a considerable amount regularly towards your electricity bill.
In addition to the power bill, you also need to have a robust power supply equipment such as good quality power cables, plugs, extension cords, etc. Also, since you’d like your Home Lab servers to be up all the time, a secondary power supply is needed. You may choose to skip it in your entry level setup to keep the cost down, provided you’re not planning to run any workloads which you can’t have interrupted due to power outages.
Like the budget, space needed also varies quite a bit based on the equipment you choose for your home lab. Based on the equipment you choose, you may need space as little as the palm of your hand to a full size room. If you do have limited space, you’d want to go with smaller equipment, irrespective of where you stand with the previous two criteria.
Broad compute options for your Home Lab
Now that you’ve decided to go ahead with your Home Lab & have a broad understanding of where you stand with the above criteria, here are the general hardware options available for you. The hardware would include one or more computers at the very least & maybe some networking equipment too. As mentioned earlier, depending on the need & budget, your home lab computers can vary over a wide range. Here are some of the broad compute hardware options to consider.
If you have some old computers such as Laptop(s) or Desktop(s) lying around, you should consider repurposing them for your Home Lab first. More likely than not, they would still have enough compute power to host something like a media server or an NFS server amongst other things. Depending on the purpose of your Home Lab, you can try to use your old computers first to see if it works for you. This would be the most cost effective way to start your journey, while also utilizing something which was just sitting around gathering dust.
Single Board Computers
If you’re in the market for setting up your Home Lab, Single Board Computers or SBCs are the most basic options out there. These are the cheapest, smallest & the most hands-on of the options available. You typically get just a small circuit board with a microprocessor / microcontroller & some ports for connectivity. You also have a wide variety of sensors & addons that you can use to make some cool projects at home.
Raspberry Pi, Arduino, BeagleBone, NVIDIA Jetson Nano, LattePanda are some of the common single board computers. They all offer different models with different compute capabilities. Some are equipped with processors based on ARM architecture & others based on x86/64 architecture.
These are computers with compute capabilities similar to daily use laptops/desktops, but with a smaller form factor. They are mostly available with x86/64 processors & pack considerable compute performance in a smaller size. Depending on the model & supplier these may be available bare bones, i.e. just the circuit board with processor, or may also come with Storage & RAM. If you go with the bare bones model, you get to choose & install the RAM & Storage depending on your need.
Most Laptop/Desktop manufacturers offer Mini Computers too. Asus PN & PB Series, Lenovo ThinkCentre Tiny, Intel NUC, HP Z2 Mini, Dell OptiPlex, Apple Mac Mini are some of the Mini computers out there. Apart from these, you may also check out more budget friendly options from GEEKOM, Beelink, ZOTAC & MeLE.
Note: The options I have listed above are of course non-exhaustive. These are some of the best options I could find at the time of writing this article. The offerings might vary depending on the time you’re setting up your Home Lab & your location.
This is the most expensive, largest & also the most sophisticated option. If you’re convinced that the options above aren’t sufficient for your needs & you need professional hardware similar to the ones used in Data Centers, you can go with these. If you’re going ahead with these, you must also consider having a dedicated networking setup too, in order to get their full potential. Otherwise you may also stick to the default network setup that your ISP has provided.
There are three kinds of Servers viz. Rack Servers, Blade Servers & Tower Servers. For more details on all three types of servers you can go through this nice article I found.
My Home Lab setup
Considering the above information, I first needed to decide on my use case for my Home Lab & a budget for the same.
My use case
As a software developer, writing microservices based applications & running them on Container Orchestrators such as Kubernetes, is a big part of my daily activities. Hence I decided I want to set up a local multi-node Kubernetes cluster in my Home Lab. I could then run & test the applications that I work on using this cluster, without having to start / stop a single node Kubernetes on my laptop. It would also enable me to run other containerized applications or build pipelines etc. on the same.
So I decided to go with 4 moderately powerful machines in my Home Lab. This would help me do something useful right at the offset, while still keeping the costs in my budget. Out of the 4 machines, I would create a 3 node Kubernetes cluster & use the 4th machine as a storage server.
Budget & other constraints
For the budget, I decided that I could spend around ₹200,000 or about 2500 USD, according to current exchange rates. The next constraint I had was of space in my current apartment. The ideal placement for my Home Lab would be on the same table which I use for my daily work, without affecting my current work area too much. Lastly, availability of the Hardware was also a constraint for me. I am based in India & not all of the options mentioned above are available or were in stock at the time.
Hence, with all these factors in mind I settled on buying 4 Intel NUC11s with Core i5 processors. These do not come with RAM or Storage which I bought separately. This model has two DDR4 slots which support up to 64 GB of RAM & one M.2 NVMe SSD storage slot. You also get an option to install a second 2.5 inch internal SSD using the SATA connector. Check out the NUC 11 specifications for more technical information & available connectivity options.
For my setup I went with 8GB RAM & 500 GB Storage for these mini PCs. I also got a 2TB internal SSD to use in my Storage Server. Strangely, the models I ordered lacked the power cables, which connect the power outlet to the NUC power adapters. So I also had to buy those separately.
I also have a secondary power supply for my entire apartment. I plan on relying on the same for some time at least.
So with all that done, this is how my Home Lab setup looks now.
We explored home labs in this article. We discussed what home labs are? Why may you consider setting one up yourself? We discussed various factors that you need to consider while setting up a home lab, such as budget, power consumption & space availability & the various compute options available based on these criteria. We also went over my specific use case & the hardware I chose with the reasoning, ending it with how my setup currently looks.
If you find the concept of home labs interesting, do follow this series to see how I have set it up & the applications I host on it. In the next article we’ll see how I assemble my Intel NUC11s & setup the networking configuration to accommodate my home lab with other devices at home.
Sameer Kulkarni is a software engineer with 14+ years of experience and is working as a Principal Engineer at InfraCloud. You can chat with him on Twitter & read more of his work on Medium.
Header Photo by Farzad on Unsplash