Reading time: ~20 minutes
Audience: VMware ESXi homelab users affected by Broadcom licensing changes
Prerequisites: Running ESXi 6.7+ or 7.0/8.0, and a fresh Proxmox VE 8.2 node
Why Migrate from ESXi to Proxmox?
The Broadcom Situation
In late 2023, Broadcom acquired VMware and discontinued the free ESXi hypervisor (vSphere Hypervisor). As of 2024–2026, new ESXi downloads require a paid VMware Cloud Foundation (VCF) subscription, with per-core pricing that makes homelab use economically unreasonable. Existing free ESXi installations lost update access and are increasingly insecure.
Why Proxmox Is the Natural Replacement
| Factor | ESXi (Pre-2024) | Proxmox VE 8.2 |
|---|---|---|
| License cost | Free (discontinued) | Free, fully functional |
| Feature limits | RAM capped at 8 vCPUs | None |
| APIs | Locked vSphere APIs | Full REST API + CLI |
| Backup | Requires Veeam or paid VDP | Built-in vzdump |
| Storage | VMFS only | ZFS, LVM, Ceph, NFS, iSCSI |
| Community | Shrinking due to licensing | Growing rapidly |
Prerequisites
Hardware Requirements
| Resource | Minimum | Recommended |
|---|---|---|
| Proxmox host CPU | 64-bit with VT-x | Same or better than ESXi host |
| Proxmox host RAM | 4 GB | Match ESXi host RAM |
| Storage | 128 GB SSD | Equal or greater than total VM disk usage |
| Network | 1 GbE | 1 GbE shared subnet for migration |
Software Requirements
- Access to ESXi Host Client (web UI) or vCenter
- A fresh Proxmox VE 8.2 installation with available storage
- SSH/SCP access between ESXi and Proxmox (or a shared NFS datastore)
- Adequate free space on Proxmox for imported disks (thin-provisioned VMDKs expand to full size during import)
Step 1: Export VMs from ESXi as OVA/OVF
Objective
Create portable VM packages from ESXi that Proxmox can import.
Step-by-Step Instructions
-
Log in to the ESXi Host Client (
https://esxi-ip). -
Shut down the VM you want to migrate cleanly.
-
Right-click the VM → Export.
-
ESXi will generate two files:
.ovf— VM configuration (CPU, RAM, network, disk mappings)-
.vmdk— Virtual disk image -
Download both files to your local computer or an intermediate storage server.
Important: If the export is grayed out, power off the VM completely (not just a guest shutdown). Some ESXi versions require the VM to be fully stopped before export.
Alternative: SCP from ESXi datastore directly
If the web export fails or the VM is too large for browser download:
# From your Proxmox node (or any Linux machine)
scp root@esxi-ip:/vmfs/volumes/datastore1/vm-name/vm-name.vmdk /tmp/
scp root@esxi-ip:/vmfs/volumes/datastore1/vm-name/vm-name.ovf /tmp/
ESXi root password is required.
Step 2: Transfer Files to Proxmox
Objective
Move the exported VM files to the Proxmox node.
Step-by-Step Instructions
Option A: Direct SCP to Proxmox
scp /local/path/*.vmdk root@proxmox-ip:/var/lib/vz/dump/
scp /local/path/*.ovf root@proxmox-ip:/var/lib/vz/dump/
Option B: Shared NFS/SMB datastore
Mount a temporary NFS share on both ESXi and Proxmox:
# On Proxmox
mkdir -p /mnt/migration
mount -t nfs nas-ip:/export/migration /mnt/migration
Option C: USB external drive
For air-gapped networks, copy VMDKs to an external USB drive, attach it to the Proxmox host, and mount it.
Step 3: Import the VM into Proxmox
Objective
Convert the ESXi virtual disk and register it as a Proxmox VM.
Step-by-Step Instructions
-
SSH into your Proxmox node as
root. -
Create a target VM shell without disks (we will attach the imported VMDK):
qm create 9000 --name migrated-vm --memory 4096 --cores 2 --net0 virtio,bridge=vmbr0
Replace 9000 with an unused VM ID, and adjust RAM/cores to match the original VM.
- Import the VMDK into Proxmox storage:
qm importdisk 9000 /var/lib/vz/dump/vm-name.vmdk local-lvm --format qcow2
If you are using ZFS or another storage:
qm importdisk 9000 /var/lib/vz/dump/vm-name.vmdk zfs-tank --format raw
- Attach the imported disk to the VM:
qm set 9000 --scsi0 local-lvm:vm-9000-disk-1
- Add a CD-ROM drive (optional, for driver installation):
qm set 9000 --ide2 local:iso/virtio-win.iso,media=cdrom
- Set the boot disk:
qm set 9000 --boot order=scsi0
- In the Proxmox web UI, inspect the VM under Hardware:
- Ensure the disk shows as
scsi0 - Verify network adapter is
virtioonvmbr0 - Remove any IDE disk references if they were auto-created
Step 4: Post-Migration Configuration
Objective
Fix network drivers, install QEMU guest agent, and optimize for KVM.
Step-by-Step Instructions
For Windows VMs:
- Start the VM and open the console.
- Windows will likely detect new hardware (the virtual NIC changed from Intel E1000e to VirtIO).
- Mount the VirtIO driver ISO:
- In Proxmox UI: Hardware → CD/DVD Drive → Choose virtio-win.iso
- Inside Windows, open Device Manager and update the Ethernet Controller driver by pointing it to the mounted ISO.
- Install the QEMU guest agent for clean shutdowns and IP reporting:
- Mount
virtio-win.iso, navigate toguest-agent/, runqemu-ga-x64.msi
For Linux VMs:
- Start the VM and open the console.
- Linux usually detects VirtIO NICs automatically.
- Install the QEMU guest agent:
sudo apt update && sudo apt install qemu-guest-agent # Debian/Ubuntu
sudo yum install qemu-guest-agent # RHEL/CentOS
sudo systemctl enable --now qemu-guest-agent
- Update initramfs if you switched disk controller types:
sudo update-initramfs -u # Debian/Ubuntu
sudo dracut -f # RHEL/Fedora
For all VMs:
- Remove the CD-ROM after driver installation:
bash qm set 9000 --delete ide2 - Adjust memory ballooning if desired:
bash qm set 9000 --balloon 2048 - Enable Discard (TRIM) if the underlying storage is SSD: In the UI, go to Hardware → Hard Disk → Edit → Check “Discard”.
Step 5: Bulk Migration with qm import Scripting
Objective
Automate migration when you have many VMs.
Step-by-Step Instructions
For 5+ VMs, manual clicking becomes tedious. Use a shell loop:
#!/bin/bash
# migrate.sh — run on Proxmox as root
VM_LIST="vm1 vm2 vm3 vm4 vm5"
DATASTORE="local-lvm"
IMPORT_DIR="/var/lib/vz/dump"
START_ID=9000
for VM_NAME in $VM_LIST; do
VMID=$((START_ID++))
echo "Importing $VM_NAME as VMID $VMID..."
qm create $VMID --name $VM_NAME --memory 4096 --cores 2 --net0 virtio,bridge=vmbr0
qm importdisk $VMID $IMPORT_DIR/${VM_NAME}.vmdk $DATASTORE --format qcow2
qm set $VMID --scsi0 ${DATASTORE}:vm-${VMID}-disk-1 --boot order=scsi0
echo "Done: $VM_NAME"
done
Make executable and run:
chmod +x migrate.sh
./migrate.sh
Pro Tips
Tip 1: Convert Thick to Thin During Import
ESXi often uses thick-provisioned VMDKs. Proxmox’s qcow2 format is thin-provisioned by default, saving significant space. Always specify --format qcow2 unless you need raw performance.
Tip 2: Snapshot Before Migration
On ESXi, take a snapshot before powering off. If the migration fails, you can revert and retry without losing the running state.
Tip 3: Network MAC Address Preservation
If your VM has DHCP reservations or firewall rules tied to its MAC address, preserve it during migration:
qm set 9000 --net0 virtio=AA:BB:CC:DD:EE:FF,bridge=vmbr0
Tip 4: Test One VM Before Bulk Operations
Migrate your least critical VM first. Verify it boots, network works, and applications function before committing time to the rest.
Troubleshooting Common Issues
“No bootable device” After Import
- Ensure the boot order includes
scsi0orvirtio0:bash qm set 9000 --boot order=scsi0 - Check that the imported disk is attached and not showing as “Unused” in the Hardware tab.
Blue Screen (INACCESSIBLE_BOOT_DEVICE) on Windows
The disk controller changed from VMware LSI Logic to VirtIO/SCSI. Before exporting from ESXi, install the VirtIO drivers inside Windows, or change the Proxmox disk controller to IDE temporarily, boot Windows, install drivers, then switch to SCSI.
Slow Import Speed
VMDK to QCOW2 conversion is CPU-intensive. On low-power hosts (N100), large disks can take hours. Consider:
- Using screen or tmux so SSH disconnects do not abort the import
- Scheduling bulk imports overnight
Network Not Connecting
Linux VMs may have network interface names changed (ens160 → ens18). Update /etc/netplan/ or /etc/network/interfaces accordingly.
Conclusion
Summary
You have exported VMs from ESXi, transferred them to Proxmox, converted VMDKs to QCOW2, attached them to new VM configurations, and fixed network drivers. The migration path is proven and does not require reinstalling operating systems or applications.
Next Steps
- Compare Proxmox vs ESXi in depth
- Set up Proxmox Backup Server for automated VM snapshots
- Learn Proxmox high availability clustering
- Deploy your first Docker stack on the migrated VM
Affiliate Opportunities
- Mini PCs for Proxmox: Beelink, Minisforum, or used Dell OptiPlex units
- Storage upgrades: Samsung 990 PRO, Crucial T500 for fast VM storage
- 10 GbE networking: MikroTik CRS305 or TP-Link TL-SX3008F for fast VM migrations
Internal Linking Strategy
why-migrate→/proxmox-vs-esxi-for-homelabfor readers weighing optionsimport→/proxmox-beginner-guidefor storage and networking basicsconclusion→/docker-compose-for-beginnersfor app deployment on the migrated VMs
CTA
How many VMs did you migrate? Share your ESXi-to-Proxmox story in the comments!
Subscribe to the WordForge newsletter for more migration guides, self-hosting tips, and homelab hardware reviews.