mirror of
https://github.com/open-webui/open-webui.git
synced 2026-08-13 01:02:25 -06:00
2207876ae7
The key generation loop redirected input from a non-existent file (`SET /p WEBUI_SECRET_KEY=<!random!>>%KEY_FILE%`), printing "The system cannot find the file specified." once per iteration and leaving the key file empty, so startup failed with "WEBUI_SECRET_KEY is not set". Build a fixed-length alphanumeric key by indexing into a charset with %RANDOM% and write it once with `<nul set /p`. Also quote the key file path and use delayed expansion so paths with spaces work. Claude-Session: https://claude.ai/code/session_01CmgBivWjad68mX4yBVWMi2 Co-authored-by: Claude <noreply@anthropic.com>
60 lines
2.2 KiB
Batchfile
60 lines
2.2 KiB
Batchfile
:: This method is not recommended, and we recommend you use the `start.sh` file with WSL instead.
|
|
@echo off
|
|
SETLOCAL ENABLEDELAYEDEXPANSION
|
|
|
|
:: Get the directory of the current script
|
|
SET "SCRIPT_DIR=%~dp0"
|
|
cd /d "%SCRIPT_DIR%" || exit /b
|
|
|
|
:: Add conditional Playwright browser installation
|
|
IF /I "%WEB_LOADER_ENGINE%" == "playwright" (
|
|
IF "%PLAYWRIGHT_WS_URL%" == "" (
|
|
echo Installing Playwright browsers...
|
|
playwright install chromium
|
|
playwright install-deps chromium
|
|
)
|
|
|
|
python -c "import nltk; nltk.download('punkt_tab')"
|
|
)
|
|
|
|
SET "KEY_FILE=.webui_secret_key"
|
|
IF NOT "%WEBUI_SECRET_KEY_FILE%" == "" (
|
|
SET "KEY_FILE=%WEBUI_SECRET_KEY_FILE%"
|
|
)
|
|
|
|
IF "%PORT%"=="" SET PORT=8080
|
|
IF "%HOST%"=="" SET HOST=0.0.0.0
|
|
IF "%FORWARDED_ALLOW_IPS%"=="" SET "FORWARDED_ALLOW_IPS='*'"
|
|
SET "WEBUI_SECRET_KEY=%WEBUI_SECRET_KEY%"
|
|
SET "WEBUI_JWT_SECRET_KEY=%WEBUI_JWT_SECRET_KEY%"
|
|
IF "%WEBUI_SECRET_KEY_LENGTH%" == "" (
|
|
SET "WEBUI_SECRET_KEY_LENGTH=24"
|
|
)
|
|
|
|
:: Check if WEBUI_SECRET_KEY and WEBUI_JWT_SECRET_KEY are not set
|
|
IF "%WEBUI_SECRET_KEY% %WEBUI_JWT_SECRET_KEY%" == " " (
|
|
echo Loading WEBUI_SECRET_KEY from file, not provided as an environment variable.
|
|
|
|
IF NOT EXIST "!KEY_FILE!" (
|
|
echo Generating WEBUI_SECRET_KEY
|
|
:: Generate a random value to use as a WEBUI_SECRET_KEY in case the user didn't provide one
|
|
SET "CHARSET=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
SET "WEBUI_SECRET_KEY="
|
|
FOR /L %%i IN (1,1,!WEBUI_SECRET_KEY_LENGTH!) DO (
|
|
SET /A "INDEX=!RANDOM! %% 62"
|
|
FOR %%j IN (!INDEX!) DO SET "WEBUI_SECRET_KEY=!WEBUI_SECRET_KEY!!CHARSET:~%%j,1!"
|
|
)
|
|
<nul SET /p="!WEBUI_SECRET_KEY!">"!KEY_FILE!"
|
|
echo WEBUI_SECRET_KEY generated
|
|
)
|
|
|
|
echo Loading WEBUI_SECRET_KEY from !KEY_FILE!
|
|
SET /p WEBUI_SECRET_KEY=<"!KEY_FILE!"
|
|
)
|
|
|
|
:: Execute uvicorn
|
|
SET "WEBUI_SECRET_KEY=%WEBUI_SECRET_KEY%"
|
|
IF "%UVICORN_WORKERS%"=="" SET UVICORN_WORKERS=1
|
|
uvicorn open_webui.main:app --host "%HOST%" --port "%PORT%" --forwarded-allow-ips %FORWARDED_ALLOW_IPS% --workers %UVICORN_WORKERS% --ws auto
|
|
:: For ssl user uvicorn open_webui.main:app --host "%HOST%" --port "%PORT%" --forwarded-allow-ips '*' --ssl-keyfile "key.pem" --ssl-certfile "cert.pem" --ws auto
|