File size: 2,897 Bytes
75384c4 4039953 6e9889f 75384c4 588db55 75384c4 3a0381f 84009f4 a86db57 84009f4 75384c4 |
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 99 100 101 102 103 104 105 106 107 108 |
#!/bin/bash
set -e
# Use /tmp for all writable data
export DATA_DIR="${DATA_DIR:-/tmp/app/data}"
export HF_STORAGE_REPO="${HF_STORAGE_REPO:-nxdev-org/open-webui-storage}"
export SYNC_INTERVAL="${SYNC_INTERVAL:-300}"
# Set all HuggingFace and cache directories to /tmp
export HF_HOME="/tmp/hf_cache"
export HUGGINGFACE_HUB_CACHE="/tmp/hf_cache"
export TRANSFORMERS_CACHE="/tmp/hf_cache"
export SENTENCE_TRANSFORMERS_HOME="/tmp/hf_cache"
# Override Open WebUI environment variables
export STATIC_DIR="/tmp/static"
export UPLOAD_DIR="/tmp/uploads"
echo "Starting Open WebUI with HF Dataset persistence..."
echo "Data directory: $DATA_DIR"
echo "HF Repository: $HF_STORAGE_REPO"
echo "HF Cache: $HF_HOME"
# Create all necessary directories
#mkdir -p "$DATA_DIR" "$HF_HOME" "$STATIC_DIR" "$UPLOAD_DIR"
#mkdir -p "$DATA_DIR"
# && chmod 777 "$DATA_DIR"
#mkdir -p "$HF_HOME" && chmod 777 "$HF_HOME"
#mkdir -p "$STATIC_DIR" && chmod 777 "$STATIC_DIR"
#mkdir -p "$UPLOAD_DIR" && chmod 777 "$UPLOAD_DIR"
# Test write permissions
#if touch "$DATA_DIR/test" 2>/dev/null; then
# rm "$DATA_DIR/test"
# echo "Data directory is writable"
#else
# echo "Warning: Data directory may not be writable"
#fi
# Check if HF_TOKEN is set
if [ -z "$HF_TOKEN" ]; then
echo "Warning: HF_TOKEN not set. Sync functionality will be limited."
else
echo "HF_TOKEN is set, proceeding with sync..."
fi
# Download existing data on startup
echo "Syncing data from Hugging Face..."
python3 /app/sync_storage.py download
# Function to handle graceful shutdown
cleanup() {
echo "Shutting down gracefully..."
# Upload final data state
# if [ -n "$HF_TOKEN" ]; then
# echo "Uploading final data state..."
# python3 /app/sync_storage.py upload
# fi
# Kill background processes
#kill $SYNC_PID 2>/dev/null || true
#kill $TASK_PID 2>/dev/null || true
exit 0
}
# Set up signal handlers
trap cleanup SIGTERM SIGINT
#trap "echo 'Cleanup triggered'; exit 0" SIGTERM SIGINT
# Background sync function
background_sync() {
if [ -n "$HF_TOKEN" ]; then
while true; do
sleep $SYNC_INTERVAL
echo "Periodic sync to Hugging Face..."
python3 /app/sync_storage.py upload
done
else
echo "Skipping background sync - no HF_TOKEN"
while true; do
sleep 3600
done
fi
}
# Start background sync
background_sync &
SYNC_PID=$!
# Start Open WebUI
echo "Starting caddy..."
# Start readeck in background
#cp -r /app/openlist /tmp/
#cd /tmp/openlist && /app/openlist/openlist start &
# npm install --prefix /app/Gemini-CLI-2-API
git clone https://github.com/justlovemaki/Gemini-CLI-2-API.git /tmp/Gemini-CLI-2-API
cd /tmp/Gemini-CLI-2-API&& npm install && node src/api-server.js &
/app/caddy/caddy run /app/Caddyfile &
TASK_PID=$!
# Wait for Open WebUI process
wait $TASK_PID
|