- Update .env.example with latest environment variables - Enhance homepage dashboard configurations and templates - Improve Traefik routing templates for external hosts - Update docker-compose files for dashboards and infrastructure - Add comprehensive TUI documentation and PRD - Add new Homelab-Audit documentation - Remove outdated release notes
397 lines
14 KiB
Markdown
397 lines
14 KiB
Markdown
# EZ-Homelab TUI Deployment Script - Product Requirements Document
|
|
|
|
## Executive Summary
|
|
|
|
The EZ-Homelab TUI Deployment Script is a modern, user-friendly replacement for the existing complex bash deployment script. It provides an interactive terminal user interface (TUI) for deploying and managing a comprehensive homelab infrastructure using Docker Compose stacks, with support for automated deployment via configuration files.
|
|
|
|
## Objectives
|
|
|
|
### Primary Objectives
|
|
- Replace the complex 1000+ line bash script with a maintainable Python TUI application
|
|
- Provide three distinct deployment scenarios: Single Server Full, Core Server, and Remote Server
|
|
- Enable both interactive and fully automated deployment workflows
|
|
- Handle complete system setup including Docker and NVIDIA GPU configuration
|
|
- Ensure maximum user convenience by minimizing required logouts/reboots
|
|
|
|
### Secondary Objectives
|
|
- Improve user experience with modern TUI design using Rich + Questionary
|
|
- Provide flexible service selection and configuration options
|
|
- Support save-only mode for configuration preparation
|
|
- Include comprehensive validation and error handling
|
|
- Maintain backward compatibility with existing .env configurations
|
|
|
|
## Target Users
|
|
|
|
### Primary Users
|
|
- **Homelab Enthusiasts**: Users setting up personal server infrastructure
|
|
- **Self-Hosters**: Individuals deploying media servers, productivity tools, and monitoring
|
|
- **System Administrators**: Those managing small-scale server deployments
|
|
|
|
### User Personas
|
|
1. **Alex the Homelab Beginner**: New to self-hosting, needs guided setup with sensible defaults
|
|
2. **Jordan the Power User**: Experienced user who wants fine-grained control over service selection
|
|
3. **Sam the DevOps Engineer**: Needs automated deployment for multiple servers, prefers configuration files
|
|
|
|
### Technical Requirements
|
|
- Ubuntu/Debian Linux systems (primary target)
|
|
- Basic command-line familiarity
|
|
- Internet access for package downloads
|
|
- Administrative privileges (sudo access)
|
|
|
|
## Functional Requirements
|
|
|
|
### Core Features
|
|
|
|
#### 1. Deployment Scenarios
|
|
**FR-DEP-001**: Support three deployment scenarios
|
|
- Single Server Full: Deploy all core, infrastructure, and dashboard services
|
|
- Core Server: Deploy only core infrastructure and dashboards
|
|
- Remote Server: Deploy infrastructure and dashboards without core services
|
|
|
|
**FR-DEP-002**: Automated scenario selection based on user choice
|
|
- Pre-select appropriate services for each scenario
|
|
- Allow user customization within scenario constraints
|
|
|
|
#### 2. Configuration Management
|
|
**FR-CONF-001**: Load existing .env configuration
|
|
- Parse existing .env file on startup
|
|
- Validate configuration completeness
|
|
- Pre-populate TUI defaults with existing values
|
|
|
|
**FR-CONF-002**: Support deployment configuration section in .env
|
|
- Parse [DEPLOYMENT] section with service selections
|
|
- Enable fully automated deployment with --yes flag
|
|
- Validate deployment configuration completeness
|
|
|
|
**FR-CONF-003**: Interactive configuration collection
|
|
- Skip questions for valid existing values
|
|
- Provide sensible defaults for all settings
|
|
- Validate user input in real-time
|
|
|
|
#### 3. System Setup & Prerequisites
|
|
**FR-SYS-001**: Pre-flight system checks
|
|
- OS compatibility (Ubuntu/Debian)
|
|
- Available disk space (>10GB)
|
|
- Internet connectivity
|
|
- System architecture validation
|
|
|
|
**FR-SYS-002**: Docker installation and configuration
|
|
- Detect existing Docker installation
|
|
- Install Docker if missing
|
|
- Add user to docker group
|
|
- Avoid requiring logout through smart command execution
|
|
|
|
**FR-SYS-003**: NVIDIA GPU support
|
|
- Detect NVIDIA GPU presence
|
|
- Install official NVIDIA drivers using official installers
|
|
- Install NVIDIA Container Toolkit
|
|
- Handle reboot requirements intelligently
|
|
|
|
**FR-SYS-004**: Dependency management
|
|
- Install required system packages
|
|
- Install Python dependencies (Rich, Questionary, python-dotenv)
|
|
- Update system packages as needed
|
|
|
|
#### 4. Service Selection & Customization
|
|
**FR-SVC-001**: Core services selection
|
|
- Display scenario-appropriate core services
|
|
- Allow include/exclude for flexibility
|
|
- Enforce minimum requirements for each scenario
|
|
|
|
**FR-SVC-002**: Infrastructure services selection
|
|
- Provide checkbox interface for all infrastructure services
|
|
- Include descriptions and default selections
|
|
- Allow complete customization
|
|
|
|
**FR-SVC-003**: Additional stacks preparation
|
|
- Multi-select interface for optional service stacks
|
|
- Copy selected stacks to /opt/stacks/ without starting
|
|
- Enable later deployment via Dockge
|
|
|
|
#### 5. User Interface & Experience
|
|
**FR-UI-001**: Interactive TUI design
|
|
- Use Rich + Questionary for modern terminal interface
|
|
- Provide clear, descriptive prompts
|
|
- Include help text and validation messages
|
|
|
|
**FR-UI-002**: Conditional question flow
|
|
- Show questions only when relevant
|
|
- Skip questions with valid existing values
|
|
- Provide logical question progression
|
|
|
|
**FR-UI-003**: Configuration summary and confirmation
|
|
- Display formatted summary of all settings
|
|
- Allow review before proceeding
|
|
- Provide options to save, change, or exit
|
|
|
|
#### 6. Deployment Execution
|
|
**FR-DEP-003**: One-step deployment process
|
|
- Handle all installation and deployment in single script run
|
|
- Minimize required logouts/reboots
|
|
- Provide clear progress indication
|
|
|
|
**FR-DEP-004**: Smart reboot handling
|
|
- Detect what requires reboot vs logout vs nothing
|
|
- Perform reboot-requiring actions last
|
|
- Support both automatic and manual reboot options
|
|
|
|
**FR-DEP-005**: Error handling and recovery
|
|
- Provide clear error messages
|
|
- Allow recovery from partial failures
|
|
- Maintain configuration state across retries
|
|
|
|
### Command Line Interface
|
|
|
|
#### Launch Options
|
|
**FR-CLI-001**: Support multiple launch modes
|
|
- Interactive mode (default): Full TUI experience
|
|
- Automated mode (--yes): Use complete .env configuration
|
|
- Save-only mode (--save-only): Collect configuration without deploying
|
|
- Help mode (--help): Display usage information
|
|
|
|
#### Configuration Output
|
|
**FR-CLI-002**: Flexible configuration saving
|
|
- Save to .env by default
|
|
- Allow custom filename specification
|
|
- Preserve existing .env structure and comments
|
|
|
|
## Non-Functional Requirements
|
|
|
|
### Performance
|
|
**NFR-PERF-001**: Fast startup and validation
|
|
- Complete pre-flight checks within 30 seconds
|
|
- Validate .env file parsing within 5 seconds
|
|
- Provide responsive TUI interaction
|
|
|
|
**NFR-PERF-002**: Efficient deployment
|
|
- Complete full deployment within 15-30 minutes
|
|
- Provide real-time progress indication
|
|
- Handle large downloads gracefully
|
|
|
|
### Reliability
|
|
**NFR-REL-001**: Robust error handling
|
|
- Graceful handling of network failures
|
|
- Clear error messages with recovery suggestions
|
|
- Maintain system stability during installation
|
|
|
|
**NFR-REL-002**: Configuration validation
|
|
- Validate all user inputs before proceeding
|
|
- Check for conflicting configurations
|
|
- Prevent deployment with invalid settings
|
|
|
|
### Usability
|
|
**NFR-USAB-001**: Intuitive interface design
|
|
- Clear, descriptive prompts and help text
|
|
- Logical question flow and grouping
|
|
- Consistent terminology and formatting
|
|
|
|
**NFR-USAB-002**: Accessibility considerations
|
|
- Support keyboard navigation
|
|
- Provide clear visual feedback
|
|
- Include progress indicators for long operations
|
|
|
|
### Security
|
|
**NFR-SEC-001**: Secure credential handling
|
|
- Mask password inputs in TUI
|
|
- Store credentials securely in .env
|
|
- Validate certificate and token formats
|
|
|
|
**NFR-SEC-002**: Safe system modifications
|
|
- Require explicit user confirmation for system changes
|
|
- Provide clear warnings for potentially disruptive actions
|
|
- Maintain secure file permissions
|
|
|
|
### Compatibility
|
|
**NFR-COMP-001**: OS compatibility
|
|
- Primary support for Ubuntu 20.04+ and Debian 11+
|
|
- Graceful handling of different package managers
|
|
- Architecture support for amd64 and arm64
|
|
|
|
**NFR-COMP-002**: Backward compatibility
|
|
- Read existing .env files without modification
|
|
- Support legacy configuration formats
|
|
- Provide migration path for old configurations
|
|
|
|
## Technical Requirements
|
|
|
|
### Technology Stack
|
|
**TR-TECH-001**: Core technologies
|
|
- Python 3.8+ as runtime environment
|
|
- Rich library for terminal formatting
|
|
- Questionary library for interactive prompts
|
|
- python-dotenv for configuration parsing
|
|
|
|
**TR-TECH-002**: System integration
|
|
- Docker and Docker Compose for container management
|
|
- systemd for service management
|
|
- apt/dpkg for package management
|
|
- Official NVIDIA installation tools
|
|
|
|
### Architecture
|
|
**TR-ARCH-001**: Modular design
|
|
- Separate concerns for UI, validation, and deployment
|
|
- Configurable question flow engine
|
|
- Pluggable deployment modules
|
|
|
|
**TR-ARCH-002**: State management
|
|
- Maintain configuration state throughout TUI flow
|
|
- Support save/restore of partial configurations
|
|
- Handle interruption and resumption gracefully
|
|
|
|
### Dependencies
|
|
**TR-DEPS-001**: Python packages
|
|
- rich>=12.0.0
|
|
- questionary>=1.10.0
|
|
- python-dotenv>=0.19.0
|
|
- pyyaml>=6.0 (for configuration parsing)
|
|
|
|
**TR-DEPS-002**: System packages
|
|
- curl, wget, git (for downloads and version control)
|
|
- htop, nano, vim (system monitoring and editing)
|
|
- ufw, fail2ban (security)
|
|
- unattended-upgrades, apt-listchanges (system maintenance)
|
|
- sshpass (for multi-server setup)
|
|
|
|
## User Experience Requirements
|
|
|
|
### Onboarding Flow
|
|
**UX-ONB-001**: First-time user experience
|
|
- Clear welcome message and overview
|
|
- Guided setup with sensible defaults
|
|
- Help text for each question
|
|
|
|
**UX-ONB-002**: Returning user experience
|
|
- Load existing configuration automatically
|
|
- Skip redundant questions
|
|
- Provide quick confirmation for known setups
|
|
|
|
### Interaction Patterns
|
|
**UX-INT-001**: Question flow optimization
|
|
- Group related questions together
|
|
- Provide progress indication
|
|
- Allow backtracking and editing
|
|
|
|
**UX-INT-002**: Feedback and validation
|
|
- Real-time input validation
|
|
- Clear error messages with suggestions
|
|
- Success confirmations for completed steps
|
|
|
|
### Error Recovery
|
|
**UX-ERR-001**: Graceful error handling
|
|
- Clear error descriptions
|
|
- Suggested recovery actions
|
|
- Option to retry or modify configuration
|
|
|
|
**UX-ERR-002**: Partial failure recovery
|
|
- Save progress on interruption
|
|
- Allow resumption from last completed step
|
|
- Provide rollback options where possible
|
|
|
|
## Success Criteria
|
|
|
|
### Functional Completeness
|
|
- [ ] All three deployment scenarios work correctly
|
|
- [ ] Automated deployment with --yes flag functions
|
|
- [ ] Save-only mode preserves configuration
|
|
- [ ] Docker and NVIDIA installation work reliably
|
|
- [ ] Service selection and customization work as specified
|
|
|
|
### User Experience
|
|
- [ ] TUI is intuitive and responsive
|
|
- [ ] Configuration validation prevents errors
|
|
- [ ] Error messages are helpful and actionable
|
|
- [ ] Deployment completes without requiring logout/reboot (except when absolutely necessary)
|
|
|
|
### Technical Quality
|
|
- [ ] Code is well-structured and maintainable
|
|
- [ ] Comprehensive error handling implemented
|
|
- [ ] Configuration parsing is robust
|
|
- [ ] System integration works reliably across Ubuntu/Debian versions
|
|
|
|
### Performance Targets
|
|
- [ ] Pre-flight checks complete within 30 seconds
|
|
- [ ] TUI startup within 5 seconds
|
|
- [ ] Full deployment completes within 30 minutes
|
|
- [ ] Memory usage remains under 200MB during execution
|
|
|
|
## Implementation Plan
|
|
|
|
### Phase 1: Core Infrastructure (Week 1-2)
|
|
- Set up Python project structure
|
|
- Implement basic TUI framework with Rich + Questionary
|
|
- Create configuration parsing and validation
|
|
- Implement pre-flight system checks
|
|
|
|
### Phase 2: System Setup (Week 3-4)
|
|
- Implement Docker installation and configuration
|
|
- Add NVIDIA GPU detection and official driver installation
|
|
- Create dependency management system
|
|
- Implement smart reboot/logout handling
|
|
|
|
### Phase 3: Configuration Management (Week 5-6)
|
|
- Build dynamic question flow engine
|
|
- Implement .env parsing and [DEPLOYMENT] section support
|
|
- Create configuration validation system
|
|
- Add save-only functionality
|
|
|
|
### Phase 4: Deployment Logic (Week 7-8)
|
|
- Implement deployment scenario logic
|
|
- Create service selection and preparation system
|
|
- Build deployment execution engine
|
|
- Add progress indication and error handling
|
|
|
|
### Phase 5: Testing & Polish (Week 9-10)
|
|
- Comprehensive testing across Ubuntu/Debian versions
|
|
- User experience testing and refinement
|
|
- Documentation and help system
|
|
- Performance optimization
|
|
|
|
## Dependencies & Constraints
|
|
|
|
### External Dependencies
|
|
- **NVIDIA Official Installers**: Must use official NVIDIA installation methods
|
|
- **Docker Official Installation**: Use official Docker installation scripts
|
|
- **Ubuntu/Debian Package Repositories**: Rely on standard package sources
|
|
|
|
### Technical Constraints
|
|
- **Python Version**: Minimum Python 3.8 required for modern type hints
|
|
- **Terminal Compatibility**: Must work in standard Linux terminals
|
|
- **Network Requirements**: Internet access required for downloads
|
|
- **Privilege Requirements**: sudo access required for system modifications
|
|
|
|
### Business Constraints
|
|
- **Open Source**: Must remain free and open source
|
|
- **Backward Compatibility**: Should not break existing .env files
|
|
- **Documentation**: Comprehensive documentation required
|
|
- **Community Support**: Should be maintainable by community contributors
|
|
|
|
## Risk Assessment
|
|
|
|
### High Risk Items
|
|
- **NVIDIA Installation**: Complex driver installation across different GPU models
|
|
- **Reboot Handling**: Ensuring one-step installation without logout requirements
|
|
- **Configuration Validation**: Complex validation logic for interdependent settings
|
|
|
|
### Mitigation Strategies
|
|
- **Testing**: Extensive testing on multiple hardware configurations
|
|
- **Fallback Options**: Provide manual installation instructions as backup
|
|
- **Modular Design**: Allow components to be disabled/enabled independently
|
|
- **User Communication**: Clear warnings and alternative options for complex scenarios
|
|
|
|
## Future Enhancements
|
|
|
|
### Planned Features
|
|
- Support for additional Linux distributions
|
|
- Web-based configuration interface
|
|
- Integration with configuration management tools
|
|
- Advanced deployment templates and presets
|
|
|
|
### Maintenance Considerations
|
|
- Regular updates for new NVIDIA driver versions
|
|
- Compatibility testing with new Ubuntu/Debian releases
|
|
- Community contribution guidelines and testing frameworks
|
|
|
|
---
|
|
|
|
*This PRD serves as the authoritative specification for the EZ-Homelab TUI Deployment Script. All development decisions should reference this document to ensure alignment with user requirements and technical constraints.*</content>
|
|
<parameter name="filePath">c:\Users\kelin\Documents\Apps\GitHub\EZ-Homelab\EZ-Homelab TUI-PRD.md |