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

  1. Log in to the ESXi Host Client (https://esxi-ip).

  2. Shut down the VM you want to migrate cleanly.

  3. Right-click the VMExport.

  4. ESXi will generate two files:

  5. .ovfVM configuration (CPU, RAM, network, disk mappings)
  6. .vmdk — Virtual disk image

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

  1. SSH into your Proxmox node as root.

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

  1. 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
  1. Attach the imported disk to the VM:
qm set 9000 --scsi0 local-lvm:vm-9000-disk-1
  1. Add a CD-ROM drive (optional, for driver installation):
qm set 9000 --ide2 local:iso/virtio-win.iso,media=cdrom
  1. Set the boot disk:
qm set 9000 --boot order=scsi0
  1. In the Proxmox web UI, inspect the VM under Hardware:
  2. Ensure the disk shows as scsi0
  3. Verify network adapter is virtio on vmbr0
  4. 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:

  1. Start the VM and open the console.
  2. Windows will likely detect new hardware (the virtual NIC changed from Intel E1000e to VirtIO).
  3. Mount the VirtIO driver ISO:
  4. In Proxmox UI: Hardware → CD/DVD Drive → Choose virtio-win.iso
  5. Inside Windows, open Device Manager and update the Ethernet Controller driver by pointing it to the mounted ISO.
  6. Install the QEMU guest agent for clean shutdowns and IP reporting:
  7. Mount virtio-win.iso, navigate to guest-agent/, run qemu-ga-x64.msi

For Linux VMs:

  1. Start the VM and open the console.
  2. Linux usually detects VirtIO NICs automatically.
  3. 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
  1. 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 scsi0 or virtio0: 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 (ens160ens18). 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


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-homelab for readers weighing options
  • import/proxmox-beginner-guide for storage and networking basics
  • conclusion/docker-compose-for-beginners for 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.