🏗️ Architecture Overhaul
This is a major release – PegaProx has been completely restructured from a single 42,000-line monolith into a clean, modular Python package.
- Code Split –
pegaprox/package with 8-layer architecture (constants → models → core → utils → api → background → app) - Frontend Split – Source files in
web/src/*.jswith dedicated build system - Archive-Based Updates – Automatic updates via GitHub archive download (no manual release files needed)
- Production Dockerfile –
python:3.12-slim, non-root user, healthcheck, persistent volumes
🔀 ESXi Migration
- ESXi Import Wizard – Migrate VMs from ESXi hosts directly to Proxmox
- Near-Zero Downtime – Transfer running VMs with minimal interruption (recommended: max. 1 VM at a time)
- Offline Migration – Shut down and transfer for maximum reliability
- SSH Required – ESXi host must have SSH enabled for migration
🔐 Enterprise Security
- AES-256-GCM Encryption – All stored credentials encrypted at rest
- IP Whitelisting / Blacklisting – Restrict access by IP address or CIDR range
- Rate Limiting – Protection on all API endpoints
- Input Sanitization – Server-side validation and RBAC enforcement
- CORS Hardening – Secure same-origin policy by default
📸 Efficient LVM Snapshots
- Space-Efficient Snapshots – LVM COW snapshots for shared iSCSI SAN storage (saves 85–95% disk space)
- Health Monitoring – Auto-extend at 90%, auto-invalidate at 100% (only snapshot lost, never VM data)
- Full CRUD – Create, list, delete, and rollback efficient snapshots via API and UI
💿 Ceph Management
- Ceph Dashboard – Monitor and manage Ceph storage pools, OSDs, and monitors
- Pool Management – Create, resize, and configure Ceph pools
⚖️ Cross-Cluster Operations
- Cross-Cluster Load Balancing – Distribute workloads across multiple clusters
- Cross-Cluster Replication – Replicate VMs between clusters
🏢 Corporate Layout (Experimental)
- Tree-Based Sidebar – Inventory tree with inline nodes under selected cluster
- Dense Tables – Compact table layout inspired by enterprise management tools
- Toggle – Switch between Modern and Corporate layout in Profile → Appearance
🔁 High Availability & Node Updates
- HA Monitoring – Auto-restart VMs on node failure with configurable timing
- Rolling Node Updates – Update cluster nodes one by one with automatic evacuation
- Scheduled Updates – Configure recurring or one-time update schedules per cluster
🐛 Bug Fixes
- VM Deletion – Sanitize boot order before delete, wait for Proxmox task completion (#79)
- Scheduler Crash –
get_client_ip()now handles missing Flask request context in background threads (#87) - SSH Key Compatibility – Safe fallback for
paramiko.DSSKeyremoval in paramiko 3.x+, added ECDSA support to all SSH paths - CORS Crash – Fixed
flask_corscrash whenorigins=Nonewithsupports_credentials=True - Stale Closures – Fixed React state updates using functional updaters in tab data loading
⚡ Improvements
- Affinity Rules – Now work for LXC containers too, with enforcement flag
- PBS Integration – Proxmox Backup Server management
- Update Script –
rsync→tarfallback for minimal Debian/LXC installs without rsync - ESXi Rename – All user-facing "VMware" text changed to "ESXi" for legal compliance
📋 Updating
cd /opt/PegaProx
curl -O https://raw.githubusercontent.com/PegaProx/project-pegaprox/refs/heads/main/update.sh
chmod +x update.sh
sudo ./update.shOr use the built-in Web UI updater: Settings → Updates → Check for Updates
🙏 Contributors
Thanks to all community contributors for bug reports, PRs, and feedback!