Files
MatchLiveTv/infra/scripts/garage_set_capacity.sh
Emiliano Frascaro da75582dae Sposta storage video su disco dedicato e completa ops/SMTP in produzione.
Recordings e Garage usano bind mount su /media/videos; aggiunge ntfy self-hosted,
notifiche critical+warning, SMTP Aruba SSL/465 e fix cron replay.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 23:13:08 +02:00

43 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Ridimensiona capacità Garage (layout assign + apply). Uso: garage_set_capacity.sh 85G
set -euo pipefail
CAPACITY="${1:-}"
RESERVE_GB="${GARAGE_RESERVE_GB:-20}"
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.prod.yml}"
ENV_FILE="${ENV_FILE:-${ROOT}/.env}"
GARAGE_CONTAINER="${GARAGE_CONTAINER:-}"
VIDEOS_ROOT="${MATCHLIVETV_VIDEOS_ROOT:-/media/videos/matchlivetv}"
if [ -z "$CAPACITY" ]; then
capacity_df="${VIDEOS_ROOT}"
if [ ! -d "$capacity_df" ]; then
capacity_df="${ROOT}"
fi
avail="$(df -BG "${capacity_df}" 2>/dev/null | awk 'NR==2 {print $4}' | tr -d 'G' || echo 0)"
if [ "$avail" -lt 1 ]; then
avail="$(df -BG / 2>/dev/null | awk 'NR==2 {print $4}' | tr -d 'G')"
fi
cap_gb=$((avail - RESERVE_GB))
[ "$cap_gb" -lt 10 ] && cap_gb=10
CAPACITY="${cap_gb}G"
echo "Spazio disponibile ~${avail}G, riservo ${RESERVE_GB}G → capacità Garage ${CAPACITY}"
fi
cd "$ROOT"
if [ -z "$GARAGE_CONTAINER" ]; then
GARAGE_CONTAINER="$(docker ps --format '{{.Names}}' | grep -E 'garage-1$' | head -1)"
fi
[ -n "$GARAGE_CONTAINER" ] || { echo "Container garage non trovato"; exit 1; }
node_id="$(docker exec "$GARAGE_CONTAINER" /garage status 2>/dev/null | awk '/^[0-9a-f]{16,}/{print $1; exit}')"
[ -n "$node_id" ] || { echo "Node id non trovato"; exit 1; }
echo "Node: $node_id → capacità $CAPACITY"
docker exec "$GARAGE_CONTAINER" /garage layout assign -z dc1 -c "$CAPACITY" "$node_id"
ver="$(docker exec "$GARAGE_CONTAINER" /garage layout show 2>/dev/null | awk '/layout version:/{print $NF; exit}')"
next=$((ver + 1))
docker exec "$GARAGE_CONTAINER" /garage layout apply --version "$next"
docker exec "$GARAGE_CONTAINER" /garage layout show