Virtualization15 min read

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.

1

Download the ISO

Get the latest Proxmox VE ISO from proxmox.com — it's completely free.

https://www.proxmox.com/en/downloads
2

Flash 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=sync
3

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

4

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

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

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

1

Navigate to Network config

In the Proxmox web UI: Node → System → Network.

2

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

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

1

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.

2

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.

3

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 $USER
4

Snapshots — 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-install

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

1

Enable IOMMU in BIOS

Enable Intel VT-d (Intel) or AMD-Vi (AMD) in your BIOS/UEFI settings.

2

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

Bind 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:10ef
4

Attach 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).

1

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

2

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

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