File size: 1,640 Bytes
3fce7f5 43f45c6 30b021f df66c52 43f45c6 c0f4f37 43f45c6 c0f4f37 43f45c6 c0f4f37 43f45c6 c0f4f37 72b93a1 43f45c6 d3c27ad 1571cf7 d0a963e c0f4f37 43f45c6 c0f4f37 43f45c6 f5da15c c0f4f37 43f45c6 61f9d90 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
#!/usr/bin/env bash
set -euo pipefail
export GIT_CONFIG_NOSYSTEM=1
export HOME=/home/user
REPO_URL="https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPO}.git"
DB_PATH="/app/db/webui.db"
ENCRYPTED_DB="webui.db.enc"
TEMP_REPO="/app/db/temp_repo"
echo "[sync] Configuring Open-WebUI persistence via GitHub + OpenSSL"
mkdir -p /app/db
if [ ! -d "$TEMP_REPO/.git" ]; then
echo "[sync] Cloning repo ${GITHUB_REPO}..."
git clone "$REPO_URL" "$TEMP_REPO"
else
echo "[sync] Repo already cloned, pulling latest..."
cd "$TEMP_REPO" && git fetch --all && git reset --hard origin/main && cd -
fi
if [ -f "$TEMP_REPO/$ENCRYPTED_DB" ]; then
echo "[sync] Found encrypted DB, decrypting..."
openssl enc -d -aes-256-cbc -pbkdf2 -iter 100000 \
-in "$TEMP_REPO/$ENCRYPTED_DB" \
-out "$DB_PATH" \
-k "$ENCRYPTION_KEY"
else
echo "[sync] No DB found in repo, creating empty DB..."
sqlite3 "$DB_PATH" "VACUUM;"
fi
(
while true; do
echo "[sync] Sleeping 60s before next push..."
sleep 60
if [ -f "$DB_PATH" ]; then
echo "[sync] Encrypting and pushing DB..."
openssl enc -aes-256-cbc -pbkdf2 -iter 100000 \
-in "$DB_PATH" \
-out "$TEMP_REPO/$ENCRYPTED_DB" \
-k "$ENCRYPTION_KEY"
cd "$TEMP_REPO"
git config user.email "openwebui@hf.space"
git config user.name "OpenWebUI Backup Bot"
git add "$ENCRYPTED_DB"
git commit -m "Automated backup $(date -u +%Y%m%dT%H%M%SZ)" || echo "[sync] No changes to commit"
git push origin main || echo "[sync] Push failed"
cd -
fi
done
) &
exec ./start.sh |