π v0.6.0 β Unified Installation Architecture
This release introduces a complete refactoring of the installation system, consolidating separate installers into a unified, intelligent installer with automatic detection and interactive workflows.
It focuses on code simplification, user experience, and installation reliability.
π§ Installation System
/install.sh (Completely Refactored)
Added
- π Complete refactoring into unified installer (replaces separate
install.shandnew-install.sh) - π€ Interactive installation mode with automatic detection of existing installations
- π Menu-driven workflow:
[1] Update(preserves data)[2] Reinstall(fresh)[3] Cancel - π Flag
--reinstallto force complete reinstallation bypassing interactive menu - π Flag
--verbosefor detailed output during installation operations - βοΈ Eliminated ~500 lines of duplicate code through consolidation
- β Enhanced backup verification with file count comparison before removal
- π Verification of
.gitdirectory existence after clone to ensure completeness - π― Single code path eliminates synchronization issues between separate installers
- βοΈ Conditional behavior based on
IS_UPDATEflag for precise control flow - β±οΈ Improved timing for dev branch confirmation (after user selects action)
- πΏ Branch selection support: add
-- devparameter to install development branch - π Dynamic GitHub URL generation based on selected branch
- β οΈ User confirmation prompt when installing dev branch (with cancel option)
- π Remote branch existence verification as first operation (before system checks/dependencies)
- π·οΈ Branch verification after git clone with mismatch warning
- πΊ Branch display in installation banner with dev warning
Fixes
- π Branch existence check now uses
grep -q "refs/heads/$branch"for reliable validation - π« Prevents false positives when checking if remote branch exists
- π‘οΈ Consistent error handling and logging across all installation scenarios
- π§Ή Proper cleanup of temporary artifacts on failure or cancellation
- π§ Modified
git cloneto use-b "$INSTALL_BRANCH"flag - π Updated all hardcoded
/main/URLs to use${INSTALL_BRANCH}variable
Behavior
- π― Default mode: Detects existing installation and presents interactive menu
- π With
--reinstall: Forces complete reinstallation without interactive prompts (except REMOVE-EVERYTHING) - π With
--verbose: Shows detailed output from apt, git, and tar operations - πΏ Full branch selection support (main/dev) works in all modes
- πΎ Automatic preservation of user data during updates: env, config, log, backup, lock directories
Deprecation Notice
- β οΈ
new-install.shis now deprecated and replaced byinstall.sh --reinstall - π The refactored
install.shnow handles both update and reinstall scenarios - π’ Users calling
new-install.shshould migrate toinstall.sh --reinstall
Migration Path for new-install.sh users
- π Replace
new-install.shcalls βinstall.sh --reinstall - πΏ Branch selection unchanged:
-- devparameter works with all modes - β¬οΈ Old
install.shbehavior (update only) β Newinstall.shdefault behavior (auto-detect + interactive menu) - π Old
new-install.shbehavior (forced reinstall) β Newinstall.sh --reinstallbehavior
β Overall Improvements
- π― Single, unified installation system eliminating code duplication
- π€ Intelligent auto-detection of existing installations with interactive workflows
- πΏ Full branch selection support (main/dev) across all installation modes
- π Enhanced validation and verification at every installation step
- π Improved user experience with clear menu-driven choices
- π‘οΈ Better error handling and recovery mechanisms
- π§Ή Cleaner codebase with ~500 fewer lines of duplicate code
β¨ Result: A streamlined, reliable installation experience with intelligent detection, safer upgrades, and flexible branch supportβall in a single, maintainable codebase.
Compatibility: PVE and PBS
Installation: bash -c "$(curl -fsSL https://raw.githubusercontent.com/tis24dev/proxmox-backup/main/install.sh)"
Dev Branch: bash -c "$(curl -fsSL https://raw.githubusercontent.com/tis24dev/proxmox-backup/main/install.sh)" -- dev