mirror of
https://github.com/DatacorpCloud/ProxMox-VM-Migration-Tool.git
synced 2026-04-25 09:05:51 +03:00
Desktop tool to migrate VMs from VMware ESXi to Proxmox VE: VMDK copy, qemu-img conversion, import to storage ( images , dir ), optional UEFI/OVMF, progress bars and secure logging.
Now the copy from delta is optimized, and actually searches for the snap, avoiding the vmdk file not found error or No such file or directory |
||
|---|---|---|
| config | ||
| core | ||
| docs | ||
| logs | ||
| projects | ||
| ui | ||
| CHANGELOG.md | ||
| LICENSE | ||
| main.py | ||
| README.it.md | ||
| README.md | ||
| requirements.txt | ||
| ROADMAP.en.md | ||
| ROADMAP.md | ||
VM Backup & Migration Tool (Proxmox ⇄ ESXi)
Web UI (Backup & Restore)
Lightweight web interface (Flask) focused on day-to-day backup/restore operations:
- Resource management (Proxmox / ESXi credentials stored locally in SQLite)
- Repository storage management (NFS / iSCSI / Windows mounted paths)
- Backup workflows (ESXi and Proxmox)
- Restore workflows:
- Simple restore (auto-detect backup platform, optional VM name, start on/off)
- Cross-platform restore (Proxmox ⇄ VMware) using a Proxmox worker when needed
- Jobs view and real-time job events (progress and logs)
- Home dashboard metrics (backups count, total GB, VMs in backup, migrated VMs)
Run the Web UI
- Install deps:
pip install -r vm-migration-tool/requirements.txt - Start server:
python vm-migration-tool/main.py --web --host localhost --port 8080 - Open: http://localhost:8080
Notes
- MVP limitation: one job at a time (backup/restore/migration).
- Repo storages can be tested from the UI ("Test" button) to validate access before using them.
- Minimal runtime set for web-only deployments:
vm-migration-tool/main.pyvm-migration-tool/ui/web_app.pyvm-migration-tool/core/*vm-migration-tool/requirements.txt- Optional for persistence:
vm-migration-tool/app.sqlite3,vm-migration-tool/repository/
Web UI Screenshots
- Home

- Resources • Storage

- Jobs

- Resources • Virtualizers (list)

- Resources • Virtualizers (add)

- Backup

- Cross-platform restore

- Live cross migration

Desktop UI (legacy: ESXi → Proxmox migration)
Overview
- Desktop tool to migrate VMs from VMware ESXi to Proxmox VE.
- Copies VMDK from ESXi, converts with
qemu-img, imports to target storage, and configures VM (including optional UEFI/OVMF). - Progress bars and a dedicated progress log file for visibility.
Key Features
- ESXi copy via SCP with
sshpassusing a password file on Proxmox (no plaintext in commands). - Conversion and import to Proxmox storage (
images,dir, etc.). - Optional UEFI/OVMF config (
q35,ovmf,efidisk0with pre-enrolled keys). - UI flow: Connect & Scan → Options & Migration.
Requirements
- Python 3.9+
- Proxmox VE reachable via SSH.
- ESXi host reachable via SSH (user with read access to datastore).
Quick Start
- Install deps:
pip install -r vm-migration-tool/requirements.txt - Run app:
python vm-migration-tool/main.py - In the UI:
- Enter Proxmox and ESXi credentials.
- Scan ESXi and choose a VM.
- Pick Proxmox storage and options (UEFI/OVMF if original VM uses UEFI).
- Start migration and monitor progress.
Security & Logging
- Password sanitization in application logs; sensitive values are redacted.
- ESXi password is written to
/root/esxi_pass.txton Proxmox (restricted permissions) and used viasshpass -f. - Progress entries are also written to
vm-migration-tool/logs/progress-*.log. - Project files exclude secrets by design.
Usage Notes
- Enable UEFI/OVMF only if the original VM uses UEFI/EFI firmware; keep BIOS legacy otherwise.
- After a migration completes, you can select another VM and repeat without restarting the app.
Roadmap
- See ROADMAP.en.md for planned features (multi-VM concurrent migration, improved transfer resilience, CI, and more).
Operational Instructions (Options & Migration)
- Uncheck
Dry-run (show plan, do not execute)to actually run the migration. - Check
Convert with qemu-imgto convert VMDK to the target format (default:qcow2). - Select a Proxmox storage that supports
imagescontent (in Proxmox: Datacenter → Storage → your storage should include "Disk image").- If the storage does NOT support
images, the app will warn and block the import.
- If the storage does NOT support
- Field
Destination file (on Proxmox):- If the storage is mounted under
/mnt/pve/<storage>, the suggested path is/mnt/pve/<storage>/tmp/<vmName>. - For non-mounted storages (e.g.,
local-lvm), the fallback is/root/tmp/<vmName>. - Use
Browse…to set a custom path if needed.
- If the storage is mounted under
- UEFI/OVMF: enable only if the original VM uses UEFI/EFI firmware; keep disabled for legacy BIOS.
- Press
Prepare/Run Migrationand follow the progress bars (copy and import/conversion).
Desktop UI Screenshots
