- Updated validate_os() function to accept Debian 13 - Enables testing on newer Debian versions including Raspberry Pi OS
EZ-Homelab Setup Scripts
This directory contains scripts for automated EZ-Homelab deployment and management:
- ez-homelab.sh - Unified setup and deployment script
- reset-test-environment.sh - Safe test environment cleanup
- reset-ondemand-services.sh - Reload services for Sablier lazy loading
ez-homelab.sh
Unified guided setup and deployment script that handles both system preparation and service deployment in a single interactive session.
What It Does
System Preparation (when needed):
- System Update - Updates all system packages
- Install Dependencies - Installs required packages (curl, git, etc.)
- Install Docker - Adds Docker repository and installs Docker Engine with Compose V2
- Configure User Groups - Adds user to sudo and docker groups
- Configure SSH - Enables and starts SSH server for remote access
- Detect NVIDIA GPU - Checks for NVIDIA graphics card and provides manual driver installation instructions
- Create Directories - Sets up
/opt/stacks,/opt/dockge,/mnt/media,/mnt/downloads - Create Docker Networks - Creates homelab-network, traefik-network, and media-network
Configuration & Deployment:
- Interactive Setup - Guides you through domain, admin credentials, and service selection
- Authelia Secrets Generation - Generates JWT, session, and encryption keys
- Admin User Creation - Prompts for admin username, email, and password
- Service Deployment - Deploys selected stacks based on your choices
- SSL Certificate Setup - Obtains wildcard certificate via DNS challenge
- Dockge Access - Opens Dockge web UI when ready
Usage
cd ~/EZ-Homelab
# Make the script executable (if needed)
chmod +x scripts/ez-homelab.sh
# Run the script (will use sudo when needed)
./scripts/ez-homelab.sh
Interactive Options
The script will prompt you to:
- Enter your domain (e.g., yourdomain.duckdns.org)
- Provide DuckDNS token
- Set admin credentials for Authelia
- Choose which service stacks to deploy
- Configure additional settings as needed
After Running
- Access Dockge at
https://dockge.yourdomain.duckdns.org - Log in with your configured Authelia credentials
- Deploy additional stacks through Dockge's web UI
NVIDIA GPU Support
If an NVIDIA GPU is detected, the script will provide instructions for manual driver installation:
- Identify your GPU model from the output
- Visit https://www.nvidia.com/Download/index.aspx
- Download the official driver for your GPU
- Run the installer:
sudo bash NVIDIA-Linux-x86_64-XXX.XX.run - Install container toolkit:
sudo apt-get install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker
This manual approach avoids driver conflicts that often occur with automated installation methods.
Requirements
- Fresh Debian/Ubuntu installation (or existing system)
- Root access (via sudo)
- Internet connection
- Ports 80 and 443 forwarded to your server
Tested On
- Debian 11 (Bullseye)
- Debian 12 (Bookworm)
- Ubuntu 20.04/22.04
Notes
- The script is idempotent - safe to run multiple times
- Creates directories with proper ownership
- Configures Docker networks automatically
- SSH is enabled for remote management
- NVIDIA driver installation requires manual intervention for reliability
reset-test-environment.sh
Safe cleanup script for testing environments. Completely removes all deployed services, data, and configurations while preserving the underlying system setup. Intended for development and testing scenarios only.
What It Does
- Stop All Stacks - Gracefully stops dashboards, infrastructure, and core stacks
- Preserve SSL Certificates - Backs up
acme.jsonto the repository folder for reuse - Remove Docker Volumes - Deletes all homelab-related named volumes (data will be lost)
- Clean Stack Directories - Removes
/opt/stacks/core,/opt/stacks/infrastructure,/opt/stacks/dashboards - Clear Dockge Data - Removes Dockge's persistent data directory
- Clean Temporary Files - Removes temporary files and setup artifacts
- Remove Networks - Deletes homelab-network, traefik-network, dockerproxy-network, media-network
- Prune Resources - Runs Docker system prune to clean up unused resources
Usage
cd ~/AI-Homelab
# Make the script executable (if needed)
chmod +x scripts/reset-test-environment.sh
# Run with sudo (required for system cleanup)
sudo ./scripts/reset-test-environment.sh
Safety Features
- Confirmation Required - Must type "yes" to confirm reset
- Root Check - Ensures running with sudo but not as root user
- Colored Output - Clear visual feedback for each step
- Error Handling - Continues with warnings if some operations fail
- Preserves System - Docker, packages, user groups, and firewall settings remain intact
After Running
The system will be returned to a clean state ready for re-deployment:
- Ensure
.envfile is properly configured - Run:
./scripts/ez-homelab.sh
Requirements
- Docker and Docker Compose installed
- Root access (via sudo)
- Existing AI-Homelab deployment
Warnings
- DATA LOSS - All application data, databases, and configurations will be permanently deleted
- SSL Certificates - Preserved in repository folder but must be manually restored if needed
- Production Use - This script is for testing only - DO NOT use in production environments
Notes
- Preserves Docker installation and system packages
- Maintains user group memberships and firewall rules
- SSL certificates are backed up to
~/AI-Homelab/acme.json - Safe to run multiple times
- Provides clear next steps after completion
reset-ondemand-services.sh
Service management script for Sablier lazy loading. Restarts stacks to reload configuration changes and stops web services so Sablier can control them on-demand, while keeping databases running.
What It Does
- Restart Stacks - Brings down and back up various service stacks to reload compose file changes
- Stop Web Services - Stops containers with
sablier.enable=truelabel so Sablier can start them on-demand - Preserve Databases - Leaves database containers running for data persistence
Supported Stacks
The script manages the following stacks:
- arr-stack (Sonarr, Radarr, Prowlarr)
- backrest (backup management)
- bitwarden (password manager)
- bookstack (documentation)
- code-server (VS Code server)
- dokuwiki (wiki)
- dozzle (log viewer)
- duplicati (alternative backup)
- formio (form builder)
- gitea (git server)
- glances (system monitor)
- mealie (recipe manager)
- mediawiki (wiki)
- nextcloud (cloud storage)
- tdarr (media processing)
- unmanic (media optimization)
- wordpress (blog/CMS)
Usage
cd ~/AI-Homelab
# Make the script executable (if needed)
chmod +x scripts/reset-ondemand-services.sh
# Run as regular user (docker group membership required)
./scripts/reset-ondemand-services.sh
When to Use
- After modifying compose files for Sablier lazy loading configuration
- When services need to reload configuration changes
- To ensure Sablier has control over web service startup
- During initial setup of lazy loading for multiple services
Requirements
- Docker and Docker Compose installed
- User must be in docker group
- Sablier must be running in core stack
- Service stacks must be deployed
Notes
- Handles different compose file naming conventions (.yml vs .yaml)
- Stops only services with Sablier labels enabled
- Databases remain running to preserve data
- Safe to run multiple times
- Provides clear feedback on operations performed