Files
mates-server-maintenance/scripts/docker-update.sh
T
mates 1eede74dc6 fix: odstranit emoji ze vsech souboru
Kompletne odstraneno:
- Emoji (smajliky, symboly, boxes, arrows) z README
- Emoji ze skriptu (sipky, symboly)
- Emoji z docker-compose (adresare)

Nahrano za:
- Textove alternativy (sipky -> '->', boxes -> '+', atd.)
- ASCII pouze kde to slo

Ciste vsechny 7 repo (overeno Python skriptem).
2026-08-02 08:50:13 +02:00

123 lines
2.9 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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