start.sh 2.13 KB
Newer Older
1
2
#!/usr/bin/env bash

Mike Slinn's avatar
Mike Slinn committed
3
4
5
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
cd "$SCRIPT_DIR" || exit

6
7
KEY_FILE=.webui_secret_key

8
PORT="${PORT:-8080}"
9
HOST="${HOST:-0.0.0.0}"
Tim Farrell's avatar
Tim Farrell committed
10
if test "$WEBUI_SECRET_KEY $WEBUI_JWT_SECRET_KEY" = " "; then
11
  echo "Loading WEBUI_SECRET_KEY from file, not provided as an environment variable."
12
13

  if ! [ -e "$KEY_FILE" ]; then
14
    echo "Generating WEBUI_SECRET_KEY"
15
    # Generate a random value to use as a WEBUI_SECRET_KEY in case the user didn't provide one.
16
    echo $(head -c 12 /dev/random | base64) > "$KEY_FILE"
17
18
  fi

19
20
  echo "Loading WEBUI_SECRET_KEY from $KEY_FILE"
  WEBUI_SECRET_KEY=$(cat "$KEY_FILE")
21
22
fi

Jannik Streidl's avatar
Jannik Streidl committed
23
24
if [ "$USE_OLLAMA_DOCKER" = "true" ]; then
    echo "USE_OLLAMA is set to true, starting ollama serve."
25
    ollama serve &
26
27
fi

Jannik Streidl's avatar
Jannik Streidl committed
28
29
if [ "$USE_CUDA_DOCKER" = "true" ]; then
  echo "CUDA is enabled, appending LD_LIBRARY_PATH to include torch/cudnn & cublas libraries."
30
  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"
Jannik Streidl's avatar
Jannik Streidl committed
31
32
fi

Timothy J. Baek's avatar
Timothy J. Baek committed
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

# Check if SPACE_ID is set, if so, configure for space
if [ -n "$SPACE_ID" ]; then
  echo "Configuring for HuggingFace Space deployment"
  
  # Copy litellm_config.yaml with specified ownership
  echo "Copying litellm_config.yaml to the desired location with specified ownership..."
  cp ./backend/space/litellm_config.yaml ./data/litellm/config.yaml

  WEBUI_SECRET_KEY="$WEBUI_SECRET_KEY" uvicorn main:app --host "$HOST" --port "$PORT" --forwarded-allow-ips '*' &
  webui_pid=$!
  echo "Waiting for webui to start..."
  while ! curl -s http://localhost:8080/health > /dev/null; do
    sleep 1
  done
  echo "Creating admin user..."
  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\" }"
  echo "Shutting down webui..."
  kill $webui_pid
  export WEBUI_URL=${SPACE_HOST}
fi

59
WEBUI_SECRET_KEY="$WEBUI_SECRET_KEY" exec uvicorn main:app --host "$HOST" --port "$PORT" --forwarded-allow-ips '*'