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:

  1. Download the ISO from proxmox.com
  2. Write it to a USB drive (use dd or Balena Etcher)
  3. Boot from USB and follow the installer
  4. 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 sysctl to 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

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
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

  1. Use static IPs for all servers — DHCP makes automation harder
  2. Set up Pi-hole on the network — it’s a quick win
  3. Enable fail2ban on all exposed services
  4. Use a VPN (WireGuard) for remote access — never expose services directly to the internet
  5. 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.