AI-generated content
Setting up a homelab is one of the most rewarding ways to learn about infrastructure. With Proxmox VE, you can virtualize almost anything — from web servers to Kubernetes clusters — on a single physical machine.
Why Build a Homelab?
A homelab gives you a safe, isolated environment to:
- Experiment with Linux without breaking your main system
- Learn networking concepts like VLANs, firewalls, and DNS
- Host services you use daily (media, file sharing, CI/CD)
- Practice for cloud certifications (AWS, Azure, GCP)
- Develop skills that transfer directly to production environments
Hardware Considerations
You don’t need expensive equipment. Here’s a reasonable starting point:
| Component | Budget Build | Performance Build |
|---|---|---|
| CPU | Intel N100 / AMD Ryzen 5 | AMD Ryzen 7 / Intel i7 |
| RAM | 16 GB DDR4 | 64 GB DDR5 |
| Storage | 1 TB NVMe | 2 TB NVMe + 4 TB HDD |
| Network | 1 GbE | 10 GbE |
The N100 platform is particularly popular for homelabs due to its low power consumption (~6W TDP) and sufficient performance for most learning tasks.
Installing Proxmox VE
Proxmox is a Debian-based hypervisor. Installation is straightforward:
- Download the ISO from proxmox.com
- Write it to a USB drive (use
ddor Balena Etcher) - Boot from USB and follow the installer
- Access the web UI at
https://<server-ip>:8006
# Flash USB on Linux
dd if=proxmox.iso of=/dev/sdX bs=4M status=progress oflag=sync
First Steps After Installation
1. Create Virtual Machines
Head to Datacenter > Node > Create VM. Start with:
- Ubuntu 24.04 LTS — general purpose, great for learning
- Debian 12 — lightweight, ideal for services
- Alpine Linux — minimal, for containers
2. Set Up Networking
Proxmox creates a bridge (vmbr0) by default. For more advanced setups:
- Create additional bridges for VLAN-tagged traffic
- Use
sysctlto enable IP forwarding for NAT - Configure iptables/nftables for host-level firewall
3. Deploy Containers (LXC)
LXC containers share the host kernel and are much lighter than VMs:
pct create 101 local:vztmpl/debian-12-standard_12.1-1_amd64.tar.zst \
--hostname container01 \
--memory 512 \
--swap 256 \
--cores 1 \
--net0 name=eth0,bridge=vmbr0,ip=dhcp
4. Enable ZFS (Optional but Recommended)
If you have enough RAM (at least 8 GB free for ARC), enable ZFS for:
- Built-in snapshots and rollback
- Data integrity with checksumming
- Compression (lz4) saves space
# Enable ZFS on root
pve-zfs-util --enable /dev/sda
Recommended Services to Run
| Service | Purpose | Container or VM? |
|---|---|---|
| Pi-hole | DNS-based ad blocking | LXC |
| Nextcloud | File sync & sharing | VM |
| Home Assistant | Home automation | LXC |
| Gitea | Git hosting | LXC |
| Unifi Controller | Network management | LXC |
| Jellyfin | Media streaming | VM |
| Cockpit | Web-based server admin | LXC |
Networking Tips
- Use static IPs for all servers — DHCP makes automation harder
- Set up Pi-hole on the network — it’s a quick win
- Enable fail2ban on all exposed services
- Use a VPN (WireGuard) for remote access — never expose services directly to the internet
- Monitor everything — Prometheus + Grafana gives you beautiful dashboards
Scaling Up
Once you’re comfortable, consider:
- Adding more nodes to Proxmox for clustering
- Setting up Ceph for distributed storage
- Implementing GitOps with ArgoCD
- Running Kubernetes with K3s on LXC containers
Final Thoughts
The homelab journey is iterative. Start small, learn one thing at a time, and expand as your skills grow. The best homelab is the one you actually use — pick projects that solve real problems in your life.
This post was generated with AI assistance. Review and customize it to match your experience.