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.
Find a file
Alessio Orpellini 203e8466ba
update - correction error
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
2026-04-22 11:30:49 +02:00
config Web UI for backup/restore/Live Cross Migration 2026-02-24 18:16:56 +01:00
core update - correction error 2026-04-22 11:30:49 +02:00
docs Web UI for backup/restore/Live Cross Migration 2026-02-24 18:16:56 +01:00
logs Add files via upload 2025-10-09 18:11:21 +02:00
projects Add files via upload 2025-10-09 18:11:21 +02:00
ui Update 2026-04-21 12:45:27 +02:00
CHANGELOG.md Add files via upload 2025-10-09 18:04:33 +02:00
LICENSE Web UI for backup/restore/Live Cross Migration 2026-02-24 18:16:56 +01:00
main.py Web UI for backup/restore/Live Cross Migration 2026-02-24 18:16:56 +01:00
README.it.md Add files via upload 2026-02-24 18:29:54 +01:00
README.md Add files via upload 2026-02-24 18:29:54 +01:00
requirements.txt Web UI for backup/restore/Live Cross Migration 2026-02-24 18:16:56 +01:00
ROADMAP.en.md Add files via upload 2025-10-09 18:15:48 +02:00
ROADMAP.md Add files via upload 2025-10-09 18:04:33 +02:00

View on GitHub License: MIT Python Platform

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.py
    • vm-migration-tool/ui/web_app.py
    • vm-migration-tool/core/*
    • vm-migration-tool/requirements.txt
    • Optional for persistence: vm-migration-tool/app.sqlite3, vm-migration-tool/repository/

Web UI Screenshots

  1. Home Home
  2. Resources • Storage Storage
  3. Jobs Job
  4. Resources • Virtualizers (list) Virtualizers List
  5. Resources • Virtualizers (add) Add Virtualizer
  6. Backup Backup
  7. Cross-platform restore Restore Cross-platform
  8. Live cross migration 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 sshpass using a password file on Proxmox (no plaintext in commands).
  • Conversion and import to Proxmox storage (images, dir, etc.).
  • Optional UEFI/OVMF config (q35, ovmf, efidisk0 with 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.txt on Proxmox (restricted permissions) and used via sshpass -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-img to convert VMDK to the target format (default: qcow2).
  • Select a Proxmox storage that supports images content (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.
  • 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.
  • UEFI/OVMF: enable only if the original VM uses UEFI/EFI firmware; keep disabled for legacy BIOS.
  • Press Prepare/Run Migration and follow the progress bars (copy and import/conversion).

Desktop UI Screenshots

  1. Project Creation Project Creation
  2. Connection and Scan Connection and Scan
  3. Options and Migration Options and Migration