What is a Homelab?
In case you have never heard the term, Homelab is the name given to a server (or multiple server setup) that resides locally in your home and where you host several applications and virtualized systems for testing and developing or for home and functional usage.
This server can be a simple tower or small PC or a Raspberry Pi like device or a repurposed professional server that you can acquire from companies who discard them due to their age but are still usable.
In my case, I have a small ITX case with a Core i5, 8 GB RAM, 2 TB of hard disk. This is a very modest machine but enough for my usage which is merely for home purposes.
Why do you need a homelab?
You don't. It's not something mandatory for everyone to have a homelab setup. But having a homelab setup has its advantages.
If you are new to Linux servers, it provides you a playground for learning and breaking things.
If you are working as a software developer or sysadmin or devops, it lets you work and experiment with projects that you cannot try on the job itself.
It allows you to learn and do things on your own. With a little patience, you could create projects that would otherwise cost a lot if you to professional services. For example, a CCTV setup.
A homelab is also essential if you are privacy cautious and don't trust cloud services to back up their data.
Homelabs could also result in productive weekends. If you have young children at home, they could be involved in building cool stuff. A fun and engaging way for children to learn cutting edge stuff.
You have the hardware for homelab, now what?
After you have the hardware, you could simply install an OS, usually Linux and start virtualizing or hosting containers for different purposes.
There are some Linux based OS which are intended for virtualization, such as: KVM, ProxMox or you can simply virtualize using a package over Linux or Windows with software such as VMWare, VirtualBox or QEmu among many other options and flavors.
My own homelab uses a VirtualBox installation although it has its limitations, especially if you are looking for to pass GPU power to your virtual machines, but that's material for a different article.
What can you do with a homelab?
This of course depends on what you do, your technical abilities and even what do you like to do. Still homelabs can have many uses, from work to simply fun, improving your technical abilities, testing things that might break your system or simply to keep things separated in case something breaks not all is lost.
Here I am going to list some usages that can be useful for the general public, although you can probably find a lot more usages if you think about what you need.
This is actually the excuse that initiated all for me, I wanted to have my own server so I could host all my media i.e., movies, photos and music.
Basically, I could host my own movie repository that I can later play in any of my devices being this at home or when I am on the road.
There are a few media servers available for Linux such as Plex, Kodi or Jellyfin.
Development and testing server
If you are a developer or a web designer, you probably would like to host several testing websites to be able to show to your clients while you are in the process of building them.
You don't want to invest in a hosting service because your hosting service actually limits you to do things. Cloud servers are cheap these days but hosting several test websites will still cost you a lot.
This is a great option as you can simply create or emulate any particular environment for any given project, show it off and then simply discard without having to invest money or monthly costs.
DVR and video monitoring system
If you want to monitor and record what happens at home when you are not around, you probably can virtualize your own DVR system.
There are some open source and commercial options that allow you to connect even wifi cameras and record what these capture, and then you can simply store locally or backup on the cloud for preservation.
This allows to basically build-as-you-need your DVR and assemble a great security system.
Some packages that you can find for this purpose are: Shinobi, iSpy, ZoneMinder among others.
Remote access server
If you have several computer or system which you maintain, either at home or at work, you probably don't want to expend on remote access software licenses.
There are alternatives that you can host as a virtual machine which not only will allow you to access your own (physical and virtualized) systems but to access these other systems (example: your parents computer offshore), by simply installing a remote access agent in each computer you wish to control which encrypts all communication between that system and your remote control server.
Some packages that can be of use for this and are open source are: Guacamole and Remotely.
Even though Cloud backup is cheap and actually works well, you probably prefer to maintain all your data off the grid, and store it locally. Or, maybe you simply prefer to have your photos, personal data and documents in your own local network for easiness and speed reasons.
This could also be another usage you can use your homelab for and create a VM for this, using packages such as ownCloud or Nextcloud among others.
Having a homelab can be a cool personal project at home. This can be fun to set up and maintain, if you are a tech nerd like me. You can build useful and functional projects for regular home consumption.
You can even create several desktop environments that other family members can use from their tablets or any device while on the go or at home, without having to invest in the physical devices per se.
It's definitely something nice to have if you have the chance and the time to set up, and you will definitely have fun learning things every day!