How to Set Up a Homelab with Proxmox
Proxmox VE is the most powerful free hypervisor for homelabs. Install it, create your first VMs and containers, configure storage, and build a homelab that scales from one machine to a full cluster.
1. Why Proxmox VE?
Proxmox Virtual Environment (VE) is an open-source hypervisor based on Debian that combines two virtualization technologies: <strong class="text-white">KVM</strong> (full hardware virtualization for Windows, BSD, etc.) and <strong class="text-white">LXC</strong> (lightweight Linux containers that share the host kernel).
It runs entirely in a web UI, supports clustering for multi-node setups, and has enterprise-grade features — all completely free. The only difference from the paid version is a subscription repository (which just means no auto-updates; no features are locked).
🖥️ Full VM support (KVM)
Run Windows, FreeBSD, macOS (with patches), or any OS that requires kernel-level virtualization.
📦 LXC containers
Lightweight containers that boot in seconds and use a fraction of the RAM of a full VM. Ideal for Linux services.
🔒 Built-in firewall
Per-VM and per-network firewall rules at the hypervisor level, independent of the guest OS.
📊 Live migration
Move running VMs between nodes in a cluster with zero downtime.
☁️ Built-in clustering
Combine multiple Proxmox nodes into a single management plane. Free without VMware-style licensing.
2. Install Proxmox VE
Proxmox VE installs from an ISO just like Ubuntu Server. The entire process takes about 10 minutes.
Download the ISO
Get the latest Proxmox VE ISO from proxmox.com — it's completely free.
https://www.proxmox.com/en/downloadsFlash to USB
Use Balena Etcher or dd to create a bootable USB.
sudo dd if=proxmox-ve_8.2-1.iso of=/dev/sdX bs=4M status=progress oflag=syncBoot and install
Insert the USB, boot from it (F2/F12/Del for BIOS), and follow the installer. Set your root password and choose the disk to install on. Connect a monitor — you'll need it during installation.
Access the web UI
After installation, access the Proxmox web UI from any browser on your network. The default port is 8006.
https://192.168.1.xx:8006
# Login: root + your root passwordFix the enterprise repo (post-install)
On a fresh install, disable the enterprise repo to avoid "no subscription" errors in the UI.
rm /etc/apt/sources.list.d/pve-enterprise.list
cat <<EOF > /etc/apt/sources.list.d/pve-no-subscription.list
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
EOF
apt update && apt upgrade -y3. Configure Storage
Proxmox supports multiple storage types. For a homelab, the most common setup is a combination of local SSD for performance and a NAS for bulk storage.
local (local SSD)
The disk Proxmox is installed on. Use this for ISO images, container templates, and VM disk images. Don't fill it past 80% — Proxmox needs space for snapshots.
local-lvm (thin-provisioned)
Logical Volume Manager on your SSD. Provides thin-provisioned block storage for VMs. Faster than file-based storage but cannot be shared across nodes.
NFS / CIFS mount
Mount your NAS (Synology, TrueNAS, or Unraid) as network storage. Use this for bulk VM disks, container volumes, and backups. Shared across all Proxmox nodes.
ZFS (optional)
If your server has multiple disks, ZFS provides software RAID, copy-on-write snapshots, and excellent performance. Configure during installation for best results.
4. Set Up Networking
Proxmox's default networking bridges your physical NIC to a virtual switch (vmbr0). For a homelab with VMs and containers, you typically want additional bridge interfaces for VLANs or isolated networks.
Navigate to Network config
In the Proxmox web UI: Node → System → Network.
Create a Linux Bridge for your LAN
Add a new bridge (vmbr1) connected to your physical NIC for a secondary network or VLAN trunk.
# /etc/network/interfaces — add:
auto vmbr1
iface vmbr1 inet static
address 192.168.1.254/24
bridge-ports none
bridge-stp off
bridge-fd 0Attach VMs to the right bridge
When creating a VM or LXC, choose vmbr0 for internet-facing services and vmbr1 for isolated homelab networks.
5. Create Your First VM
Let's create a simple Ubuntu Server VM to run your homelab services.
Upload an ISO
Upload your Ubuntu Server ISO via the Proxmox web UI (local → ISO Images → Upload), or download it directly from Ubuntu inside the VM creation wizard.
Create a new VM
Click "Create VM" in the top right. Give it a name (e.g., "ubuntu-services"), set OS type to Linux, choose your ISO, and allocate resources. For a homelab services VM: 2 vCPUs, 4 GB RAM, 32 GB disk is a good starting point.
Start and install Ubuntu
Boot the VM, follow the Ubuntu Server installer. On the network screen, ensure you have a static IP on the correct bridge. After installation, log in and install Docker.
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USERSnapshots — your best friend
Before making changes to a VM, take a snapshot. Proxmox can take live snapshots (VM stays running). If something breaks, restore in 10 seconds.
# In Proxmox web UI: VM → Snapshots → Take Snapshot
# Or via CLI:
qm snapshot <vmid> pre-docker-install
# To restore:
qm rollback <vmid> pre-docker-install6. LXC Containers vs VMs — When to Use Which?
Proxmox supports both KVM virtual machines and LXC containers. Here's when to use each:
Use LXC when:
Running Linux services (Pi-hole, Docker, Home Assistant, Nginx, PostgreSQL). LXC containers start in 1–2 seconds, use 1/10th the RAM of a VM, and have near-native disk I/O. Perfect for homelab services.
Use a VM when:
You need a different OS (Windows, BSD), kernel-level features (GPU passthrough), or strict isolation. VMs are fully isolated at the hardware level — if a container escapes, the VM still protects the host.
Docker inside LXC — yes, it works
Running Docker inside an unprivileged LXC is the standard homelab approach. It gives you container management with Docker Compose while keeping the isolation benefits of LXC. Enable nesting in the LXC options.
7. GPU Passthrough
GPU passthrough lets a VM or LXC directly use your NVIDIA or AMD graphics card. This is essential for running local LLMs, Plex hardware transcoding, or gaming VMs on your homelab.
Proxmox supports GPU passthrough via VFIO (PCIe device assignment). It requires enabling IOMMU in your BIOS and passing the GPU's PCIe address to the VM.
Enable IOMMU in BIOS
Enable Intel VT-d (Intel) or AMD-Vi (AMD) in your BIOS/UEFI settings.
Edit GRUB to enable IOMMU
Add intel_iommu=on or amd_iommu=on to your GRUB cmdline, then update GRUB.
# /etc/default/grub — add to GRUB_CMDLINE_LINUX_DEFAULT:
intel_iommu=on iommu=pt
# Then:
update-grubBind GPU to VFIO
Find your GPU's PCIe address and add it to the VFIO modules.
lspci -nn | grep -i vga
# Note the IDs like 10de:1b80 (NVIDIA) or 1002:687f (AMD)
# /etc/modprobe.d/vfio.conf:
options vfio-pci ids=10de:1b80,10de:10efAttach GPU to VM
In Proxmox web UI: VM → Hardware → Add → PCI Device → Select your GPU → All Functions (requires VM to be stopped). Enable "Primary GPU" if you want the VM to boot directly to the GPU.
8. Backup Strategy
Proxmox has a built-in backup scheduler that takes VM/container snapshots and stores them to any storage pool (NFS, CIFS, or local).
Configure a backup storage
Add your NAS as an NFS or CIFS mount in Proxmox (Datacenter → Storage → Add → NFS/CIFs). Give it a name like "nas-backup".
Set up a backup job
Datacenter → Backup → Add. Select the NAS storage, choose which VMs to back up, set a schedule (daily at 3 AM is common), and select "Snapshot" mode so VMs stay running during backup.
Mode: Snapshot (VM keeps running)
Schedule: daily 03:00
Selection: All VMs (or tagged ones)
Retention: keep-last:7Test a restore
Backups are worthless if you've never tested a restore. Try restoring a non-critical VM to verify your backup actually works. It's also a chance to measure your restore time.
Frequently Asked Questions
Can Proxmox run without a subscription?
Yes. The free community version has all the same features as the subscription version. The only difference is that you won't get automatic updates from the enterprise repository (you use the no-subscription repo instead). All features, clustering, and ZFS are fully available.
How much RAM do I need for Proxmox?
Proxmox itself uses about 1–2 GB of RAM with no VMs. For a homelab, 16–32 GB is ideal — enough to run 5–10 VMs or LXC containers simultaneously without swapping. 64 GB is better if you want to run GPU workloads or memory-intensive services like local LLMs.
Can I run Docker directly on Proxmox (not inside a VM)?
You can install Docker on the Proxmox host, but this is generally discouraged — it mixes host management with application workloads and can complicate upgrades. The recommended approach is to run Docker inside an LXC container.
What is the difference between Proxmox and TrueNAS for a homelab?
Proxmox is a hypervisor (runs VMs and containers). TrueNAS is a NAS-focused OS (manages storage). Many homelabs run Proxmox as the main hypervisor with a TrueNAS VM or dedicated machine for storage. Alternatively, TrueNAS Scale can also run Docker containers and VMs, making it a "do everything" option.
Can I run macOS on Proxmox?
Technically, yes with OpenCore and patches (looking-glass for display, VFIO for GPU). But it's legally gray (Apple's EULA prohibits macOS on non-Apple hardware) and requires significant setup. For a homelab, Linux VMs are the practical choice.
Secure Your Homelab
Now that you have Proxmox running, learn how to set up a firewall and network segmentation.
Firewall Setup Guide →