Key findings
- To get started easily, start with a Type 2 hypervisor.
- Explore personal cloud platforms and venture into Docker containers.
- Check out Proxmox if you want to build a home lab that specializes in self-hosting services.
If you're not familiar with self-hosting, it's the process of running services, applications, and platforms on your own hardware without relying on third-party vendors. Whether you're tired of companies ruining your favorite apps or just want to experiment with the FOSS alternatives to popular services, self-hosting is a fun hobby for anyone with even the slightest interest in computers.
However, the sheer number of tools, hypervisors and virtualization platforms can quickly become daunting, so we've put together an easy-to-follow plan to get you a head start on your self-hosting adventure.
1 Start with a Type 2 hypervisor
And use it to create simple projects
If you're new to self-hosting, you don't need to delve into server systems right away. Type 2 hypervisors that can run on top of your PC's existing operating system offer beginners a simple yet robust solution. Of course, you'll need to enable virtualization/SVM/AMD-V in the BIOS beforehand, but the fact that you don't need to tweak anything else makes Type 2 hypervisors a safe way to learn terminal commands, network interfaces, and other important aspects of self-hosting.
If you're using Windows 11, you have VMware Workstation Pro and VirtualBox at your disposal, although I recommend the former due to its better performance. Once you've got the hypervisor up and running, you can experiment with different distributions and operating systems. I suggest starting with a simple operating system like LibreELEC, as it will give you an insight into accessing systems (or in this case, virtual machines) over the network. Plus, building a movie streaming machine is far more rewarding and exciting than learning full-fledged Linux distributions right from the start.
A tip: Remember to change the network interface of your VMs to “Bridged Network” if you want to access them from other devices on your local network.
2 Check out personal cloud platforms
Make sure you set them up on Linux distributions
When you're ready to move on to more advanced services, it's time to start a proper Linux virtual desktop machine. Ubuntu and Debian are the perfect options for beginners. Of course, the journey wouldn't be fun if you spent all your time learning Linux commands, so after you've installed your preferred distribution and updated the repositories, I recommend you try out some self-hosted cloud environments.
CasaOS is my preferred personal cloud, but you can use Cosmos Cloud if you want something with reverse proxy measures built in. However, the real fun starts once you start installing apps on these cloud environments. From Syncthing and PhotoPrism to Home Assistant and Node-RED, you can set up a variety of useful self-hosted applications using CasaOS and Cosmos Cloud.
If you want to easily self-host your own services and don't want to spend hours tinkering with your PCs, you can end your journey at this point. However, for those who want to delve deeper into the world of self-hosting, the difficulty level starts to increase at the next level.
3 Venture into the world of Docker containers
Use WSL2 if you are using Windows
Unlike virtual machines, which you've always run, containers don't rely on hypervisors. Instead, they run using container engines (like Docker) and use far fewer resources. This means you can deploy multiple services at once without putting a strain on your system. Docker Engine is one of the most popular means of deploying containers, and it's relatively easy to install… on Linux distributions.
If you don't have a spare PC to install the more optimized Linux distributions on, there's no harm in installing those on your Windows machine. However, if you've neglected to learn Linux commands so far, I'd really recommend installing Docker using WSL2 instead of starting a Linux-based VM. Once you're more comfortable running commands in terminals and learning how to edit YAML files, it's time to move on to the next level of our roadmap.
4 Create a Proxmox server
However, it can be a bit of a burden on your wallet.
Up to this point, you may not have incurred any costs in self-hosting your favorite services. However, if you want to join the ranks of home lab enthusiasts, you'll need access to a spare PC, preferably one with lots of CPU cores and plenty of memory. This is where you can finally move from Type 2 hypervisors to their bare-metal Type 1 counterparts, which run directly on your PC's hardware rather than on top of a pre-existing operating system.
Had I written this article in 2023, you would have been able to choose between the open source Proxmox or VMware's industrial-grade ESXi. Unfortunately, the latter is not accessible for free to new users, meaning you have to go with Proxmox. XCP-ng is a decent alternative, but after using Proxmox for many months, it is hands down the best free-to-use virtualization platform.
Plus, Proxmox is really easy to get up to speed with. We also have plenty of Proxmox guides here on XDA, from beginner guides to troubleshooting tutorials that you can use as a reference when you run into problems. For 90% of readers, Proxmox offers all the features you'll ever need to self-host your favorite services. But if you're up for a challenge, you can up the ante by diving into the world of Ansible-based automation.
5 Tinkering with Ansible
Admittedly a bit over the top for self-hosting general services
Let me preface this section by saying that for the average home lab owner, it may not be worth the effort to learn something as complex as Ansible, but if you are looking to gain industry experience for your DevOps journey, Ansible is the perfect complement to Proxmox.
First of all, Ansible can automate the build, deployment, and backup processes for your virtual machines and containers. Not only can you set up rules to automatically enable features like SSH and VNC, but you can also configure Ansible to install packages without human intervention. Combine Ansible with a highly available Proxmox cluster and you have a robust home lab that can not only run all your favorite self-hosted apps, but can also serve as an experimentation center for your coding needs.
Although it sounds difficult, self-hosting is a fun experience
Although the jargon and terminal commands might sound a bit intimidating for beginners, it's a lot easier than it looks. If you stick with it, you'll soon find yourself having fun building (and, more importantly, breaking) entire apps in virtualized environments. Just keep in mind that this hobby is really addictive and you might end up with multiple server rigs running multiple services, half of which you'll probably never use.