Files
EZ-Homelab/scripts
kelin 56604b77e9 fix: store Authelia credentials in persistent location
- setup-homelab.sh: Store temp files in /opt/stacks/.setup-temp instead of /tmp
- deploy-homelab.sh: Read credentials from new persistent location
- reset-test-environment.sh: Clean up new temp directory

This fixes the issue where credentials were inaccessible when deploy script
runs via 'su -' (login shell) from setup script, as /tmp files created by
root are not accessible across the su boundary.
2026-01-14 00:03:34 -05:00
..

AI-Homelab Setup Scripts

This directory contains two scripts for automated AI-Homelab deployment:

  1. setup-homelab.sh - System preparation
  2. deploy-homelab.sh - Core infrastructure deployment

setup-homelab.sh

Automated first-run setup script for preparing a fresh Debian installation for AI-Homelab deployment.

You can skip this if you have the following completed already.
Or run it to verify.

What It Does

  1. System Update - Updates all system packages
  2. Install Dependencies - Installs required packages (curl, git, etc.)
  3. Install Docker - Adds Docker repository and installs Docker Engine with Compose V2
  4. Configure User Groups - Adds user to sudo and docker groups
  5. Configure SSH - Enables and starts SSH server for remote access
  6. Detect NVIDIA GPU - Checks for NVIDIA graphics card and provides manual driver installation instructions
  7. Create Directories - Sets up /opt/stacks, /opt/dockge, /mnt/media, /mnt/downloads
  8. Create Docker Networks - Creates homelab-network, traefik-network, and media-network

Usage

cd ~/AI-Homelab

# Make the script executable (if needed)
chmod +x scripts/setup-homelab.sh

# Run with sudo 
sudo ./scripts/setup-homelab.sh

After Running

  1. Log out and log back in for group changes to take effect
  2. Edit .env file with your configuration
  3. Run deploy-homelab.sh to deploy core infrastructure and Dockge

NVIDIA GPU Support

If an NVIDIA GPU is detected, the script will provide instructions for manual driver installation:

  1. Identify your GPU model from the output
  2. Visit https://www.nvidia.com/Download/index.aspx
  3. Download the official driver for your GPU
  4. Run the installer: sudo bash NVIDIA-Linux-x86_64-XXX.XX.run
  5. 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 installation (Debian 11 or 12)
  • Root access (via sudo)
  • Internet connection

Tested On

  • Debian 11 (Bullseye)
  • Debian 12 (Bookworm)

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

deploy-homelab.sh

Automated deployment script that deploys the core infrastructure and Dockge. Run this after editing your .env file.

What It Does

  1. Validate Prerequisites - Checks for Docker, .env file, and proper configuration
  2. Create Directories - Sets up /opt/stacks/core and /opt/stacks/infrastructure
  3. Create Docker Networks - Ensures homelab-network, traefik-network, and media-network exist
  4. Deploy Core Stack - Deploys DuckDNS, Traefik, Authelia, and Gluetun
  5. Deploy Infrastructure Stack - Deploys Dockge, Portainer, Pi-hole, and monitoring tools
  6. Wait for Dockge - Waits for Dockge web UI to become accessible
  7. Open Browser - Automatically opens Dockge in your default browser

Usage

# From the AI-Homelab directory
cd AI-Homelab

# Ensure .env is configured
cp .env.example .env
nano .env  # Edit with your values

# Make the script executable (if needed)
chmod +x scripts/deploy-homelab.sh

# Run WITHOUT sudo (run as your regular user)
./scripts/deploy-homelab.sh

After Running

The script will automatically open https://dockge.yourdomain.duckdns.org in your browser when Dockge is ready.

  1. Log in to Dockge using your Authelia credentials (configured in /opt/stacks/core/authelia/users_database.yml)
  2. Deploy additional stacks through Dockge's web UI:
    • dashboards.yml - Homepage and Homarr
    • media.yml - Plex, Jellyfin, Sonarr, Radarr, etc.
    • media-extended.yml - Readarr, Lidarr, etc.
    • homeassistant.yml - Home Assistant and accessories
    • productivity.yml - Nextcloud, Gitea, wikis
    • monitoring.yml - Grafana, Prometheus
    • utilities.yml - Backups, password manager

Requirements

  • Docker and Docker Compose installed
  • .env file configured with your domain and credentials
  • User must be in docker group (handled by setup-homelab.sh)

Browser Detection

The script will attempt to open Dockge using:

  • xdg-open (default on most Linux desktops)
  • gnome-open (GNOME desktop)
  • firefox or google-chrome (direct browser launch)

If no browser is detected, it will display the URL for manual access.

Manual Deployment Alternative

If you prefer to deploy manually instead of using the script:

# Deploy core stack
mkdir -p /opt/stacks/core
cp docker-compose/core.yml /opt/stacks/core/docker-compose.yml
cp -r config-templates/traefik /opt/stacks/core/
cp -r config-templates/authelia /opt/stacks/core/
cp .env /opt/stacks/core/
cd /opt/stacks/core && docker compose up -d

# Deploy infrastructure stack
mkdir -p /opt/stacks/infrastructure
cp docker-compose/infrastructure.yml /opt/stacks/infrastructure/docker-compose.yml
cp .env /opt/stacks/infrastructure/
cd /opt/stacks/infrastructure && docker compose up -d

# Manually open: https://dockge.yourdomain.duckdns.org

Troubleshooting

Script says "Docker daemon is not running":

  • Run: sudo systemctl start docker
  • Or log out and back in if you just added yourself to docker group

Script says ".env file not found":

  • Run: cp .env.example .env and edit with your values

Dockge doesn't open automatically:

  • The script will display the URL to open manually
  • Wait a minute for services to fully start
  • Check logs: docker compose -f /opt/stacks/infrastructure/docker-compose.yml logs dockge

Traefik SSL certificate errors:

  • Initial certificate generation can take a few minutes
  • Check DuckDNS token is correct in .env
  • Verify your domain is accessible from the internet

Notes

  • Run as regular user (NOT with sudo)
  • Validates .env configuration before deployment
  • Waits up to 60 seconds for Dockge to become ready
  • Automatically copies .env to stack directories
  • Safe to run multiple times (idempotent)