Document Agap infrastructure and services
- Add CLAUDE.md with Gitea integration, development guidelines, and wiki interaction instructions - Add comprehensive README.md with service overview, quick start, and configuration details - Add service directories: gitea/, openai/, immich-app/, and setup scripts (install-cuda.sh, nvidia-docker-install.sh) - Update docker-compose.yml structure and immich configuration - Include restore example script for Immich database backups This repository now serves as the source of truth for Docker Compose configurations and deployment automation for Agap home server services (Immich, Gitea, Open WebUI). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
99
nvidia-docker-install.sh
Executable file
99
nvidia-docker-install.sh
Executable file
@@ -0,0 +1,99 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# =============================================================================
|
||||
# NVIDIA Container Toolkit + Docker Installation Script
|
||||
# Enables GPU-accelerated Docker containers
|
||||
# Tested on Ubuntu 20.04/22.04/24.04, Debian 11/12
|
||||
# =============================================================================
|
||||
|
||||
RED=$'\033[0;31m'
|
||||
GREEN=$'\033[0;32m'
|
||||
YELLOW=$'\033[1;33m'
|
||||
NC=$'\033[0m'
|
||||
|
||||
log() { echo -e "${GREEN}[INFO]${NC} $*"; }
|
||||
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
|
||||
error() { echo -e "${RED}[ERROR]${NC} $*"; exit 1; }
|
||||
|
||||
# --- Pre-flight checks -------------------------------------------------------
|
||||
[[ $EUID -ne 0 ]] && error "Please run as root or with sudo."
|
||||
|
||||
log "Checking for NVIDIA GPU..."
|
||||
if ! lspci | grep -qi nvidia; then
|
||||
error "No NVIDIA GPU detected. Aborting."
|
||||
fi
|
||||
|
||||
log "Checking for NVIDIA driver..."
|
||||
if ! nvidia-smi &>/dev/null; then
|
||||
warn "NVIDIA driver not found. Attempting to install recommended driver..."
|
||||
apt-get update -qq
|
||||
apt-get install -y ubuntu-drivers-common
|
||||
ubuntu-drivers autoinstall
|
||||
warn "NVIDIA driver installed. A REBOOT may be required before proceeding."
|
||||
read -rp "Continue anyway? (y/N): " choice
|
||||
[[ "$choice" != [yY] ]] && { log "Reboot and re-run this script."; exit 0; }
|
||||
fi
|
||||
|
||||
nvidia-smi
|
||||
log "NVIDIA driver is working."
|
||||
|
||||
# --- Install Docker -----------------------------------------------------------
|
||||
if ! command -v docker &>/dev/null; then
|
||||
log "Docker not found. Installing Docker Engine..."
|
||||
apt-get update -qq
|
||||
apt-get install -y ca-certificates curl gnupg
|
||||
|
||||
install -m 0755 -d /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
|
||||
gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||
chmod a+r /etc/apt/keyrings/docker.gpg
|
||||
|
||||
# Detect distro (works for Ubuntu & Debian)
|
||||
DISTRO_ID=$(. /etc/os-release && echo "$ID")
|
||||
DISTRO_CODENAME=$(. /etc/os-release && echo "$VERSION_CODENAME")
|
||||
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
|
||||
https://download.docker.com/linux/${DISTRO_ID} ${DISTRO_CODENAME} stable" | \
|
||||
tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
|
||||
apt-get update -qq
|
||||
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
systemctl enable --now docker
|
||||
log "Docker installed successfully."
|
||||
else
|
||||
log "Docker is already installed: $(docker --version)"
|
||||
fi
|
||||
|
||||
# --- Install NVIDIA Container Toolkit ----------------------------------------
|
||||
log "Adding NVIDIA Container Toolkit repository..."
|
||||
|
||||
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
|
||||
gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
|
||||
|
||||
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
|
||||
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
|
||||
tee /etc/apt/sources.list.d/nvidia-container-toolkit.list > /dev/null
|
||||
|
||||
apt-get update -qq
|
||||
apt-get install -y nvidia-container-toolkit
|
||||
|
||||
# --- Configure Docker runtime -------------------------------------------------
|
||||
log "Configuring Docker to use NVIDIA runtime..."
|
||||
nvidia-ctk runtime configure --runtime=docker
|
||||
|
||||
systemctl restart docker
|
||||
log "Docker restarted with NVIDIA runtime."
|
||||
|
||||
# --- Verify -------------------------------------------------------------------
|
||||
log "Running verification: docker run --gpus all nvidia/cuda nvidia-smi"
|
||||
echo "---"
|
||||
docker run --rm --gpus all nvidia/cuda:12.6.3-base-ubuntu24.04 nvidia-smi
|
||||
|
||||
echo ""
|
||||
log "============================================="
|
||||
log " NVIDIA Docker setup complete!"
|
||||
log " Usage: docker run --gpus all <image>"
|
||||
log "============================================="
|
||||
Reference in New Issue
Block a user