open-webui-space / start.sh
mr06cpp's picture
Bump, pull in generated configs from personal setup
453e653
#!/usr/bin/env bash
set -euo pipefail
pids=()
generate_litellm_provider() {
provider="$1"
if [[ "$#" -lt 2 ]]; then
>&2 echo "[+] Provider ${provider}: No key needed"
cat "/assets/${provider}.yaml"
return
fi
key_env="$2"
if [[ -n "${!key_env:-}" ]]; then
>&2 echo "[+] Provider ${provider}: Found key ${key_env}"
cat "/assets/${provider}.yaml"
return
fi
>&2 echo "[!] Provider ${provider}: No key found (set ${key_env})"
}
generate_litellm_config() {
echo "model_list:"
generate_litellm_provider "anthropic" "ANTHROPIC_API_KEY"
generate_litellm_provider "github" "GITHUB_API_KEY"
generate_litellm_provider "groq" "GROQ_API_KEY"
generate_litellm_provider "huggingface"
generate_litellm_provider "openai" "OPENAI_API_KEY"
generate_litellm_provider "perplexity" "PERPLEXITY_API_KEY"
if [[ -n "${LITELLM_MODELS_BASE64:-}" ]]; then
echo "${LITELLM_MODELS_BASE64}" | base64 -d
fi
}
start_litellm() {
(
# KISS: No persistence for LiteLLM
unset DATABASE_URL
litellm \
--host "127.0.0.1" \
--port "4000" \
--config /tmp/litellm_config.yaml
) &
pids+=("$!")
}
start_open_webui() {
(
# By default, we expect it to be deployed to a private HF Space.
# You can enable WEBUI_AUTH as needed
if [[ -z "${WEBUI_AUTH:-}" ]]; then
>&2 echo "[!] Enabling single user mode"
export WEBUI_AUTH="False"
fi
# The less the user needs to configure, the better :)
if [[ -n "${OPENAI_API_KEY:-}" ]] && [[ -z "${WEBUI_SECRET_KEY:-}${WEBUI_JWT_SECRET_KEY:-}" ]]; then
>&2 echo "[!] Using OpenAI API key as Web UI secret key"
export WEBUI_SECRET_KEY="${OPENAI_API_KEY}"
fi
if [[ -z "${ENABLE_RAG_WEB_SEARCH:-}${RAG_WEB_SEARCH_ENGINE:-}" ]]; then
if [[ -n "${BRAVE_SEARCH_API_KEY:-}" ]]; then
export RAG_WEB_SEARCH_ENGINE="brave"
export ENABLE_RAG_WEB_SEARCH="True"
fi
fi
if [[ -z "${DATABASE_URL:-}" ]]; then
unset DATABASE_URL
fi
export ENABLE_OLLAMA_API="${ENABLE_OLLAMA_API:-False}"
export OPENAI_API_BASE_URLS="http://localhost:4000"
export OPENAI_API_KEY="sk-unused"
export ENABLE_IMAGE_GENERATION="True"
export IMAGES_OPENAI_API_BASE_URL="http://localhost:4000"
export IMAGES_OPENAI_API_KEY="sk-unused"
export PGSSLCERT=/tmp/postgresql.crt
env
/app/backend/start.sh
) &
pids+=("$!")
}
wait_litellm() {
while ! curl -s http://localhost:4000 >/dev/null; do
>&2 echo "[!] Waiting for LiteLLM..."
sleep 1
done
}
generate_litellm_config >/tmp/litellm_config.yaml
>&2 cat /tmp/litellm_config.yaml
start_litellm
wait_litellm
start_open_webui
for pid in "${pids[@]}"; do
wait "$pid"
done