- Remove unused send_line_to_vm function (replaced by virt-customize)
- Quote $VMID and add guard in cleanup_vmid
- Guard cleanup() against unset TEMP_DIR and quote variable
- Remove unused CLOUDINIT_PASSWORD variable
- Separate local declaration from assignment in get_image_url()
- Add retry loop for apt-get install (matches apt-get update pattern)
- Fix timeout message to match actual loop duration (~5-6 min)
Bug fixes:
- Add ~20 missing fi statements throughout advanced_settings(), check_root(),
arch_check(), ssh_check(), select_os(), start_script(), etc.
- Fix pve_check() missing elif/else/fi structure
- Fix DISK_SIZE unbound variable, initialized before machine type dialog
- Fix error_handler() with ${VMID:-} guard to prevent unbound variable error
Architecture improvement:
- Migrate from send_line_to_vm serial console approach to virt-customize with
a first-boot systemd service, consistent with other VM scripts
- First-boot service handles: clock sync (NTP + HTTP fallback), package
installation, swap setup, and UniFi OS installer execution
New features:
- Root password prompt with confirmation
- SSH public key support
- SSH enabled by default
- Cloud-init password override with user-set password
- Port 11443 readiness check after VM boot
- Elapsed time counter during wait loops
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.
Replaces SSH-based installation with serial console automation using a new send_line_to_vm function. The script now logs in, installs Podman, downloads and installs UniFi OS Server, and retrieves the VM IP address directly via the console. This simplifies the process and removes SSH and sshpass dependencies.
Replaces manual first-boot installer injection with a Cloud-Init user-data configuration for fully automated UniFi OS Server setup. Cloud-Init is now always enabled and required, simplifying image preparation and installation monitoring. Updates messaging and installation flow to reflect Cloud-Init usage and removes legacy non-Cloud-Init support.
Update the logic for detecting errors during base package pre-installation in unifi-os-server-vm.sh by checking for 'error' in the output. Also correct URLs in cloud-init.func to use the correct repository path.