#!/usr/bin/env bash set -euo pipefail BASE_URL="https://git.thomasmlg.fr/thomas/Docker/raw/branch/release" WORKDIR="/opt/lxc-updater" LOG_ROOT="/var/log/lxc-updater-TM" DATE="$(date +%F)" TS="$(date +%H%M%S)" LOG_DIR="${LOG_ROOT}/${DATE}" RUN_LOG="${LOG_DIR}/lxc-updater-run.log" RUN_LOG_ARCHIVE="${LOG_DIR}/lxc-updater-run-${TS}.log" mkdir -p "$WORKDIR" "$LOG_DIR" : > "$RUN_LOG" : > "$RUN_LOG_ARCHIVE" log() { echo "$1" echo "$1" >>"$RUN_LOG" echo "$1" >>"$RUN_LOG_ARCHIVE" } send_matrix() { local message="$1" MATRIX_URL="https://element.thomasmlg.fr" ROOM_ID="!qMftKWAtfFIQzithEu:malgouyres" ACCESS_TOKEN="syt_YWRtaW4_HyZwdmZXmngmUNGdxgTV_0tb2UI" curl -s -X POST \ -H "Authorization: Bearer ${ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d "{ \"msgtype\":\"m.text\", \"body\":\"${message}\" }" \ "${MATRIX_URL}/_matrix/client/r0/rooms/${ROOM_ID}/send/m.room.message" \ >/dev/null 2>&1 || true } on_error() { send_matrix "❌ Échec de la mise à jour sur $(hostname)" } trap on_error ERR # ------------------------------------------------ # Téléchargement des scripts # ------------------------------------------------ clear echo "╔══════════════════════════════════════╗" echo "║ LXC Updater (TM) ║" echo "╚══════════════════════════════════════╝" echo "🖥️ Conteneur : $(hostname)" echo "📅 Date : ${DATE} 🕒 Heure : ${TS}" echo "" echo "⬇️ Téléchargement des scripts..." curl -fsSL "${BASE_URL}/detect.sh" -o "${WORKDIR}/detect.sh" >>"$RUN_LOG" 2>&1 curl -fsSL "${BASE_URL}/update.sh" -o "${WORKDIR}/update.sh" >>"$RUN_LOG" 2>&1 chmod +x "${WORKDIR}/detect.sh" "${WORKDIR}/update.sh" # ------------------------------------------------ # Détection silencieuse # ------------------------------------------------ MODE="$("${WORKDIR}/detect.sh")" # ------------------------------------------------ # Notification début # ------------------------------------------------ send_matrix "🔄 Mise à jour en cours sur $(hostname)" # ------------------------------------------------ # ÉTAPE 1 — Mise à jour du système # ------------------------------------------------ clear echo "╔══════════════════════════════════════╗" echo "║ LXC Updater (TM) ║" echo "╚══════════════════════════════════════╝" echo "🖥️ Conteneur : $(hostname)" echo "📅 Date : ${DATE} 🕒 Heure : ${TS}" echo "📌 Étape : Mise à jour du système" echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "📦 Mise à jour du système" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" "${WORKDIR}/update.sh" "${MODE}" system sleep 2 # ------------------------------------------------ # ÉTAPE 2 — Mise à jour Docker # ------------------------------------------------ clear echo "╔══════════════════════════════════════╗" echo "║ LXC Updater (TM) ║" echo "╚══════════════════════════════════════╝" echo "🖥️ Conteneur : $(hostname)" echo "📅 Date : ${DATE} 🕒 Heure : ${TS}" echo "📌 Étape : Mise à jour des conteneurs Docker" echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "🐳 Mise à jour des conteneurs Docker" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" "${WORKDIR}/update.sh" "${MODE}" docker # ------------------------------------------------ # Fin # ------------------------------------------------ echo "" echo "🧾 Log run : ${RUN_LOG}" echo "🗃️ Archive run : ${RUN_LOG_ARCHIVE}" echo "🎉 Terminé" send_matrix "✅ Mise à jour terminée avec succès sur $(hostname)"