From 8da0d9f76be2b3951ce4423012bfb3abc32d43d8 Mon Sep 17 00:00:00 2001 From: silentoplayz Date: Fri, 28 Nov 2025 20:49:25 -0500 Subject: [PATCH] refac --- .../manual-database-migration.md | 103 ++++++++++++------ 1 file changed, 72 insertions(+), 31 deletions(-) diff --git a/docs/troubleshooting/manual-database-migration.md b/docs/troubleshooting/manual-database-migration.md index 23cc31a..a3f2297 100644 --- a/docs/troubleshooting/manual-database-migration.md +++ b/docs/troubleshooting/manual-database-migration.md @@ -126,22 +126,61 @@ Before attempting any fixes, gather information about your database state. -### Run Diagnostic Commands +### Navigate to Alembic Directory and Set Environment -Navigate to the directory containing `alembic.ini`: +Navigate to the directory containing `alembic.ini` and configure required environment variables: -```bash title="Terminal - Navigate to Alembic Directory" +```bash title="Terminal - Navigate and Configure Environment" +# Navigate to Alembic directory cd /app/backend/open_webui # Docker # OR cd /path/to/open-webui/backend/open_webui # Local + +# Verify alembic.ini exists +ls -la alembic.ini ``` +### Set Required Environment Variables + +```bash title="Terminal - Set Environment Variables" +# Required: Database URL +# For Docker with SQLite (4 slashes for absolute path) +export DATABASE_URL="sqlite:////app/backend/data/webui.db" + +# For local install with SQLite (relative path) +export DATABASE_URL="sqlite:///../data/webui.db" + +# For PostgreSQL +export DATABASE_URL="postgresql://user:password@localhost:5432/open_webui_db" + +# Required: WEBUI_SECRET_KEY +# Get from existing file +export WEBUI_SECRET_KEY=$(cat /app/backend/data/.webui_secret_key) + +# If .webui_secret_key doesn't exist, generate one +# export WEBUI_SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_hex(32))") +# echo $WEBUI_SECRET_KEY > /app/backend/data/.webui_secret_key + +# Verify both are set +echo "DATABASE_URL: $DATABASE_URL" +echo "WEBUI_SECRET_KEY: ${WEBUI_SECRET_KEY:0:10}..." +``` + +:::danger Both Variables Required +Alembic commands will fail with `Required environment variable not found` if `WEBUI_SECRET_KEY` is missing. Open WebUI's code imports `env.py` which validates this variable exists before Alembic can even connect to the database. +::: + +:::warning Path Syntax for SQLite + +- `sqlite:////app/...` = 4 slashes total (absolute path: `sqlite://` + `/` + `/app/...`) +- `sqlite:///../data/...` = 3 slashes total (relative path) +::: + +### Run Diagnostic Commands + Execute these read-only diagnostic commands: ```bash title="Terminal - Diagnostics (Safe - Read Only)" -# Verify alembic.ini exists -ls -la alembic.ini - # Check current migration version alembic current -v @@ -194,30 +233,7 @@ Verify what's actually in your database: -## Step 3: Configure Environment - -Set required environment variables for manual Alembic execution. - -```bash title="Terminal - Set Environment Variables" -# Required: Database URL -# For Docker with SQLite (note the 4 slashes for absolute path) -export DATABASE_URL="sqlite:////app/backend/data/webui.db" - -# For local install with SQLite (relative path from open_webui directory) -export DATABASE_URL="sqlite:///../data/webui.db" - -# For PostgreSQL -export DATABASE_URL="postgresql://user:password@localhost:5432/open_webui_db" -``` - -:::warning Path Syntax for SQLite - -- `sqlite:////app/...` = 4 slashes total (absolute path) -- `sqlite:///data/...` = 3 slashes total (relative path) -- The extra slash after `sqlite:///` makes it absolute -::: - -## Step 4: Apply Migrations +## Step 3: Apply Migrations ### Standard Upgrade (Most Common) @@ -275,7 +291,7 @@ alembic downgrade alembic downgrade base ``` -## Step 5: Verify Migration Success +## Step 4: Verify Migration Success After running migrations, confirm everything is correct: @@ -325,6 +341,31 @@ INFO: [main] Open WebUI starting on http://0.0.0.0:8080 ## Troubleshooting +### "Required environment variable not found" + +**Cause:** `WEBUI_SECRET_KEY` environment variable is missing. + +**Solution:** + +```bash title="Terminal - Fix Missing Secret Key" +# Method 1: Use existing key from file +export WEBUI_SECRET_KEY=$(cat /app/backend/data/.webui_secret_key) + +# Method 2: If file doesn't exist, generate new key +export WEBUI_SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_hex(32))") +echo $WEBUI_SECRET_KEY > /app/backend/data/.webui_secret_key + +# Verify it's set +echo "WEBUI_SECRET_KEY: ${WEBUI_SECRET_KEY:0:10}..." + +# Try alembic again +alembic current -v +``` + +:::warning Why This Happens +Open WebUI's `env.py` file imports models, which import `open_webui.env`, which validates that `WEBUI_SECRET_KEY` exists. Without it, Python crashes before Alembic can even connect to the database. +::: + ### "No config file 'alembic.ini' found" **Cause:** You're in the wrong directory.