Remove storage type detection and explicit pvesm alloc/qm set steps, and inline EFI/disk/CD configuration into the initial qm create call. Uses unified storage refs (efidisk0 ${STORAGE}:1,efitype=4m,pre-enrolled-keys=0 and scsi0 ${STORAGE}:${DISK_SIZE},${DISK_CACHE}${THIN%,}) and sets the ISO via -cdrom local:iso/${FILENAME}. Adds a success message and streamlines VM creation by eliminating per-storage branching and manual allocation logic.
Remove interactive ISO storage detection/selection and associated ISO_PATH logic. Default to a fixed cache directory (/var/lib/vz/template/iso) via CACHE_DIR and update CACHE_FILE and mkdir usage accordingly. Also update VM configuration to reference the local ISO store (local:iso/<file>) instead of the previously selectable storage. This simplifies ISO handling by avoiding pvesm/whiptail prompts; note this hardcodes the ISO location and removes support for alternate ISO storages.
Introduce an interactive script (vm/cachyos-vm.sh) to create and configure a CachyOS VM on Proxmox. The script validates Proxmox environment and architecture, offers default and advanced settings via whiptail, detects storage/ISO locations, downloads the CachyOS desktop ISO, allocates EFI and main disks, creates and configures the VM (network, CPU, memory, disks, boot order, OVMF), sets a rich VM description, and optionally starts the VM. Also add an ASCII header file (vm/headers/cachyos-vm) used by the script.
Make SSH key provisioning explicit and interactive for cloud-init VMs. Default CLOUDINIT_SSH_KEYS is now empty; new helper functions discover and extract public keys from common host files, count them, and present a whiptail menu (import all host keys, paste one key, specify a file, or none). configure_cloudinit_ssh_keys writes selected keys to a temp file and sets CLOUDINIT_SSH_KEYS accordingly (removing the temp file if empty). setup_cloud_init now only applies --sshkeys when CLOUDINIT_SSH_KEYS is explicitly provided and logs the source, and vm/docker-vm.sh invokes the key selection UI for cloud-init VMs.
Add informative status messages and improve image customization flow: install base packages and Docker during virt-customize, enable Docker service, and configure /etc/docker/daemon.json (sets DOCKER_PREINSTALLED on success). Add finalization messages while setting hostname and SSH config. For images without cloud-init, add systemd drop-ins to enable root autologin on serial-getty@ttyS0 and getty@tty1. Also add a trailing newline to nginx-ui.json.
Collapse duplicated qm set invocation into a single call when attaching the EFI and root disk, removing the duplicate conditional block. Also stop redirecting setup_cloud_init output (remove >/dev/null 2>&1) so Cloud-Init setup logs and errors are visible for debugging. Note: the previous conditional added a --scsi1 "${STORAGE}:cloudinit" only when USE_CLOUD_INIT=yes; that explicit scsi1 assignment is no longer present in this unified call.
Remove Portainer option and related install/helper functions. Add caching of downloaded OS images to /var/lib/vz/template/cache and use a temporary work qcow2 for customization. Try to preinstall qemu-guest-agent and Docker with virt-customize (marking DOCKER_PREINSTALLED on success) and provide a fallback first-boot install-docker.service script when customization fails. Replace import flow to detect qm disk import vs qm importdisk, import the prepared image into storage, resize the disk, attach EFI/root disks, and simplify VM creation steps. Include various UX/cleanup tweaks (spinner handling, storage import flags, status messages and Cloud-Init/SSH handling).
Added installation steps for Piler WebUI and improved config file handling in piler-install.sh. Updated unifi-os-server-vm.sh to always prompt for VMID, refactored machine type selection, improved storage validation, added swap file setup for stability, and increased VM IP detection attempts for reliability.