Spaces:
Paused
Paused
File size: 3,050 Bytes
b13b929 2ce826b 63bc5fd 9e206b4 63bc5fd 2ce826b 9e206b4 2ce826b 5b9cbe5 63bc5fd 5b9cbe5 63bc5fd e0c0a15 63bc5fd e0c0a15 b13b929 63bc5fd 9e206b4 b13b929 9e206b4 b13b929 5b9cbe5 63bc5fd 5b9cbe5 63bc5fd b13b929 63bc5fd b13b929 63bc5fd b13b929 5b9cbe5 b13b929 aa04220 b13b929 63bc5fd 5b9cbe5 63bc5fd 5b9cbe5 63bc5fd 5b9cbe5 63bc5fd 5b9cbe5 b13b929 63bc5fd b8f63d6 5b9cbe5 b8f63d6 2ce826b 5b9cbe5 b8f63d6 63bc5fd 5b9cbe5 b8f63d6 5b9cbe5 63bc5fd 9e206b4 63bc5fd 9e206b4 63bc5fd 9e206b4 5b9cbe5 b8f63d6 2ce826b b8f63d6 |
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
#!/usr/bin/env bash
# Ensure we're in the right directory and set up paths
SCRIPT_DIR=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
cd "$SCRIPT_DIR" || exit 1
export DATA_DIR="/app/backend/data"
export PYTHONPATH="/app/backend:${PYTHONPATH}"
# Validate required environment variables
for var in "BACKUP_PASSPHRASE" "HF_TOKEN" "SPACE_ID"; do
if [ -z "${!var}" ]; then
echo "Error: $var is not set. Required for database backup/restore."
exit 1
fi
done
# Restore database from backup
echo "Restoring database from backup..."
python "$SCRIPT_DIR/scripts/restore.py"
restore_status=$?
if [ $restore_status -ne 0 ]; then
echo "Warning: Database restore failed. Starting with empty database."
fi
# Handle WebUI secret key
KEY_FILE="$SCRIPT_DIR/.webui_secret_key"
PORT="${PORT:-8080}"
HOST="${HOST:-0.0.0.0}"
if test "$WEBUI_SECRET_KEY $WEBUI_JWT_SECRET_KEY" = " "; then
if ! [ -e "$KEY_FILE" ]; then
head -c 12 /dev/random | base64 > "$KEY_FILE" || exit 1
fi
WEBUI_SECRET_KEY=$(cat "$KEY_FILE") || exit 1
fi
# Start Ollama if enabled
if [[ "${USE_OLLAMA_DOCKER,,}" == "true" ]]; then
ollama serve &
fi
# Configure CUDA if enabled
if [[ "${USE_CUDA_DOCKER,,}" == "true" ]]; then
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib/python3.11/site-packages/torch/lib:/usr/local/lib/python3.11/site-packages/nvidia/cudnn/lib"
fi
# Handle HuggingFace Space deployment
if [ -n "$SPACE_ID" ]; then
echo "Configuring HuggingFace Space deployment"
if [ -n "$ADMIN_USER_EMAIL" ] && [ -n "$ADMIN_USER_PASSWORD" ]; then
WEBUI_SECRET_KEY="$WEBUI_SECRET_KEY" uvicorn open_webui.main:app --host "$HOST" --port "$PORT" --forwarded-allow-ips '*' &
webui_pid=$!
while ! curl -s http://localhost:8080/health > /dev/null; do
sleep 1
done
curl \
-X POST "http://localhost:8080/api/v1/auths/signup" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{ \"email\": \"${ADMIN_USER_EMAIL}\", \"password\": \"${ADMIN_USER_PASSWORD}\", \"name\": \"Admin\" }"
kill $webui_pid
fi
export WEBUI_URL=${SPACE_HOST}
fi
# Start the main web server
WEBUI_SECRET_KEY="$WEBUI_SECRET_KEY" uvicorn open_webui.main:app \
--host "$HOST" --port "$PORT" --forwarded-allow-ips '*' &
WEBUI_PID=$!
# Configure and start backup scheduler
BACKUP_INITIAL_WAIT="${BACKUP_INITIAL_WAIT:-100}"
BACKUP_INTERVAL="${BACKUP_INTERVAL:-300}"
(
echo "Starting backup scheduler (Initial wait: ${BACKUP_INITIAL_WAIT}s, Interval: ${BACKUP_INTERVAL}s)"
sleep "$BACKUP_INITIAL_WAIT"
while true; do
echo "Running scheduled backup"
BACKUP_THRESHOLD_MINUTES="${BACKUP_THRESHOLD_MINUTES:-120}" \
python "$SCRIPT_DIR/scripts/backup.py"
if [ $? -ne 0 ]; then
echo "Warning: Backup failed"
fi
sleep "$BACKUP_INTERVAL"
done
) &
# Wait for the main process
wait $WEBUI_PID
|