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