2 Commits
Author SHA1 Message Date
Hartmut Bauer 21be8f3864 fix mail.sh, log results of auto update 2025-05-10 14:42:05 +02:00
Hartmut Bauer e7b9cc4e15 all docker references cleared, fixes 2025-05-09 18:57:23 +02:00
6 changed files with 116 additions and 41 deletions

No files matched your search

Executable
+41
View File
@@ -0,0 +1,41 @@
#!/bin/bash
#
# check if container services are running
UNITS="/var/containers/systemd"
FAILED=""
check_service() {
local service=$1
systemctl is-active --user --machine=container@ $service >/dev/null
if [ $? -ne 0 ]; then
FAILED="$FAILED $service"
fi
}
check() {
local type=$1
for i in $UNITS/$type/*.socket; do
check_service $(basename $i)
done
for i in $UNITS/$type/*.container; do
check_service $(basename $i .container).service
done
}
check user
check system
if [ -z "$FAILED" ]; then
echo "OK All services are running"
exit 0
else
echo "#" >&2
echo "# ERROR some services are not running:" >&2
echo "#" >&2
echo "# $FAILED" >&2
echo "#" >&2
exit 1
fi
+5 -3
View File
@@ -3,15 +3,15 @@
USER_CONTAINERS= USER_CONTAINERS=
ROOT_CONTAINERS="pihole" ROOT_CONTAINERS="pihole"
BACKUP_TARGET=/var/docker/tmp BACKUP_TARGET=/var/containers/tmp
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY" NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
backup_daily1() { backup_daily1() {
BACKUP_SOURCE="/var" BACKUP_SOURCE="/var"
BACKUP_EXCLUDE_DIRS=(docker) BACKUP_EXCLUDE_DIRS=(containers)
} }
backup_daily2() { backup_daily2() {
BACKUP_SOURCE="/var/docker" BACKUP_SOURCE="/var/containers"
BACKUP_EXCLUDE_DIRS=(tmp) BACKUP_EXCLUDE_DIRS=(tmp)
} }
@@ -27,5 +27,7 @@ after_backup() {
let rc=rc+$? let rc=rc+$?
copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET" copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET"
let rc=rc+$? let rc=rc+$?
#check_services
let rc=rc+$?
return $rc return $rc
} }
+7 -4
View File
@@ -13,7 +13,10 @@
# #
PODMAN=/usr/bin/podman PODMAN=/usr/bin/podman
SUDO="sudo -u container sh -c" #
# -i ist entscheident, damit die restliche Kommandozeile sauber ausgewertet wird
# das ersetzt den expliziten Aufruf mit "sh -c "..." "
SUDO="sudo -u container -i"
MAILCONTAINER=smtp-relay MAILCONTAINER=smtp-relay
MAILSERVER_IP=10.4.2.30 MAILSERVER_IP=10.4.2.30
REMOTE="" REMOTE=""
@@ -29,7 +32,7 @@ else
fi fi
if [ "$myip" != "$MAILSERVER_IP" ]; then if [ "$myip" != "$MAILSERVER_IP" ]; then
$REMOTE=yes REMOTE=yes
fi fi
TO=$1 TO=$1
@@ -46,9 +49,9 @@ fi
# Mail body aus Datei oder STDIN holen # Mail body aus Datei oder STDIN holen
CONTENT=$(cat ${1:--}) CONTENT=$(cat ${1:--})
MAILCMD="$PODMAN exec -i $MAILCONTAINER /usr/sbin/sendmail -i -t" MAILCMD="$SUDO $PODMAN exec -i $MAILCONTAINER /usr/sbin/sendmail -i -t"
if [ ! -z "$REMOTE" ]; then if [ ! -z "$REMOTE" ]; then
MAILCMD="ssh $MAILSERVER_IP \"$SUDO $MAILCMD\"" MAILCMD="ssh $MAILSERVER_IP $MAILCMD"
fi fi
# construct mail header + content and pipe to sendmail # construct mail header + content and pipe to sendmail
cat <<EOMB | $MAILCMD cat <<EOMB | $MAILCMD
+48 -27
View File
@@ -12,7 +12,7 @@ LOG_KEEP_DAYS=14
RESTORE_PATH="$NAS_MOUNT_POINT/Server/restore" RESTORE_PATH="$NAS_MOUNT_POINT/Server/restore"
BACKUP_MASTER_CHECK="/var/docker/vol/proxy" BACKUP_MASTER_CHECK="/var/containers/vol/caddy"
NAS_HOSTNAME=synology NAS_HOSTNAME=synology
NAS_IP=10.4.2.20 NAS_IP=10.4.2.20
@@ -22,11 +22,13 @@ PASSPHRASE=L1rfCXu8PHMQsGL0HJWwzQYpCT7f5VboislOTHMaEV
EXT=tgz.gpg EXT=tgz.gpg
LIST_EXT=list LIST_EXT=list
DOCKER="/usr/bin/docker compose -f /var/docker/run/docker-compose.yml --ansi never" #DOCKER="/usr/bin/docker compose -f /var/docker/run/docker-compose.yml --ansi never"
SYNO_USB=/usr/syno/bin/synousbdisk SYNO_USB=/usr/syno/bin/synousbdisk
SYSTEMCTL_USER="/usr/bin/systemctl --user --machine=container@" SYSTEMCTL_USER="/usr/bin/systemctl --user --machine=container@"
SYSTEMCTL="/usr/bin/systemctl" SYSTEMCTL="/usr/bin/systemctl"
CONTAINER_EXEC_USER=" sudo -u container podman exec" PODMAN=" sudo -u container podman"
CONTAINER_EXEC_USER=" $PODMAN exec"
CONTAINER_SVC_UPDATE_USER=" $PODMAN auto-update"
CONTAINER_EXEC="podman exec" CONTAINER_EXEC="podman exec"
LOG_RECIPIENT=hb242@pm.me LOG_RECIPIENT=hb242@pm.me
@@ -98,20 +100,20 @@ prune_logs() {
# ----- db dump ----- # ----- db dump -----
dump_mariadb() { #dump_mariadb() {
return 0 # return 0
log $DEBUG "$DBG dump_mariadb( $@ )" # log $DEBUG "$DBG dump_mariadb( $@ )"
local dump_dir=$1 # local dump_dir=$1
local mysqlconnect="--user=root --password=snafu" # local mysqlconnect="--user=root --password=snafu"
#
log $DEBUG "$DBG > \$DOCKER exec mysql /usr/bin/mariadb --silent --user=xxx --password=xxx -e \"show databases\" -B" # log $DEBUG "$DBG > \$DOCKER exec mysql /usr/bin/mariadb --silent --user=xxx --password=xxx -e \"show databases\" -B"
for db in $($DOCKER exec mysql /usr/bin/mariadb --silent $mysqlconnect -e "show databases" -B 2>>$LOG_FILE | grep -v information_schema 2>>$LOG_FILE | grep -v performance_schema 2>>$LOG_FILE | sed -e 's/\r//' 2>>$LOG_FILE); do # for db in $($DOCKER exec mysql /usr/bin/mariadb --silent $mysqlconnect -e "show databases" -B 2>>$LOG_FILE | grep -v information_schema 2>>$LOG_FILE | grep -v performance_schema 2>>$LOG_FILE | sed -e 's/\r//' 2>>$LOG_FILE); do
log $DEBUG "$DBG > \$DOCKER exec mysql /usr/bin/mariadb-dump --hex-blob --user=xxx --password=xxx --databases $db" # log $DEBUG "$DBG > \$DOCKER exec mysql /usr/bin/mariadb-dump --hex-blob --user=xxx --password=xxx --databases $db"
$DOCKER exec mysql /usr/bin/mariadb-dump --hex-blob $mysqlconnect --databases $db >$dump_dir/$db.sql 2>>$LOG_FILE # $DOCKER exec mysql /usr/bin/mariadb-dump --hex-blob $mysqlconnect --databases $db >$dump_dir/$db.sql 2>>$LOG_FILE
is_error $? false && return 1 # is_error $? false && return 1
done # done
return 0 # return 0
} #}
dump_postgresql() { dump_postgresql() {
local pg_container=$1 local pg_container=$1
@@ -151,11 +153,11 @@ check_root() {
start_containers() { start_containers() {
local let rc=0 local let rc=0
log $DEBUG "$DBG start_containers()" log $DEBUG "$DBG start_containers()"
if [ -f /var/docker/run/docker-compose.yml ]; then # if [ -f /var/docker/run/docker-compose.yml ]; then
log $DEBUG "$DBG > \$DOCKER up -d" # log $DEBUG "$DBG > \$DOCKER up -d"
$DOCKER up -d >>$LOG_FILE 2>&1 # $DOCKER up -d >>$LOG_FILE 2>&1
let rc=rc+$? # let rc=rc+$?
fi # fi
if [ -d /var/containers ]; then if [ -d /var/containers ]; then
do_start_stop_containers start do_start_stop_containers start
let rc=rc+$? let rc=rc+$?
@@ -166,11 +168,11 @@ start_containers() {
stop_containers() { stop_containers() {
local let rc=0 local let rc=0
log $DEBUG "$DBG stop_containers()" log $DEBUG "$DBG stop_containers()"
if [ -f /var/docker/run/docker-compose.yml ]; then # if [ -f /var/docker/run/docker-compose.yml ]; then
log $DEBUG "$DBG > \$DOCKER down" # log $DEBUG "$DBG > \$DOCKER down"
$DOCKER down >>$LOG_FILE 2>&1 # $DOCKER down >>$LOG_FILE 2>&1
let rc=rc+$? # let rc=rc+$?
fi # fi
if [ -d /var/containers ]; then if [ -d /var/containers ]; then
do_start_stop_containers stop do_start_stop_containers stop
let rc=rc+$? let rc=rc+$?
@@ -195,6 +197,25 @@ do_start_stop_containers() {
return $rc return $rc
} }
update_services() {
log $DEBUG "$DBG update_services()"
mail_log $INFO "$INF update services"
local upd=$($CONTAINER_SVC_UPDATE_USER 2>&1 | tee $LOG_FILE | egrep 'registry\s+true' | sed 's/^.* \([^[:space:]]*\/[^[:space:]]*\).*$/\1/g')
check_pipe_rc ${PIPESTATUS[@]}
local rc=$?
for i in $upd; do
mail_log $INFO "$INF $i"
done
return $rc
}
check_services() {
log $DEBUG "$DBG check_services()"
mail_log $INFO "$INF check services"
$HERE/check.sh >>$LOG_FILE 2>&1
return $?
}
# Zugriffsrechte für Logs und Backups setzen # Zugriffsrechte für Logs und Backups setzen
# #
fix_acls() { fix_acls() {
+5 -1
View File
@@ -3,6 +3,10 @@
# entrypoint for all actions # entrypoint for all actions
# #
# 2.1.16 10.05.2025 - fix mail.sh, log results of auto-update
# 2.1.15 09.05.2025 - podman auto-update
# 2.1.14 09.05.2025 - Fix mail.sh, homeserver.target, cleared all docker references
# 2.1.13 08.05.2025 - check if services are running after backup
# 2.1.12 08.05.2025 - mail.sh an neuen Container angepasst # 2.1.12 08.05.2025 - mail.sh an neuen Container angepasst
# 2.1.11 05.05.2025 - Fix DB-Dump # 2.1.11 05.05.2025 - Fix DB-Dump
# 2.1.10 05.05.2025 - Postgres-Dump auf podman umgestellt # 2.1.10 05.05.2025 - Postgres-Dump auf podman umgestellt
@@ -11,7 +15,7 @@
# 2.1.7 29.04.2025 - 1. Schritt zur Umstellung auf podman # 2.1.7 29.04.2025 - 1. Schritt zur Umstellung auf podman
# 2.1.6 29.04.2025 - weekly backup Sa->SO # 2.1.6 29.04.2025 - weekly backup Sa->SO
VER="2.1.12" VER="2.1.16"
HERE=$(dirname "$0") HERE=$(dirname "$0")
THIS_SCRIPT=$0 THIS_SCRIPT=$0
+10 -6
View File
@@ -1,25 +1,25 @@
#!/usr/bin/env bash #!/usr/bin/env bash
USER_CONTAINERS="homeassistant-pod codeserver jellyfin pgadmin nextcloud-pod calibre nexus git-pod caddy.socket caddy smtp-relay roonserver" USER_CONTAINERS="homeserver.target"
ROOT_CONTAINERS= ROOT_CONTAINERS=
DOCKER_ROOT=/var/docker #DOCKER_ROOT=/var/docker
CONTAINERS_ROOT=/var/containers CONTAINERS_ROOT=/var/containers
BACKUP_TARGET=$DOCKER_ROOT/tmp BACKUP_TARGET=$CONTAINERS_ROOT/tmp
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY" NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
backup_daily1() { backup_daily1() {
BACKUP_SOURCE="/var" BACKUP_SOURCE="/var"
BACKUP_EXCLUDE_DIRS=(docker) BACKUP_EXCLUDE_DIRS=(containers)
} }
backup_daily2() { backup_daily2() {
BACKUP_SOURCE="/var/docker" BACKUP_SOURCE="/var/containers"
BACKUP_EXCLUDE_DIRS=(vol tmp) BACKUP_EXCLUDE_DIRS=(vol tmp)
} }
backup_daily3() { backup_daily3() {
BACKUP_SOURCE="/var/docker/vol" BACKUP_SOURCE="/var/containers/vol"
BACKUP_EXCLUDE_DIRS=() BACKUP_EXCLUDE_DIRS=()
} }
@@ -45,5 +45,9 @@ after_backup() {
let rc=rc+$? let rc=rc+$?
copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET" copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET"
let rc=rc+$? let rc=rc+$?
update_services
let rc=rc+$?
check_services
let rc=rc+$?
return $rc return $rc
} }