refactor: prejmenovat docker-update.sh na docker-update-telegram.sh
V tomto repo docker-update.sh je server-side skript s Telegram notifikaci, zatimco v mates-install-scripts/docker-update.sh je jiny (obecny, bez Telegramu). Stejny nazev ve 2 repo matou. Prejmenovano: - scripts/docker-update.sh -> scripts/docker-update-telegram.sh - systemd/docker-update.service: ExecStart spravne masters-install-scripts/docker-update.sh zustava jak je (je to jiny nastroj).
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# docker-update.sh - aktualizace Docker Compose projektu na tomto serveru
|
||||
# (docker compose pull + up -d) + Telegram notifikace.
|
||||
#
|
||||
# Spust jednou rucne: bash docker-update.sh
|
||||
# Spust automaticky: systemd timer docker-update.timer (kazdou sobotu 18:00)
|
||||
#
|
||||
# Konfigurace: /home/mates/.telegram.conf
|
||||
# Log: /home/mates/skripty/update-docker-script/docker-update.log
|
||||
#
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# === KONFIGURACE ===
|
||||
USER_NAME="mates"
|
||||
WORK_DIR="/home/$USER_NAME"
|
||||
ZAKLADNI_SLOZKA="$WORK_DIR/docker"
|
||||
LOG="$WORK_DIR/skripty/update-docker-script/docker-update.log"
|
||||
CONFIG_FILE="$WORK_DIR/.telegram.conf"
|
||||
DATUM=$(date '+%Y-%m-%d %H:%M:%S')
|
||||
HOST=$(hostname)
|
||||
|
||||
# Seznam sluzeb k aktualizaci (uprav podle potreby)
|
||||
AKTUALIZOVAT=(
|
||||
audiobookshelf
|
||||
calibre-web
|
||||
glance
|
||||
homeassistant
|
||||
jswiki
|
||||
plex
|
||||
portainer
|
||||
rustdesk
|
||||
speedtest
|
||||
vaultwarden
|
||||
nginx
|
||||
)
|
||||
|
||||
# === TELEGRAM KONFIGURACE ===
|
||||
if [[ -f "$CONFIG_FILE" ]]; then
|
||||
# shellcheck disable=SC1090
|
||||
source "$CONFIG_FILE"
|
||||
fi
|
||||
TELEGRAM_BOT_TOKEN="${TELEGRAM_BOT_TOKEN:-}"
|
||||
TELEGRAM_CHAT_ID="${TELEGRAM_CHAT_ID:-}"
|
||||
|
||||
# === TELEGRAM HELPER ===
|
||||
send_msg() {
|
||||
local TEXT="$1"
|
||||
|
||||
if [[ -z "$TELEGRAM_BOT_TOKEN" || -z "$TELEGRAM_CHAT_ID" ]]; then
|
||||
echo "$DATUM ️ Telegram neni nakonfigurovan, preskakuji" >> "$LOG"
|
||||
return 0
|
||||
fi
|
||||
|
||||
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
|
||||
-d chat_id="${TELEGRAM_CHAT_ID}" \
|
||||
-d text="$TEXT" \
|
||||
-d parse_mode="Markdown" \
|
||||
--max-time 10 \
|
||||
--retry 3 > /dev/null || echo "$DATUM ️ Telegram chyba" >> "$LOG"
|
||||
}
|
||||
|
||||
# === HLAVNI LOGIKA ===
|
||||
echo "$DATUM === docker-update.sh spusten ===" >> "$LOG"
|
||||
send_msg " *[$HOST]* Spoustim aktualizaci Docker kontejneru..."
|
||||
|
||||
# Vytvor log adresar pokud neexistuje
|
||||
mkdir -p "$(dirname "$LOG")"
|
||||
|
||||
AKTUALIZOVANO=()
|
||||
CHYBY=()
|
||||
|
||||
for SLUZBA in "${AKTUALIZOVAT[@]}"; do
|
||||
SLUZBA_PATH="$ZAKLADNI_SLOZKA/$SLUZBA"
|
||||
|
||||
if [[ ! -d "$SLUZBA_PATH" ]]; then
|
||||
echo "$DATUM SKIP: $SLUZBA (slozka neexistuje)" >> "$LOG"
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ ! -f "$SLUZBA_PATH/docker-compose.yml" ]]; then
|
||||
echo "$DATUM SKIP: $SLUZBA (docker-compose.yml chybi)" >> "$LOG"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "$DATUM === Aktualizuji: $SLUZBA ===" >> "$LOG"
|
||||
|
||||
cd "$SLUZBA_PATH"
|
||||
|
||||
# Stahnout nove image
|
||||
if docker compose pull 2>>"$LOG"; then
|
||||
# Restart s novym image
|
||||
if docker compose up -d 2>>"$LOG"; then
|
||||
AKTUALIZOVANO+=("$SLUZBA")
|
||||
echo "$DATUM OK: $SLUZBA aktualizovan" >> "$LOG"
|
||||
else
|
||||
CHYBY+=("$SLUZBA (up)")
|
||||
echo "$DATUM CHYBA: $SLUZBA - up -d selhalo" >> "$LOG"
|
||||
fi
|
||||
else
|
||||
CHYBY+=("$SLUZBA (pull)")
|
||||
echo "$DATUM CHYBA: $SLUZBA - pull selhalo" >> "$LOG"
|
||||
fi
|
||||
done
|
||||
|
||||
# === SOUHRN ===
|
||||
POCET_OK=${#AKTUALIZOVANO[@]}
|
||||
POCET_CHYB=${#CHYBY[@]}
|
||||
|
||||
if [[ $POCET_CHYB -eq 0 ]]; then
|
||||
send_msg " *[$HOST]* Docker aktualizace dokoncena.
|
||||
Aktualizovano: $POCET_OK sluzeb
|
||||
Seznam: ${AKTUALIZOVANO[*]}"
|
||||
else
|
||||
send_msg "️ *[$HOST]* Docker aktualizace dokoncena s chybami.
|
||||
Aktualizovano: $POCET_OK
|
||||
Chyby: ${CHYBY[*]}"
|
||||
fi
|
||||
|
||||
echo "$DATUM === docker-update.sh dokoncen ===" >> "$LOG"
|
||||
exit 0
|
||||
Reference in New Issue
Block a user