Creating My First Homelab: A Journey to Improving My Developer Skills
Building a homelab was a significant step in enhancing my skills as a developer, especially with the focus on cloud-native technologies and infrastructure management. This journey provided me with hands-on experience in server management, networking, virtualization, and remote connectivity. In this blog post, I’ll walk you through the steps I took to set up my homelab using an old laptop and later expanding it into a Proxmox cluster with a Dell OptiPlex.
The Initial Setup: A Modest Beginning
My journey began with an old laptop that I had lying around. It wasn’t a powerhouse by any means, but it had enough to get started. The laptop had:
- 8GB RAM
- 256GB storage
- Intel i5 8th Gen processor
Although these specs are far from ideal for heavy workloads, they were perfect for a beginner’s homelab and a great way to experiment without investing too much upfront.
Installing Proxmox
The first step was to turn my old laptop into a dedicated server by installing Proxmox VE (Virtual Environment). Proxmox is a powerful, open-source platform for managing virtual machines (VMs) and containers. Here’s how I went about the installation:
Creating a Bootable USB:
I downloaded the Proxmox ISO image and created a bootable USB using a tool like Rufus.Installing Proxmox:
I booted the laptop from the USB and followed the installation prompts. Soon, I had Proxmox running on my laptop.Configuring Interfaces:
After installation, I configured the network interfaces. My router’s DHCP range was from 192.168.1.64 to 192.168.1.253. To keep the Proxmox server accessible, I set the gateway IP outside this range, but still within my home network’s subnet (e.g., 192.168.1.10).
Networking Challenges: WiFi Woes and the Solution
At first, I attempted to connect the laptop over WiFi, but I quickly ran into issues. Proxmox doesn’t work well with WiFi interfaces when it comes to bridging, and the network setup was unstable.
A Wired Solution
I decided to invest in a Gigabit to USB adapter. This gave me a wired Ethernet connection, which was a major improvement over WiFi. I connected the adapter to a network switch, which in turn was connected to my ISP router. This setup provided a stable and fast connection, ensuring that Proxmox could run without issues and that my virtual machines could communicate with each other and the outside world.
Setting Up Virtualization: Ubuntu VMs and Templates
Once the networking was sorted out, I moved on to setting up virtual machines. I wanted to create a basic Ubuntu server VM to simulate real-world environments for development and testing.
Uploading Ubuntu Server Images:
I downloaded the latest Ubuntu Server ISO and uploaded it to Proxmox.Creating Templates:
I also created a template out of my Ubuntu VM. This made it easy to spin up new instances whenever I needed to test different setups.
Remote Access: SSH and Tailscale
To enable remote access, I installed Tailscale on the Proxmox server. This allowed me to SSH into my Proxmox server from anywhere, making remote management incredibly easy.
Expanding the Homelab: Adding a Dell OptiPlex
After running my homelab on a single node for a while, I decided to expand it by adding a second node to create a Proxmox cluster. I acquired a Dell OptiPlex, which had better hardware than my laptop:
- 16GB RAM
- 500GB storage
- Intel i5 7th Gen processor
Installing Proxmox on the Dell OptiPlex
The installation process for Proxmox was exactly the same as with the laptop. I followed these steps:
- Created a bootable USB with the Proxmox ISO
- Installed Proxmox VE
- Configured network settings similar to my first node
Creating a Proxmox Cluster
Once the Dell OptiPlex was running Proxmox, I proceeded to join it to my existing Proxmox installation on the laptop to form a Proxmox cluster. Here’s how I did it:
Created a Cluster on the First Node (Laptop)
- In the Proxmox web UI, I navigated to Datacenter → Cluster and created a new cluster.
Joined the Dell OptiPlex to the Cluster
- On the second node (OptiPlex), I ran the join command provided by Proxmox.
Verified Cluster Status
- After successfully adding the node, I confirmed that both machines were part of the same cluster in the Proxmox UI.
Now, I had a multi-node Proxmox homelab capable of migrating VMs between nodes and providing a more scalable environment for experimentation.
Lessons Learned and Future Expansions
This homelab setup has already taught me a great deal about networking, server management, and virtualization. Here are some of the key takeaways:
- Proxmox and Networking: I learned the importance of using a wired connection for stability.
- VM Management: Setting up templates for VMs makes deployment much faster.
- Remote Access: Tailscale is a game-changer for secure and easy remote access.
- Cluster Management: Running a multi-node Proxmox cluster allows for VM migration and load balancing.
Future Expansions
Now that I have a two-node Proxmox cluster, I plan to expand my homelab even further. Some of my next goals include:
- Adding More Nodes: Increasing the number of machines in my cluster for even more scalability.
- Exploring Kubernetes: Running K3s or Kubernetes clusters on top of my VMs.
- Automating Deployments: Using Ansible and Terraform for infrastructure automation.
Conclusion
Building my first homelab and later expanding it into a multi-node cluster was an incredibly rewarding experience. It gave me a deeper understanding of server management, networking, and virtualization, all of which are crucial skills for modern cloud engineering.
With my two-node Proxmox cluster in place, I feel more confident experimenting with new cloud-native technologies, running containers, Kubernetes, and automation tools, and ultimately improving my skills as a Site Reliability Engineer (SRE).
Stay tuned for future updates as I continue to grow my homelab and take on more advanced projects! 🚀