#!/usr/bin/env bash # ------------------------------------------------------------------ # 07_start_openwebui.sh # Starts Open WebUI connected to the vLLM inference server. # # Open WebUI provides a ChatGPT-like interface with: # - User accounts & chat history (persisted in openwebui-data/) # - Model selector (auto-discovers models from vLLM) # - Streaming responses, markdown rendering, code highlighting # # The first user to sign up becomes the admin. # # Usage: # bash 07_start_openwebui.sh # defaults # PORT=7082 bash 07_start_openwebui.sh # custom port # VLLM_BASE_URL=http://localhost:7080/v1 bash 07_start_openwebui.sh # # Environment variables: # PORT — HTTP port for Open WebUI (default: 7081) # VLLM_BASE_URL — vLLM OpenAI-compatible URL (default: http://localhost:7080/v1) # VLLM_API_KEY — API key for vLLM (default: EMPTY) # DATA_DIR — Persistent storage path (default: ./openwebui-data) # ------------------------------------------------------------------ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SIF_FILE="${SCRIPT_DIR}/open-webui.sif" PORT="${PORT:-7081}" VLLM_BASE_URL="${VLLM_BASE_URL:-http://localhost:7080/v1}" VLLM_API_KEY="${VLLM_API_KEY:-EMPTY}" DATA_DIR="${DATA_DIR:-${SCRIPT_DIR}/openwebui-data}" if [ ! -f "$SIF_FILE" ]; then echo "ERROR: Container image not found at ${SIF_FILE}" echo " Run 06_setup_openwebui.sh first." exit 1 fi mkdir -p "$DATA_DIR" echo "=== Starting Open WebUI ===" echo " Port: ${PORT}" echo " vLLM backend: ${VLLM_BASE_URL}" echo " Data directory: ${DATA_DIR}" echo "" echo " Access at: http://$(hostname -f 2>/dev/null || hostname):${PORT}" echo " First user to sign up becomes admin." echo "" echo " Press Ctrl+C to stop." echo "===========================================" echo "" apptainer exec \ --writable-tmpfs \ --pwd /app/backend \ --bind "${DATA_DIR}:/app/backend/data" \ --env PORT="${PORT}" \ --env ENABLE_OPENAI_API="True" \ --env OPENAI_API_BASE_URLS="${VLLM_BASE_URL}" \ --env OPENAI_API_KEYS="${VLLM_API_KEY}" \ --env ENABLE_OLLAMA_API="False" \ --env ENABLE_SIGNUP="True" \ --env DEFAULT_USER_ROLE="user" \ --env WEBUI_NAME="Qwen3.5 LLM Server" \ --env OFFLINE_MODE="True" \ --env ENABLE_VERSION_UPDATE_CHECK="False" \ --env HF_HUB_OFFLINE="1" \ "$SIF_FILE" \ bash start.sh