| | #!/usr/bin/env bash |
| | set -euo pipefail |
| |
|
| | TMPDIR=/tmp/gotify_backup |
| | mkdir -p $TMPDIR |
| | ENCFILE="$TMPDIR/$BACKUP_FILE" |
| |
|
| | if [ -z "${GITHUB_TOKEN:-}" ]; then |
| | echo "[backup] ERROR: GITHUB_TOKEN not set" |
| | exit 1 |
| | fi |
| |
|
| | if [ -f "$GOTIFY_DATABASE_PATH" ]; then |
| | echo "[backup] Encrypting DB..." |
| | openssl enc -aes-256-cbc -pbkdf2 -iter 100000 \ |
| | -in "$GOTIFY_DATABASE_PATH" \ |
| | -out "$ENCFILE" \ |
| | -k "$ENCRYPTION_KEY" |
| |
|
| | echo "[backup] Cloning repo..." |
| | rm -rf $TMPDIR/repo |
| | git clone "https://${GITHUB_TOKEN}@${GITHUB_REPO#https://}" $TMPDIR/repo |
| |
|
| | cp "$ENCFILE" "$TMPDIR/repo/$BACKUP_FILE" |
| |
|
| | cd $TMPDIR/repo |
| | git config user.email "gotify@hf.space" |
| | git config user.name "Gotify Backup Bot" |
| | git add "$BACKUP_FILE" |
| | git commit -m "Automated backup $(date -u +%Y%m%dT%H%M%SZ)" || echo "No changes to commit" |
| | git push origin main |
| | echo "[backup] Backup pushed to GitHub" |
| | else |
| | echo "[backup] No DB found at $GOTIFY_DATABASE_PATH" |
| | fi |