#!/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