Files
gitea-migration/setup/unraid.sh
S 5f043cbb45 feat: add setup scripts (configure_env, macbook, unraid, fedora)
- configure_env.sh: interactive 50-prompt wizard with progress [N/50],
  input validation (IP, port, email, path, URL, bool, password, ssl_mode),
  conditional SSL prompts based on SSL_MODE, summary with masked passwords
- macbook.sh: Homebrew packages, envsubst, Xcode CLI tools, SSH tests
- unraid.sh: Docker verify, docker-compose + jq static binary install
- fedora.sh: Docker CE + compose plugin install, jq, docker group setup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 15:07:34 -06:00

89 lines
3.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# =============================================================================
# setup/unraid.sh — Install prerequisites on Unraid (runs via SSH from MacBook)
# =============================================================================
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
source "${SCRIPT_DIR}/../lib/common.sh"
load_env
require_vars UNRAID_IP UNRAID_SSH_USER UNRAID_GITEA_DATA_PATH
log_info "=== Unraid Setup ==="
# --------------------------------------------------------------------------
# SSH connectivity
# --------------------------------------------------------------------------
log_info "Testing SSH to Unraid..."
if ! ssh_check UNRAID; then
log_error "Cannot SSH to Unraid at $UNRAID_IP as $UNRAID_SSH_USER"
exit 1
fi
log_success "SSH to Unraid OK"
# --------------------------------------------------------------------------
# Docker (pre-installed on Unraid — DO NOT attempt to install)
# --------------------------------------------------------------------------
if ssh_exec UNRAID "docker --version" &>/dev/null; then
log_success "Docker found on Unraid"
else
log_error "Docker not found on Unraid."
log_error "Enable Docker via Unraid's Settings > Docker page."
log_error "This script does not install Docker on Unraid."
exit 1
fi
# --------------------------------------------------------------------------
# docker-compose (try plugin first, then standalone)
# --------------------------------------------------------------------------
if ssh_exec UNRAID "docker compose version" &>/dev/null; then
log_success "docker compose (plugin) found on Unraid"
elif ssh_exec UNRAID "docker-compose --version" &>/dev/null; then
log_success "docker-compose (standalone) found on Unraid"
else
log_info "Installing docker-compose standalone binary on Unraid..."
COMPOSE_VERSION="v2.29.1"
ssh_exec UNRAID "curl -SL https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose"
if ssh_exec UNRAID "docker-compose --version" &>/dev/null; then
log_success "docker-compose installed on Unraid"
else
log_error "Failed to install docker-compose on Unraid"
exit 1
fi
fi
# --------------------------------------------------------------------------
# jq (install via static binary — Unraid has no package manager)
# --------------------------------------------------------------------------
if ssh_exec UNRAID "jq --version" &>/dev/null; then
log_success "jq found on Unraid"
else
log_info "Installing jq static binary on Unraid..."
JQ_VERSION="1.7.1"
ssh_exec UNRAID "curl -SL https://github.com/jqlang/jq/releases/download/jq-${JQ_VERSION}/jq-linux-amd64 -o /usr/local/bin/jq && chmod +x /usr/local/bin/jq"
if ssh_exec UNRAID "jq --version" &>/dev/null; then
log_success "jq installed on Unraid"
else
log_error "Failed to install jq on Unraid"
exit 1
fi
fi
# --------------------------------------------------------------------------
# Data path
# --------------------------------------------------------------------------
log_info "Verifying data path: $UNRAID_GITEA_DATA_PATH"
if ssh_exec UNRAID "mkdir -p '$UNRAID_GITEA_DATA_PATH' && touch '$UNRAID_GITEA_DATA_PATH/.write-test' && rm '$UNRAID_GITEA_DATA_PATH/.write-test'"; then
log_success "Data path exists and is writable"
else
log_error "Cannot write to $UNRAID_GITEA_DATA_PATH on Unraid"
exit 1
fi
# --------------------------------------------------------------------------
# Summary
# --------------------------------------------------------------------------
log_success "All Unraid prerequisites satisfied"