- Move ez-homelab.py to scripts/ folder for better organization - Add working directory detection to ensure script works from any location - Update README-TUI.md with correct script paths - First commit of the new Python TUI for EZ-Homelab deployment
219 lines
5.5 KiB
Markdown
219 lines
5.5 KiB
Markdown
# EZ-Homelab TUI Deployment Script
|
|
|
|
A modern, user-friendly Terminal User Interface (TUI) replacement for the complex bash deployment script. Built with Python, Rich, and Questionary for an intuitive setup experience.
|
|
|
|
## Features
|
|
|
|
- **Interactive TUI**: Beautiful terminal interface with conditional question flow
|
|
- **Automated Deployment**: Use `--yes` flag for hands-free deployment with complete .env file
|
|
- **Save-Only Mode**: Configure without deploying using `--save-only` flag
|
|
- **Smart Validation**: Pre-flight checks ensure system readiness
|
|
- **Three Deployment Scenarios**:
|
|
- Single Server Full: Deploy everything (core + infrastructure + dashboards)
|
|
- Core Server: Deploy only essential services
|
|
- Remote Server: Deploy infrastructure for multi-server setups
|
|
- **Flexible Service Selection**: Choose which services to deploy and prepare for Dockge
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Ubuntu 20.04+ or Debian 11+
|
|
- Python 3.8+
|
|
- Internet connection
|
|
- DuckDNS account (for dynamic DNS)
|
|
|
|
### Installation
|
|
|
|
1. **Clone the repository:**
|
|
```bash
|
|
git clone https://github.com/kelinfoxy/EZ-Homelab.git
|
|
cd EZ-Homelab
|
|
```
|
|
|
|
2. **Install dependencies:**
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
3. **Copy environment template:**
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
### Usage
|
|
|
|
#### Interactive Setup (Recommended)
|
|
```bash
|
|
python scripts/ez-homelab.py
|
|
```
|
|
|
|
#### Automated Deployment
|
|
```bash
|
|
# Complete your .env file first, then:
|
|
python scripts/ez-homelab.py --yes
|
|
```
|
|
|
|
#### Save Configuration Only
|
|
```bash
|
|
python scripts/ez-homelab.py --save-only
|
|
```
|
|
|
|
## Command Line Options
|
|
|
|
- No flags: Interactive TUI mode
|
|
- `--yes` or `-y`: Automated deployment using complete .env file
|
|
- `--save-only`: Answer questions and save .env without deploying
|
|
- `--help`: Show help message
|
|
|
|
## Deployment Scenarios
|
|
|
|
### 1. Single Server Full Deployment
|
|
Deploys everything on one server:
|
|
- Core services (DuckDNS, Traefik, Authelia, Sablier, Dockge)
|
|
- Infrastructure services (Pi-hole, Dozzle, Glances, etc.)
|
|
- Dashboard services (Homepage, Homarr)
|
|
- Prepares all additional stacks for Dockge
|
|
|
|
### 2. Core Server Deployment
|
|
Deploys only essential services:
|
|
- Core services + Dashboards
|
|
- Prepares all additional stacks for Dockge
|
|
- Suitable for dedicated core server in multi-server setup
|
|
|
|
### 3. Remote Server Deployment
|
|
Deploys infrastructure without core services:
|
|
- Infrastructure services + Dashboards + Dockge
|
|
- For application servers in multi-server setup
|
|
- Requires core server to be set up first
|
|
|
|
## Configuration
|
|
|
|
The script uses a comprehensive `.env` file with two main sections:
|
|
|
|
### Required Configuration
|
|
```bash
|
|
# Basic server settings
|
|
PUID=1000
|
|
PGID=1000
|
|
TZ=America/New_York
|
|
SERVER_IP=192.168.1.100
|
|
SERVER_HOSTNAME=debian
|
|
|
|
# Domain settings
|
|
DUCKDNS_SUBDOMAINS=yourdomain
|
|
DUCKDNS_TOKEN=your-token
|
|
|
|
# Admin credentials (for core servers)
|
|
DEFAULT_USER=admin
|
|
DEFAULT_PASSWORD=secure-password
|
|
DEFAULT_EMAIL=admin@yourdomain.duckdns.org
|
|
```
|
|
|
|
### Deployment Configuration (Optional)
|
|
```bash
|
|
# For automated deployment
|
|
DEPLOYMENT_TYPE=SINGLE_SERVER
|
|
AUTO_REBOOT=false
|
|
INSTALL_DOCKER=true
|
|
INSTALL_NVIDIA=true
|
|
|
|
# Service selection
|
|
DEPLOY_DOCKGE=true
|
|
DEPLOY_CORE=true
|
|
DEPLOY_INFRASTRUCTURE=true
|
|
DEPLOY_DASHBOARDS=true
|
|
PREPARE_VPN=true
|
|
PREPARE_MEDIA=true
|
|
# ... etc
|
|
```
|
|
|
|
## System Requirements
|
|
|
|
- **OS**: Ubuntu 20.04+ or Debian 11+
|
|
- **Python**: 3.8 or higher
|
|
- **RAM**: Minimum 4GB (8GB recommended)
|
|
- **Disk**: 10GB free space minimum
|
|
- **Network**: Internet connection for downloads
|
|
|
|
## What Gets Installed
|
|
|
|
### System Setup
|
|
- Docker and Docker Compose
|
|
- NVIDIA drivers and Container Toolkit (if GPU detected)
|
|
- UFW firewall configuration
|
|
- Automatic security updates
|
|
- Required system packages
|
|
|
|
### Docker Networks
|
|
- `traefik-network`: For services behind Traefik
|
|
- `homelab-network`: General service communication
|
|
- `media-network`: Media service isolation
|
|
|
|
### Services Deployed
|
|
Based on your deployment scenario and selections.
|
|
|
|
## Post-Installation
|
|
|
|
After successful deployment:
|
|
|
|
1. **Access Dockge**: `https://dockge.yourdomain.duckdns.org`
|
|
2. **Configure Authelia**: `https://auth.yourdomain.duckdns.org` (if core services deployed)
|
|
3. **Start Additional Services**: Use Dockge web UI to deploy prepared stacks
|
|
4. **Access Homepage**: `https://homepage.yourdomain.duckdns.org`
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
**"Python version 3.8+ required"**
|
|
- Upgrade Python: `sudo apt install python3.10`
|
|
|
|
**"Missing required dependency"**
|
|
- Install dependencies: `pip install -r requirements.txt`
|
|
|
|
**"Pre-flight checks failed"**
|
|
- Ensure you're running on Ubuntu/Debian
|
|
- Check internet connectivity
|
|
- Verify sufficient disk space
|
|
|
|
**"Deployment failed"**
|
|
- Check Docker installation: `docker --version`
|
|
- Verify .env configuration
|
|
- Review deployment logs
|
|
|
|
### Getting Help
|
|
|
|
- Check the [docs/](docs/) directory for detailed guides
|
|
- Review [troubleshooting](docs/quick-reference.md) in the quick reference
|
|
- Use the AI assistant in VS Code for EZ-Homelab specific help
|
|
|
|
## Development
|
|
|
|
### Running Tests
|
|
```bash
|
|
# Basic syntax check
|
|
python -m py_compile scripts/ez-homelab.py
|
|
|
|
# YAML validation
|
|
python -c "import yaml; yaml.safe_load(open('config-templates/traefik/dynamic/external-host-production.yml'))"
|
|
```
|
|
|
|
### Code Structure
|
|
- `EZHomelabTUI` class: Main application logic
|
|
- Pre-flight checks and validation
|
|
- Interactive question flow
|
|
- Deployment orchestration
|
|
- Configuration management
|
|
|
|
## Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch
|
|
3. Make your changes
|
|
4. Test thoroughly
|
|
5. Submit a pull request
|
|
|
|
## License
|
|
|
|
See [LICENSE](LICENSE) file for details. |