From d6bd23eeb3421aa730c4d0e19cc55927ea6e05ed Mon Sep 17 00:00:00 2001 From: "Joseph.Rawlings" Date: Sun, 25 Jan 2026 12:42:54 -0500 Subject: [PATCH] fix: always allocate VMID as max+1 to prevent reuse of deleted server VMIDs --- extensions/Servers/Proxmox/Proxmox.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/extensions/Servers/Proxmox/Proxmox.php b/extensions/Servers/Proxmox/Proxmox.php index 380a39d9a..2f568ff1b 100644 --- a/extensions/Servers/Proxmox/Proxmox.php +++ b/extensions/Servers/Proxmox/Proxmox.php @@ -830,7 +830,16 @@ class Proxmox extends ClassServer $ipv6 = $this->getAvailableIps($node, $settings['ipv6'], 'ipv6'); } - $vm_id = $this->request('/cluster/nextid')->json()['data']; + // Get the next VMID by finding the maximum existing VMID and adding 1 + // This ensures we never reuse old VMIDs from deleted servers + $clusterResources = $this->request('/cluster/resources', 'get', ['type' => 'vm'])->json()['data'] ?? []; + $maxVmId = 99; // Default minimum VMID in Proxmox is 100 + foreach ($clusterResources as $resource) { + if (isset($resource['vmid']) && $resource['vmid'] > $maxVmId) { + $maxVmId = (int) $resource['vmid']; + } + } + $vm_id = $maxVmId + 1; $password = Str::password(16);