What you get for $0:
Before Proxmox, I had separate physical boxes for everything. pfSense router. TrueNAS. Dev machine. Each pulling power, each a single point of failure. When the NAS motherboard died, rebuilding it took a weekend I didn't have.
I consolidated onto one server running Proxmox. 15+ VMs and containers on a single machine now. Need to test something? New VM in minutes. Broke something? Snapshot rollback in seconds. It replaced ESXi, and I haven't missed it once.
What You Need
- A dedicated machine (old PC, decommissioned server, anything with decent specs)
- At least 8GB RAM (16GB+ recommended for running multiple VMs)
- A CPU with virtualization support (Intel VT-x or AMD-V)
- At least one SSD for VM storage (spinning disks work but you'll feel it)
- A USB drive for installation
I started on a $60 Dell Optiplex from eBay. Proxmox doesn't need much. Just confirm your CPU has VT-x or AMD-V enabled in BIOS — it's usually off by default on consumer boards.
Installation
Download and Flash
Get the ISO from proxmox.com/downloads. Use Rufus (Windows) or dd (Linux) to
create a bootable USB.
Boot and Install
Boot from USB. The installer is graphical:
- Accept the license agreement
- Select the disk for installation (warning: this wipes the disk)
- Set location and timezone
- Create a root password and provide email (for alerts)
- Configure networking (use a static IP you'll remember)
Installation takes about 5 minutes. Reboot when prompted, remove the USB.
First Login
Navigate to https://YOUR_IP:8006 in a browser. You'll get a certificate warning - accept it.
Login with:
- User:
root - Password: whatever you set during installation
- Realm: Linux PAM authentication
You're in. Ignore the subscription popup for now (covered below).
Getting Rid of the Subscription Nag
pveproxy package update, then you run it again. Mildly tedious, but less tedious than clicking "OK" 400 times a year.
To remove the popup:
# SSH into your Proxmox server
ssh root@YOUR_IP
# Edit the subscription check
sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
# Restart the web interface
systemctl restart pveproxy.service
This patches out the popup. No features are affected — it's a UI-only change.
You also need to switch repos. The default points to the enterprise repository, which requires a subscription key:
# Comment out enterprise repo
sed -i 's/^deb/# deb/' /etc/apt/sources.list.d/pve-enterprise.list
# Add no-subscription repo
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
apt update && apt upgrade -y
VMs vs Containers
Proxmox runs two types of guests:
Virtual Machines (KVM)
- Full hardware virtualization
- Run any OS (Windows, Linux, BSD, etc.)
- Completely isolated from host
- Higher resource overhead
Containers (LXC)
- OS-level virtualization
- Linux only
- Share the host kernel
- Much lower overhead - faster startup, less RAM
Rule of thumb: Use containers for Linux services where performance matters. Use VMs for Windows, for things that need full isolation, or when you need a different kernel.
Creating Your First VM
Upload an ISO
In the web interface:
- Click your storage (usually "local")
- Click "ISO Images"
- Click "Upload" and select your OS ISO
Create the VM
Click "Create VM" in the top right.
General: Give it a name and ID (Proxmox auto-suggests an ID)
OS: Select your uploaded ISO, set OS type (Linux/Windows)
System: Default BIOS is usually fine. For Windows 11, you need UEFI + TPM
Disks: Size your disk. Use VirtIO SCSI for best performance
CPU: Allocate cores. Don't exceed physical cores. "host" type gives best performance
Memory: Allocate RAM. Enable ballooning if you want dynamic adjustment
Network: Use VirtIO for performance. Bridge to vmbr0 by default
Click create. Start the VM. Open console. Install your OS as you normally would.
Creating a Container
Download a Template
- Click your storage → "CT Templates"
- Click "Templates"
- Download your preferred distro (Ubuntu, Debian, Alpine, etc.)
Create the Container
Click "Create CT" in the top right.
The wizard is similar to VMs but simpler. Key differences:
- You set a root password (no separate install process)
- Network is configured during creation
- Container is immediately usable after creation
Containers boot in under two seconds. I use them for everything that doesn't specifically need a full VM.
Networking Basics
Proxmox creates a bridge vmbr0 by default. This connects VMs/containers to your physical
network.
For most homelabs, the default works fine:
- Each VM/container gets an IP on your LAN (via DHCP or static)
- They can reach each other and the internet
If you need VLANs or internal-only networks, you can create additional bridges. But start simple.
Storage Configuration
This is where Proxmox is genuinely better than ESXi, not just cheaper. ESXi locks you into VMFS — one filesystem, take it or leave it. Proxmox treats ZFS, LVM, LVM-thin, Ceph, NFS, and plain directories as first-class citizens. You pick the storage backend per use case, not per "what the hypervisor supports." Here's how I organize mine:
Local Storage (local)
Small, on the system SSD. I use it for:
- ISO images
- Container templates
- Snippets (cloud-init configs)
Local-LVM (local-lvm)
Default thin-provisioned storage for VM disks. Works well.
Adding Storage
To add a new drive for VM storage:
- Identify the disk:
lsblk - Datacenter → Storage → Add
- Choose type (Directory, LVM, ZFS, etc.)
- Point it at your disk/partition
ZFS is worth the setup time if you have multiple disks — you get redundancy, compression, and snapshots without any extra software. ESXi can't touch this without vSAN licensing.
Backups and Snapshots
This is the part that pays for itself on the first disaster.
Snapshots
Point-in-time state of a VM. Instant to create, instant to restore.
# Create via GUI: Select VM → Snapshots → Take Snapshot
# Or CLI
qm snapshot 100 before-changes
About to do something scary? Snapshot first. If it breaks, rollback. Takes seconds.
Backups
Full exports you can restore to different hardware.
- Select VM/container
- Backup → Backup Now
- Choose storage, compression, mode
Automated Backups
Datacenter → Backup → Add schedule
I backup all VMs weekly, critical ones daily. Stored on a separate drive. When my Proxmox node died once, I was back up in under a hour on new hardware.
Installation Notes
- USB drive needs to be at least 2GB. Ventoy or Rufus for flashing,
ddon Linux. - Don't dual-boot. Proxmox wants the whole disk. Give it a dedicated SSD and save yourself the partition headaches.
- Switch to the no-subscription repo immediately after install unless you're paying for a subscription.
Tips
Use Templates
Set up a base VM or container the way you like it (updates, common packages, SSH keys). Then convert to template. Future VMs can be cloned from it in seconds.
Cloud-Init
For Linux VMs, Cloud-Init presets hostname, SSH keys, and network settings before first boot. Cuts VM setup from 10 minutes of clicking to one template clone.
PCIe Passthrough
You can pass physical hardware (GPUs, network cards, USB controllers) directly to VMs. Requires enabling IOMMU in BIOS and some configuration, but it works well.
High Availability
With multiple Proxmox nodes, you can cluster them for automatic VM migration on node failure. This is the kind of thing VMware charges thousands for with vCenter. Proxmox includes it.
Performance Tuning
- Use VirtIO drivers for Windows VMs (download from Proxmox's site)
- CPU type: "host" gives best performance, "kvm64" for maximum compatibility
- Enable NUMA for multi-socket CPUs
- SSDs for VM storage — spinning disks are fine for backups and ISOs but painful for OS disks
My Typical Proxmox Setup
For reference, here's what runs on my homelab Proxmox server:
- pfSense VM - Router/firewall with PCIe NIC passthrough
- TrueNAS VM - Storage, with HDD directly passed through
- Docker container - Runs 20+ services via Docker Compose
- Pi-hole container - DNS-level ad blocking
- Dev VM - Ubuntu desktop for development
- Windows VM - For that one piece of software that won't run anywhere else
- Test containers - Spin up and destroy as needed
Total hardware: one refurbished Dell R720 with 64GB RAM and 6 drives. Power draw sits around 120W idle. About $15/month in electricity.
Migrating from ESXi
If you're coming from ESXi: qm importdisk handles VMDK files. Export your VMs from ESXi as OVA or grab the VMDK files directly from the datastore, upload them to Proxmox, and import. You'll need to recreate the VM shell (CPU, RAM, network settings) but the disk data carries over. Plan a weekend for it. It's less painful than you expect — I moved 8 VMs in about 6 hours, and most of that was waiting on file transfers over the network.
💬 Comments