Add ANSI VM migration center, Proxmox cold copy, and compiled vmmigration binary #1

Merged
antonismor merged 24 commits from feature/proxmox-cold-copy-wizard into main 2026-09-25 14:00:39 -04:00
antonismor commented 2026-09-25 13:40:14 -04:00 (Migrated from github.com)

Adds the first real interactive VM Migration Center workflow plus compiled binary packaging.

Operator experience

  • Run sudo vmmigration.
  • Full ANSI/color interface.
  • Branding shown in installer and application:
    Design and Development by : antonios.mortos@oultook.com
  • Proxmox → Proxmox cold copy uses live source/destination discovery and no migration CLI parameters.

Installer

  • install.sh detects supported package-manager families automatically.
  • Installs OpenSSH, sshpass, qemu-img/qemu-utils, rsync, NFS/CIFS/iSCSI tools, compression utilities and build requirements.
  • Installs VMware govc connector automatically when possible.
  • Builds a Nuitka one-file executable when a prebuilt binary is not present.
  • Installs only the executable under /opt/vmmigration; Python source is not copied into the installed program directory.
  • Creates /usr/local/bin/vmmigration and retains lbm-vdrc as a compatibility alias.

Binary build

  • Added vmmigration.py compiled entry point.
  • Added build-binary.sh.
  • Added GitHub Actions standalone Linux x86_64 binary build, smoke test, SHA256 generation and artifact upload.

Migration safety

  • Source VM must already be powered off.
  • Source VM is never deleted or automatically started/stopped.
  • Destination VM is restored but not automatically started.
  • Destination onboot=0 is forced.
  • SHA256 is verified across transfer stages.
  • Bridge mismatches and passthrough/TPM/EFI/custom-QEMU conditions are surfaced before first boot.
  • Passwords are not written into migration receipts or generated command arguments.

Source-code visibility

Nuitka protects the deployed installation from plain-source disclosure, but a public GitHub repository still exposes source/history. A true binary-only public distribution requires the authoritative source repository to be private and only compiled releases/installers to be public.

Keep this PR unmerged until a non-critical VM has completed an end-to-end lab migration test.

Adds the first real interactive VM Migration Center workflow plus compiled binary packaging. ### Operator experience - Run `sudo vmmigration`. - Full ANSI/color interface. - Branding shown in installer and application: `Design and Development by : antonios.mortos@oultook.com` - Proxmox → Proxmox cold copy uses live source/destination discovery and no migration CLI parameters. ### Installer - `install.sh` detects supported package-manager families automatically. - Installs OpenSSH, sshpass, qemu-img/qemu-utils, rsync, NFS/CIFS/iSCSI tools, compression utilities and build requirements. - Installs VMware `govc` connector automatically when possible. - Builds a Nuitka one-file executable when a prebuilt binary is not present. - Installs only the executable under `/opt/vmmigration`; Python source is not copied into the installed program directory. - Creates `/usr/local/bin/vmmigration` and retains `lbm-vdrc` as a compatibility alias. ### Binary build - Added `vmmigration.py` compiled entry point. - Added `build-binary.sh`. - Added GitHub Actions standalone Linux x86_64 binary build, smoke test, SHA256 generation and artifact upload. ### Migration safety - Source VM must already be powered off. - Source VM is never deleted or automatically started/stopped. - Destination VM is restored but not automatically started. - Destination `onboot=0` is forced. - SHA256 is verified across transfer stages. - Bridge mismatches and passthrough/TPM/EFI/custom-QEMU conditions are surfaced before first boot. - Passwords are not written into migration receipts or generated command arguments. ### Source-code visibility Nuitka protects the deployed installation from plain-source disclosure, but a public GitHub repository still exposes source/history. A true binary-only public distribution requires the authoritative source repository to be private and only compiled releases/installers to be public. Keep this PR unmerged until a non-critical VM has completed an end-to-end lab migration test.
Sign in to join this conversation.
No description provided.