This is the first in an ongoing series of posts on building and running a Kubernetes Home Lab. You can find other posts using the Home Lab 101 tag.
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 and I thought of giving it a try.
As a software engineer, I had an idea of what data centers and 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 and set up the servers according to my use case, maintain and 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 and networking components, how to choose and install the required software components and 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 and 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.
Some of you might be wondering, what is a Home Lab? It means having a compute and sometimes supporting networking setup in your personal space such as home, typically running 24 X 7 and 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 and networking setup. You can choose the setup based on your needs, budget and 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.
As a software engineer, there are a few things you can consider having a Home Lab for.
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.
There are a few things that you need to consider while setting up a home lab. Namely budget, power consumption and 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 and 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 and try to stick with it.
This is a factor that often goes ignored. Based on the equipment you start with and 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.
Now that you’ve decided to go ahead with your Home Lab and 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 and maybe some networking equipment too. As mentioned earlier, depending on the need and 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.
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 and the most hands-on of the options available. You typically get just a small circuit board with a microprocessor / microcontroller and some ports for connectivity. You also have a wide variety of sensors and 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 and 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 and pack considerable compute performance in a smaller size. Depending on the model and supplier these may be available bare bones, i.e. just the circuit board with processor, or may also come with Storage and RAM. If you go with the bare bones model, you get to choose and install the RAM and Storage depending on your need.
Most Laptop/Desktop manufacturers offer Mini Computers too. Asus PN and 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 and 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 and your location.
This is the most expensive, largest and also the most sophisticated option. If you’re convinced that the options above aren’t sufficient for your needs and 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 and Tower Servers. For more details on all three types of servers you can go through this nice article I found.
Considering the above information, I first needed to decide on my use case for my Home Lab and a budget for the same.
As a software developer, writing microservices based applications and 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 and 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 using Acorn, a simple way of packaging Kubernetes applications, or build pipelines etc. on the cluster.
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 and use the 4th machine as a storage server.
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 and 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 and 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 and available connectivity options.
For my setup I went with 8GB RAM and 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. My Home Lab setup
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 and space availability and the various compute options available based on these criteria. We also went over my specific use case and 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 and the applications I host on it. In the next article we’ll see how I assemble my Intel NUC11s and setup the networking configuration to accommodate my home lab with other devices at home.
This was the first post in our series on building a Kubernetes home lab. If you haven’t checked out the other posts in this series you can go through them using the list below.