Bump PostgreSQL target from 16 to 17 in discourse-install.sh and make pg_hba.conf lookup dynamic (uses find) instead of a hardcoded path, ensuring compatibility with systems where the data directory path differs. Also add EMAIL_SERVERS_WITH_PRIORITY and POSTFIX_SERVER entries to the SimpleLogin .env to configure local mail delivery (set to localhost).
Update script and license links to use GitHub raw URLs. Replace git.community-scripts.org references with https://raw.githubusercontent.com/... for script fetching and https://github.com/... for the LICENSE link in tools/pve/cron-update-lxcs.sh and tools/pve/update-lxcs-cron.sh so the curl examples and REPO_URL point to GitHub-hosted raw content.
Change VM app deployer to run CT install scripts during image customization (virt-customize --run) instead of via a first-boot systemd service. Updated docs to reflect live installation, new update workflow (curl the ct/<app>.sh inside the VM), and new troubleshooting/reinstall guidance. misc/vm-app.func now injects function libs, runs a temporary wrapper inside virt-customize (with logging and error handling), removes the first-boot service and update wrapper injection, and updates summary/status messages to mark apps as pre-installed.
- 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
Switch the Go build invocation to target the cmd/gluetun package directory (./cmd/gluetun/) in both ct/gluetun.sh and install/gluetun-install.sh, and ensure modules are downloaded during install (go mod download). In the installer, create /opt/gluetun-data and add a symlink /gluetun -> /opt/gluetun-data, update STORAGE/PUBLICIP/PORT file paths to use /gluetun, add PPROF_ENABLED=no to the default .env, and add UnsetEnvironment=USER to the systemd unit to avoid inheriting the USER environment. These changes standardize build behavior and relocate runtime data to a consistent /gluetun path.