openlist / start_with_sync.sh
wwforonce's picture
change Gemini-CLI-2-API path and image
a86db57
#!/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