4.3 KiB
EZ-Homelab Script Refactoring Tasks
Overview
This document outlines the updated plan for refactoring ez-homelab.sh based on user requirements. Tasks are prioritized by impact and dependencies. All files are in the same repo. Dry-run output should be user-friendly.
Task Categories
1. Menu and Workflow Updates (High Priority)
-
1.1: Create
install-prerequisites.sh
Extractsystem_setup()into a standalone script that must run as root/sudo. Update Option 1 to launch it with sudo if needed.
Effort: 2-3 hours. Files: Newinstall-prerequisites.sh, modifyez-homelab.sh. -
1.2: Update Menu Option 3 Prompts
For Option 3, check if default values are valid. If yes, prompt to use defaults or not. If not, prompt for all REQUIRED_VARS to ensure easy deployment. Reword prompts to clarify REMOTE_SERVER_* vars are for core server cert copying.
Effort: 1-2 hours. Files:ez-homelab.sh(validate_and_prompt_variables(),prompt_for_variable()). -
1.3: Implement Menu Option 4 (NVIDIA Installation)
Usenvidia-detectto determine GPU and official installer. Install NVIDIA drivers and Container Toolkit. Handle no-GPU gracefully.
Effort: 3-4 hours. Files:ez-homelab.shorinstall-prerequisites.sh.
2. Bug Fixes (High Priority)
-
2.1: Remove Hardcoded Values
Replace "kelin", "kelinreij", etc., with variables like${DOMAIN},${SERVER_IP}in completion messages and examples.
Effort: 1 hour. Files:ez-homelab.sh. -
2.2: Fix HOMEPAGE_ALLOWED_HOSTS
Instead of hardcoding port (3003), extract the proper port from the Homepage compose file. Ensure line isHOMEPAGE_ALLOWED_HOSTS="homepage.${DOMAIN},${SERVER_IP}:<extracted_port>".
Effort: 30 minutes. Files:ez-homelab.sh(save_env_file()).
3. New Features and Enhancements (Medium Priority)
-
3.1: Add Argument Parsing
Implement CLI args (e.g.,--deploy-core,--dry-run,--verbose) usinggetoptsto bypass menu.
Effort: 2-3 hours. Files:ez-homelab.sh(main()). -
3.2: Add Dry-Run Mode
--dry-runsimulates deployment: validate configs, show actions, log verbosely without executing. Output user-friendly summaries.
Effort: 2 hours. Files:ez-homelab.sh(perform_deployment()). -
3.3: Enhance Console Logging for Verbose Mode
Updatelog_*functions to output to console whenVERBOSE=true.
Effort: 1 hour. Files:ez-homelab.sh. -
3.4: Improve Error Handling
Removeset -e; log errors but continue where possible. Use||for non-critical failures.
Effort: 2 hours. Files:ez-homelab.sh.
4. TLS and Multi-Server Logic Refinements (Medium Priority)
- 4.1: Clarify Variable Usage
Ensure prompts distinguish:SERVER_IPfor local machine,REMOTE_SERVER_*for core server.${DOMAIN}prompted even for additional servers (needed for configs).
Effort: 1-2 hours. Files:ez-homelab.sh.
5. Function Organization and Code Quality (Low Priority)
-
5.1: Audit and Improve Placeholder/Env Functions
Renamereplace_env_placeholders()tolocalize_yml_file()andenhance_placeholder_replacement()tolocalize_deployment(). Add error aggregation in bulk function. Make single-file function robust (permissions, backups only for existing targets, no repo modifications). Add post-replacement validation for Traefik labels. Handle special characters in values (passwords, hashes).
Effort: 2-3 hours. Files:ez-homelab.sh. -
5.2: Modularize Code with More Functions
Breakmain()intoparse_args(),handle_menu_choice(),prepare_deployment(). Extract repeated logic (env copying, dir creation).
Effort: 3-4 hours. Files:ez-homelab.sh. -
5.3: Fix Deployment Flow
Streamlineperform_deployment(): consistent step numbering, better recovery, dry-run integration.
Effort: 1 hour. Files:ez-homelab.sh.
Implementation Order
- Start with Bug Fixes (2.1-2.2) and Menu Option 1 (1.1).
- Then New Features (3.1-3.4) and Menu Options (1.2-1.3).
- Refinements (4.1, 5.1-5.3).
Notes
- Test after each task: interactive menu, args, dry-run, multi-server.
- Dependencies: NVIDIA tasks require
nvidia-detect; dry-run depends on args. - Risks: Error handling changes may mask issues; validate thoroughly.