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