diff --git a/docs/contributing.mdx b/docs/contributing.mdx index 5e4111b7..0acd9513 100644 --- a/docs/contributing.mdx +++ b/docs/contributing.mdx @@ -3,9 +3,6 @@ sidebar_position: 1600 title: "🀝 Contributing" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - πŸš€ **Welcome, Contributors!** πŸš€ diff --git a/docs/faq.mdx b/docs/faq.mdx index 8d3ffde1..e9194cf6 100644 --- a/docs/faq.mdx +++ b/docs/faq.mdx @@ -3,9 +3,6 @@ sidebar_position: 1200 title: "❓ FAQ" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - ### Q: How can I get support or ask for help? diff --git a/docs/features/chat-conversations/chat-features/reasoning-models.mdx b/docs/features/chat-conversations/chat-features/reasoning-models.mdx index 2c9a6108..8651cf28 100644 --- a/docs/features/chat-conversations/chat-features/reasoning-models.mdx +++ b/docs/features/chat-conversations/chat-features/reasoning-models.mdx @@ -3,9 +3,6 @@ sidebar_position: 10 title: "Reasoning & Thinking Models" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - # Reasoning & Thinking Models diff --git a/docs/features/extensibility/mcp.mdx b/docs/features/extensibility/mcp.mdx index cdf542a8..f1db3349 100644 --- a/docs/features/extensibility/mcp.mdx +++ b/docs/features/extensibility/mcp.mdx @@ -1,6 +1,6 @@ --- title: Model Context Protocol (MCP) -sidebar_position: 1200 +sidebar_position: 200 --- Open WebUI natively supports **MCP (Model Context Protocol)** starting in **v0.6.31**. This page shows how to enable it quickly, harden it for production, and troubleshoot common snags. diff --git a/docs/features/extensibility/open-terminal/index.md b/docs/features/extensibility/open-terminal/index.md index 3ddfdb8e..a166e0ac 100644 --- a/docs/features/extensibility/open-terminal/index.md +++ b/docs/features/extensibility/open-terminal/index.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 3 title: "Open Terminal" --- diff --git a/docs/features/extensibility/pipelines/index.mdx b/docs/features/extensibility/pipelines/index.mdx index d27376ae..8ef3b2d1 100644 --- a/docs/features/extensibility/pipelines/index.mdx +++ b/docs/features/extensibility/pipelines/index.mdx @@ -3,9 +3,6 @@ sidebar_position: 1 title: "Pipelines" --- -import { TopBanners } from "@site/src/components/TopBanners"; - -
diff --git a/docs/features/extensibility/plugin/index.mdx b/docs/features/extensibility/plugin/index.mdx index 20842e2d..d1bd7aac 100644 --- a/docs/features/extensibility/plugin/index.mdx +++ b/docs/features/extensibility/plugin/index.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 300 +sidebar_position: 100 title: "Tools & Functions (Plugins)" --- diff --git a/docs/features/extensibility/plugin/tools/openapi-servers/index.mdx b/docs/features/extensibility/plugin/tools/openapi-servers/index.mdx index 8fb9a67f..47ca2e6b 100644 --- a/docs/features/extensibility/plugin/tools/openapi-servers/index.mdx +++ b/docs/features/extensibility/plugin/tools/openapi-servers/index.mdx @@ -3,9 +3,6 @@ sidebar_position: 400 title: "OpenAPI Tool Servers" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - # 🌟 OpenAPI Tool Servers diff --git a/docs/features/index.mdx b/docs/features/index.mdx index 54f7723b..463df4cd 100644 --- a/docs/features/index.mdx +++ b/docs/features/index.mdx @@ -3,9 +3,6 @@ sidebar_position: 200 title: "⭐ Features" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - ## Key Features of Open WebUI ⭐ diff --git a/docs/getting-started/advanced-topics/index.mdx b/docs/getting-started/advanced-topics/index.mdx index 534ea829..70eaaffb 100644 --- a/docs/getting-started/advanced-topics/index.mdx +++ b/docs/getting-started/advanced-topics/index.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 4 +sidebar_position: 999 title: "Advanced Topics" --- diff --git a/docs/getting-started/development.md b/docs/getting-started/development.md index 1ef0e4b3..ff563174 100644 --- a/docs/getting-started/development.md +++ b/docs/getting-started/development.md @@ -1,5 +1,5 @@ --- -sidebar_position: 3 +sidebar_position: 998 title: "Local Development Guide" --- diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 4e5da4ac..aeb54f96 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -3,9 +3,6 @@ sidebar_position: 100 title: "πŸš€ Getting Started" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - --- diff --git a/docs/getting-started/quick-start/connect-a-provider/starting-with-openai-compatible.mdx b/docs/getting-started/quick-start/connect-a-provider/starting-with-openai-compatible.mdx index 4758ddbb..ab8ea50a 100644 --- a/docs/getting-started/quick-start/connect-a-provider/starting-with-openai-compatible.mdx +++ b/docs/getting-started/quick-start/connect-a-provider/starting-with-openai-compatible.mdx @@ -223,31 +223,40 @@ If running Open WebUI in Docker and your model server is on the host machine, re - **Amazon Bedrock** is a fully managed AWS service that provides access to foundation models from leading AI companies (Anthropic, Meta, Mistral, Cohere, Stability AI, Amazon, and more) through a single API. Bedrock does **not** natively expose an OpenAI-compatible API, so you need to run the **Bedrock Access Gateway (BAG)** β€” a middleware proxy that translates OpenAI API calls to Bedrock SDK calls. + **Amazon Bedrock** is a fully managed AWS service that provides access to foundation models from leading AI companies (Anthropic, Meta, Mistral, Cohere, Stability AI, Amazon, and more) through a single API. - | Setting | Value | - |---|---| - | **URL** | `http://host.docker.internal:8000/api/v1` | - | **API Key** | `bedrock` (default BAG key β€” change via `DEFAULT_API_KEYS` in BAG config) | - | **Model IDs** | Auto-detected from your enabled Bedrock models | + There are multiple OpenAI-compatible ways to connect Open WebUI to AWS Bedrock: + + * **Bedrock Access Gateway** (BAG) + * **stdapi.ai** + * **LiteLLM** with its Bedrock provider (LiteLLM is not dedicated to AWS). + * **Bedrock Mantle** - AWS native solution, no installation required + + #### Feature Comparison + + | Capability | Bedrock Access Gateway (BAG) | stdapi.ai | LiteLLM (Bedrock provider) | AWS Bedrock Mantle | + |------------------------------| --- | --- | --- | --- | + | Automatic models discovery | βœ… | βœ… | β€” | βœ… | + | Chat completion | βœ… | βœ… | βœ… | βœ… | + | Embeddings | βœ… | βœ… | βœ… | β€” | + | Text to speech | β€” | βœ… | β€” | β€” | + | Speech to text | β€” | βœ… | β€” | β€” | + | Image generation | β€” | βœ… | βœ… | β€” | + | Image editing | β€” | βœ… | β€” | β€” | + | Models from multiple regions | β€” | βœ… | βœ… | β€” | + | No installation required | β€” | β€” | β€” | βœ… | + | License | MIT | AGPL or Commercial | MIT or Commercial | AWS Service | + + #### Solution 1: Bedrock Access Gateway (BAG) + + **Prerequisites** - **Prerequisites:** - An active AWS account - An active AWS Access Key and Secret Key - IAM permissions in AWS to enable Bedrock models (or already enabled models) - Docker installed on your system - To learn more about Bedrock, visit the [Amazon Bedrock Official Page](https://aws.amazon.com/bedrock/). - - **Step 1: Verify Access to Amazon Bedrock Base Models** - - Before integrating, verify you have access to at least one base model. You'll know if you have access if it says "Access Granted" next to the model. If you don't have access to any models, the next steps will fail. - - AWS provides documentation for requesting model access in the [Amazon Bedrock Model Access docs](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html). - - ![Amazon Bedrock Base Models](/images/tutorials/amazon-bedrock/amazon-bedrock-base-models.png) - - **Step 2: Configure the Bedrock Access Gateway** + **Step 1: Configure the Bedrock Access Gateway** The BAG is a proxy developed by AWS that wraps around the native Bedrock SDK and exposes OpenAI-compatible endpoints. Here's the endpoint mapping: @@ -281,7 +290,7 @@ If running Open WebUI in Docker and your model server is on the host machine, re ![Bedrock Access Gateway Swagger](/images/tutorials/amazon-bedrock/amazon-bedrock-proxy-api.png) - **Step 3: Add Connection in Open WebUI** + **Step 2: Add Connection in Open WebUI** 1. Under the **Admin Panel**, go to **Settings** β†’ **Connections**. 2. Use the **+** button to add a new connection under OpenAI. @@ -291,15 +300,163 @@ If running Open WebUI in Docker and your model server is on the host machine, re ![Add New Connection](/images/tutorials/amazon-bedrock/amazon-bedrock-proxy-connection.png) - **Step 4: Start Using Bedrock Models** + **Other Helpful Tutorials** - You should now see all your enabled Bedrock models available in the model selector. + - [Connecting Open WebUI to AWS Bedrock](https://gauravve.medium.com/connecting-open-webui-to-aws-bedrock-a1f0082c8cb2) + - [Using Amazon Bedrock with Open WebUI for Sensitive Data](https://jrpospos.blog/posts/2024/08/using-amazon-bedrock-with-openwebui-when-working-with-sensitive-data/) + + #### Solution 2: stdapi.ai + + [stdapi.ai](https://stdapi.ai/) is an OpenAI-compatible API gateway you deploy in your AWS account, or run locally using Docker. + + Open WebUI connects to it as if it were OpenAI, and stdapi.ai routes requests to Bedrock and other AWS AI services such as Amazon Polly and Transcribe. It also supports multi-region access to Bedrock, making it easier to reach more models that may only be available in specific AWS regions. + + **Deploying on AWS** + + stdapi.ai provides a full Terraform sample that provisions Open WebUI on ECS Fargate, connects it to stdapi.ai, and includes supporting services like Elasticache Valkey, Aurora PostgreSQL with vector extension, SearXNG, and Playwright. + This method handles both the stdapi.ai and Open WebUI configuration: + + - [stdapi.ai Documentation - Open WebUI integration](https://stdapi.ai/use_cases_openwebui/) + - [stdapi-ai GitHub - Open WebUI Terraform sample](https://github.com/stdapi-ai/samples/tree/main/getting_started_openwebui) + + stdapi.ai also provides documentation and Terraform samples to deploy it independently if you prefer to connect it to an existing Open WebUI instance. + + - [stdapi.ai Documentation - Getting started](https://stdapi.ai/operations_getting_started/) + + **Deploying Locally** + + stdapi.ai also provides a Docker image for local usage. + + Here is a minimal command to run it using your AWS access key: + ```bash + docker run \ + -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \ + -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \ + -e AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN \ + -e AWS_BEDROCK_REGIONS=us-east-1,us-west-2 \ + -e ENABLE_DOCS=true \ + --rm \ + -p 8000:8000 \ + ghcr.io/stdapi-ai/stdapi.ai-community:latest + ``` + The application is now available at http://localhost:8000 (use it as `YOUR_STDAPI_URL` in the Open WebUI configuration below). + + The `AWS_BEDROCK_REGIONS` variable lets you select regions where you want to load models, in this case `us-east-1` and `us-west-2`. + + If you pass the `ENABLE_DOCS=true` variable, an interactive Swagger documentation page is available at http://localhost:8000/docs. + + `API_KEY=my_secret_password` can also be used to set a custom API key for the application (defaults to no API key required). This is highly recommended if the server is reachable from elsewhere. Use this API key as `YOUR_STDAPI_KEY` in the Open WebUI configuration below. + + Many other configuration options are available; see [the documentation](https://stdapi.ai/operations_configuration/) for more information. + + **Open WebUI Configuration** + + Open WebUI is configured via environment variables, and you can also set the same values from the Open WebUI admin panel. + + Use the same stdapi.ai key for all `*_OPENAI_API_KEY` entries. + + Core connection (chat + background tasks): + + ```bash + OPENAI_API_BASE_URL=YOUR_STDAPI_URL/v1 + OPENAI_API_KEY=YOUR_STDAPI_KEY + # Use a fast, low-cost chat model for `TASK_MODEL_EXTERNAL`. + TASK_MODEL_EXTERNAL=amazon.nova-micro-v1:0 + ``` + + RAG embeddings: + + ```bash + RAG_EMBEDDING_ENGINE=openai + RAG_OPENAI_API_BASE_URL=YOUR_STDAPI_URL/v1 + RAG_OPENAI_API_KEY=YOUR_STDAPI_KEY + RAG_EMBEDDING_MODEL=cohere.embed-v4:0 + ``` + + Image generation: + + ```bash + ENABLE_IMAGE_GENERATION=true + IMAGE_GENERATION_ENGINE=openai + IMAGES_OPENAI_API_BASE_URL=YOUR_STDAPI_URL/v1 + IMAGES_OPENAI_API_KEY=YOUR_STDAPI_KEY + IMAGE_GENERATION_MODEL=stability.stable-image-core-v1:1 + ``` + + Image editing: + + ```bash + ENABLE_IMAGE_EDIT=true + IMAGE_EDIT_ENGINE=openai + IMAGES_EDIT_OPENAI_API_BASE_URL=YOUR_STDAPI_URL/v1 + IMAGES_EDIT_OPENAI_API_KEY=YOUR_STDAPI_KEY + IMAGE_EDIT_MODEL=stability.stable-image-control-structure-v1:0 + ``` + + Speech to text (STT): + + ```bash + AUDIO_STT_ENGINE=openai + AUDIO_STT_OPENAI_API_BASE_URL=YOUR_STDAPI_URL/v1 + AUDIO_STT_OPENAI_API_KEY=YOUR_STDAPI_KEY + AUDIO_STT_MODEL=amazon.transcribe + ``` + + Text to speech (TTS): + + ```bash + AUDIO_TTS_ENGINE=openai + AUDIO_TTS_OPENAI_API_BASE_URL=YOUR_STDAPI_URL/v1 + AUDIO_TTS_OPENAI_API_KEY=YOUR_STDAPI_KEY + AUDIO_TTS_MODEL=amazon.polly-neural + ``` + + If you see inconsistent auto-detection for TTS languages, set a fixed language in stdapi.ai (for example, `DEFAULT_TTS_LANGUAGE=en-US`). + + #### Solution 3: AWS Bedrock Mantle + + [Bedrock Mantle](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-mantle.html) is an AWS-native solution that provides an OpenAI-compatible API endpoint for Amazon Bedrock without requiring any additional infrastructure or installation. This makes it the simplest integration option for accessing Bedrock models. + + **Key Advantages** + + - No installation required - Uses AWS-managed endpoints directly + - Simple configuration - Just requires an API key + - Native AWS integration - Fully managed by AWS + + **Limitations** + + - Chat completion only - Does not support embeddings, image generation, or other features + - Subset of models - Only provides access to a limited selection of Bedrock models (Open weight models) + - Single region - Does not support multi-region access + + **Prerequisites** + + - An active AWS account + - An [Amazon Bedrock API key](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html) (create one from the AWS console) + - IAM permissions to use Bedrock models (recommended: `AmazonBedrockMantleInferenceAccess` IAM policy) + + **Configuration** + + Configure Open WebUI using environment variables: + + ```bash + OPENAI_API_BASE_URL=https://bedrock.us-east-1.api.aws/v1 + OPENAI_API_KEY=your_bedrock_api_key + ``` + + Replace `your_bedrock_api_key` with the [Amazon Bedrock API key](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html) you created. + + Replace `us-east-1` in the URL with your preferred AWS region (e.g., `us-west-2`, `eu-west-1`, etc.). + + You can also set the same values from the Open WebUI admin panel. + + For more information, see the [Bedrock Mantle documentation](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-mantle.html). + + #### Start using Bedrock Base Models ![Use Bedrock Models](/images/tutorials/amazon-bedrock/amazon-bedrock-models-in-oui.png) - **Other helpful tutorials:** - - [Connecting Open WebUI to AWS Bedrock](https://gauravve.medium.com/connecting-open-webui-to-aws-bedrock-a1f0082c8cb2) - - [Using Amazon Bedrock with Open WebUI for Sensitive Data](https://jrpospos.blog/posts/2024/08/using-amazon-bedrock-with-openwebui-when-working-with-sensitive-data/) + You should now see all your Bedrock models available! diff --git a/docs/getting-started/quick-start/index.mdx b/docs/getting-started/quick-start/index.mdx index 5b0d7b37..972ad92b 100644 --- a/docs/getting-started/quick-start/index.mdx +++ b/docs/getting-started/quick-start/index.mdx @@ -5,7 +5,7 @@ title: "Quick Start" import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -import { TopBanners } from "@site/src/components/TopBanners"; + import DockerCompose from './tab-docker/DockerCompose.md'; import Extension from './tab-docker/DockerDesktopExtension.md'; @@ -22,7 +22,7 @@ import Uv from './tab-python/Uv.md'; import Conda from './tab-python/Conda.md'; import PythonUpdating from './tab-python/PythonUpdating.md'; - + :::info diff --git a/docs/getting-started/updating.mdx b/docs/getting-started/updating.mdx index e4175556..19be30f5 100644 --- a/docs/getting-started/updating.mdx +++ b/docs/getting-started/updating.mdx @@ -11,625 +11,154 @@ import TabItem from '@theme/TabItem'; Keeping Open WebUI updated ensures you have the latest features, security patches, and bug fixes. You can update manually or automate the process using container update tools. :::info Before Updating -- **Backup your data** before major version updates -- **Check release notes** at https://github.com/open-webui/open-webui/releases for breaking changes -- **Clear browser cache** after updating to ensure the latest web interface loads -- **Running Multiple Workers?** If you use `UVICORN_WORKERS > 1`, you **MUST** ensure migrations run safely by either: - 1. Running the updated container with `UVICORN_WORKERS=1` first. - 2. Designating a master worker using `ENABLE_DB_MIGRATIONS=True` (default) on one instance and `False` on others. - Once migrations complete, you can run with multiple workers normally. -::: - -:::tip Help Us Test Before Release - -**Want to catch bugs before they hit stable releases?** Consider running the [development branch](/#using-the-dev-branch-) instead. Testing dev builds is one of the most valuable contributions you can make. - +- **Backup your data** β€” especially before releases that include database migrations, since they can be hard to undo. Check [release notes](https://github.com/open-webui/open-webui/releases) for breaking changes +- **Clear browser cache** after updating (Ctrl+F5 / Cmd+Shift+R) +- **Multiple workers/replicas?** Run migrations with `UVICORN_WORKERS=1` first, or set `ENABLE_DB_MIGRATIONS=False` on all but one instance ::: ## Manual Update -Manual updates give you complete control and are recommended for production environments or when you need to review changes before applying them. + + -### Step 1: Stop and Remove Current Container - -This stops the running container and removes it without deleting your data stored in the Docker volume. - -```bash title="Terminal" -# Replace 'open-webui' with your container name if different -# Use 'docker ps' to find your container name if unsure -docker rm -f open-webui -``` - -:::tip Find Your Container Name -If your container isn't named `open-webui`, find it with: ```bash -docker ps -a | grep open-webui -``` -Look in the "NAMES" column for your actual container name. -::: +# 1. Stop and remove the container (data in the volume is preserved) +docker rm -f open-webui -### Step 2: Pull Latest Docker Image - -Download the newest Open WebUI image from the container registry. - -```bash title="Terminal" +# 2. Pull the latest image docker pull ghcr.io/open-webui/open-webui:main + +# 3. Recreate the container +docker run -d -p 3000:8080 \ + -v open-webui:/app/backend/data \ + -e WEBUI_SECRET_KEY="your-secret-key" \ + --name open-webui --restart always \ + ghcr.io/open-webui/open-webui:main ``` -**Expected output:** -``` -main: Pulling from open-webui/open-webui -Digest: sha256:abc123... -Status: Downloaded newer image for ghcr.io/open-webui/open-webui:main +For NVIDIA GPU support, add `--gpus all` to the `docker run` command. + + + + +```bash +docker compose pull +docker compose up -d ``` -:::note About Data Persistence -Your chat histories, settings, and uploaded files are stored in a Docker volume named `open-webui`. Pulling a new image does **not** affect this data. The volume persists independently of the container. +Make sure your `docker-compose.yml` includes `WEBUI_SECRET_KEY`: + +```yaml title="docker-compose.yml" +services: + open-webui: + image: ghcr.io/open-webui/open-webui:main + ports: + - "3000:8080" + volumes: + - open-webui:/app/backend/data + environment: + - WEBUI_SECRET_KEY=your-secret-key + restart: unless-stopped + +volumes: + open-webui: +``` + + + + +:::warning Set WEBUI_SECRET_KEY to avoid logout on every update +Without a persistent `WEBUI_SECRET_KEY`, a new key is generated each time the container is recreated, invalidating all sessions. Generate one with `openssl rand -hex 32` and keep it across updates. ::: -### (Optional) Using image tags in production +### Pinning a Version -Open WebUI provides multiple Docker image tags depending on how you want to manage updates. -If you want to always run the latest version of Open WebUI, you can use the `:main`, `:cuda`, or `:ollama` image tags, depending on your setup. +By default the `:main` tag always points to the latest build. For production, pin a specific release: -Examples (latest version tags): -``` -ghcr.io/open-webui/open-webui:main -ghcr.io/open-webui/open-webui:cuda -ghcr.io/open-webui/open-webui:ollama -``` - -For `production environments` where stability and reproducibility are important, it is recommended to pin a specific release version instead of using these floating tags. - -Versioned images follow this format: -``` -ghcr.io/open-webui/open-webui:- -``` - -Examples (pinned versions β€” replace with the release version you want to use): ``` ghcr.io/open-webui/open-webui:v0.6.52 ghcr.io/open-webui/open-webui:v0.6.52-cuda ghcr.io/open-webui/open-webui:v0.6.52-ollama ``` -### Step 3: Start Container with Updated Image +### Rolling Back -Recreate the container using the new image while mounting your existing data volume. - - - - -```bash title="Terminal - Standard Deployment" -docker run -d \ - -p 3000:8080 \ - -v open-webui:/app/backend/data \ - --name open-webui \ - --restart always \ - ghcr.io/open-webui/open-webui:main -``` - - - - -```bash title="Terminal - With NVIDIA GPU Support" -docker run -d \ - -p 3000:8080 \ - --gpus all \ - -v open-webui:/app/backend/data \ - --name open-webui \ - --restart always \ - ghcr.io/open-webui/open-webui:main -``` - - - - -:::warning About WEBUI_SECRET_KEY -If you're not setting `WEBUI_SECRET_KEY`, it will be auto-generated each time you recreate the container, **causing you to be logged out after every update**. - -See the [Persistent Login Sessions](#persistent-login-sessions) section below to fix this. -::: - -### Verify Update Success - -Check that Open WebUI started successfully: - -```bash title="Terminal - Check Container Logs" -docker logs open-webui - -# Watch logs in real-time -docker logs -f open-webui -``` - -**Successful startup indicators:** -``` -INFO: [db] Database initialization complete -INFO: [main] Open WebUI starting on http://0.0.0.0:8080 -``` - -Then verify in your browser: -1. Navigate to `http://localhost:3000` (or your configured port) -2. Clear browser cache (Ctrl+Shift+Delete or Cmd+Shift+Delete) -3. Hard refresh the page (Ctrl+F5 or Cmd+Shift+R) -4. Log in and verify your data is intact - -## Persistent Login Sessions - -To avoid being logged out after every update, you must set a persistent `WEBUI_SECRET_KEY`. - -### Generate and Set Secret Key - - - - -```bash title="Terminal - Docker Run with Secret Key" -docker run -d \ - -p 3000:8080 \ - -v open-webui:/app/backend/data \ - --name open-webui \ - --restart always \ - -e WEBUI_SECRET_KEY="your-secret-key-here" \ - ghcr.io/open-webui/open-webui:main -``` - -:::tip Generate a Secure Key -Generate a cryptographically secure key with: -```bash -openssl rand -hex 32 -``` -Or use Python: -```bash -python3 -c "import secrets; print(secrets.token_hex(32))" -``` -::: - - - - -```yaml title="docker-compose.yml" -version: '3' -services: - open-webui: - image: ghcr.io/open-webui/open-webui:main - ports: - - "3000:8080" - volumes: - - open-webui:/app/backend/data - environment: - - WEBUI_SECRET_KEY=your-secret-key-here - restart: unless-stopped - -volumes: - open-webui: -``` - - - - -:::danger Store Secret Key Securely -- **Never commit** your secret key to version control -- Use environment files (`.env`) or secret management tools -- Keep the same key across updates to maintain sessions -::: - -For complete environment variable documentation, see [Environment Configuration](https://docs.openwebui.com/reference/env-configuration#security-variables). - -## Automated Update Tools - -Automated updates can save time but require careful consideration of the trade-offs. - -:::warning Important Considerations -**Automated updates can break your deployment if:** -- A new version has breaking changes you haven't reviewed -- Custom configurations become incompatible -- Database migrations fail during unattended updates -- You have plugins or customizations that aren't forward-compatible - -**Best practices:** -- Always review release notes before auto-updating production systems -- Test updates in a staging environment first -- Consider notification-only tools rather than automatic updates -- Have a rollback plan and recent backups -::: - -### Option 1: Watchtower (Community Fork) - -:::info Watchtower Status -The original `containrrr/watchtower` is **no longer maintained** and **does not work with Docker 29+**. The community has created maintained forks that resolve these issues. -::: - -The original Watchtower project hasn't received updates in over two years and fails with Docker version 29.0.0 or newer due to API version incompatibility. Two maintained forks are now available: nickfedor/watchtower and Marrrrrrrrry/watchtower, both compatible with Docker 29+. - -**Recommended: nickfedor/watchtower fork** - - - - -Run Watchtower once to update all containers, then exit: - -```bash title="Terminal - One-Time Update" -docker run --rm \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - nickfedor/watchtower \ - --run-once open-webui -``` - - - - -Run Watchtower as a persistent container that checks for updates every 6 hours: - -```bash title="Terminal - Continuous Watchtower" -docker run -d \ - --name watchtower \ - --restart unless-stopped \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - nickfedor/watchtower \ - --interval 21600 \ - open-webui -``` - - - - -```yaml title="docker-compose.yml" -version: '3' -services: - open-webui: - image: ghcr.io/open-webui/open-webui:main - ports: - - "3000:8080" - volumes: - - open-webui:/app/backend/data - environment: - - WEBUI_SECRET_KEY=your-secret-key-here - restart: unless-stopped - - watchtower: - image: nickfedor/watchtower:latest - volumes: - - /var/run/docker.sock:/var/run/docker.sock - environment: - - WATCHTOWER_CLEANUP=true - - WATCHTOWER_INCLUDE_STOPPED=false - - WATCHTOWER_SCHEDULE=0 0 2 * * * # 2 AM daily - command: open-webui - restart: unless-stopped - depends_on: - - open-webui - -volumes: - open-webui: -``` - - - - -**Watchtower configuration options:** - -| Environment Variable | Description | Default | -|---------------------|-------------|---------| -| `WATCHTOWER_CLEANUP` | Remove old images after update | `false` | -| `WATCHTOWER_INCLUDE_STOPPED` | Update stopped containers too | `false` | -| `WATCHTOWER_SCHEDULE` | Cron expression for update schedule | `0 0 0 * * *` (midnight) | -| `WATCHTOWER_MONITOR_ONLY` | Only notify, don't update | `false` | - -:::tip Monitor-Only Mode -To receive notifications without automatic updates: -```bash -docker run -d \ - --name watchtower \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - -e WATCHTOWER_MONITOR_ONLY=true \ - -e WATCHTOWER_NOTIFICATIONS=email \ - -e WATCHTOWER_NOTIFICATION_EMAIL_TO=you@example.com \ - nickfedor/watchtower -``` -::: - -**Alternative fork:** Marrrrrrrrry/watchtower is another actively maintained fork with updated dependencies and simplified functions. - -For complete Watchtower documentation, visit https://watchtower.nickfedor.com/ - -#### containrrr/watchtower (Not Maintained) - -You can use [Watchtower](https://containrrr.dev/watchtower/) to automate the update process for Open WebUI. Here are three options: - -##### One-time Update - -You can run Watchtower as a one-time update to stop the current container, pull the latest image, and start a new container with the updated image and existing volume attached (**For Nvidia GPU support, add `--gpus all` to the docker run command**): +If an update causes problems, pin the previous version: ```bash -docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui -``` - -##### Running Watchtower as a Separate Container - -You can run Watchtower as a separate container that watches and updates your Open WebUI container: - -```bash -docker run -d --name watchtower \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - containrrr/watchtower -i 300 open-webui -``` - -### Option 2: What's Up Docker (WUD) - -What's Up Docker (WUD) is a notification-focused alternative that doesn't automatically update containers but instead provides a web UI to monitor updates and trigger them manually. - -**Why choose WUD:** -- βœ… Web UI for visual monitoring -- βœ… Click-button manual updates -- βœ… Shows descriptive names and changelogs -- βœ… Auto-prunes old images -- βœ… Supports multiple Docker hosts -- βœ… Extensive notification options -- ❌ Requires manual intervention (not fully automated) - -**Quick start with WUD:** - -```yaml title="docker-compose.yml" -version: '3' -services: - wud: - image: fmartinou/whats-up-docker:latest - container_name: wud - ports: - - "3001:3000" - volumes: - - /var/run/docker.sock:/var/run/docker.sock - environment: - # Authentication (optional but recommended) - - WUD_AUTH_BASIC_USER=admin - - WUD_AUTH_BASIC_HASH=$$apr1$$... # Generate with htpasswd - - # Enable triggers for updates - - WUD_TRIGGER_DOCKERCOMPOSE_WUD_FILE=/docker-compose.yml - - # Notification examples - - WUD_WATCHER_LOCAL_SOCKET=/var/run/docker.sock - restart: unless-stopped -``` - -After starting WUD, access the web interface at `http://localhost:3001`. You'll see all containers and available updates with click-to-update buttons. - -:::tip Generate Password Hash -```bash -htpasswd -nbB admin yourpassword -``` -Copy the part after the colon, and replace each `$` with `$$` in docker-compose. -::: - -For complete WUD documentation, visit https://getwud.github.io/wud/ - -### Option 3: Diun (Docker Image Update Notifier) - -Diun is a lightweight CLI tool that only sends notifications about available updates without performing any updates. It's ideal if you want complete control and just need alerts. - -**Why choose Diun:** -- βœ… Notification-only (safest approach) -- βœ… No web UI overhead (lightweight) -- βœ… Multiple notification providers (email, Slack, Discord, Telegram, etc.) -- βœ… Fine-grained control over what to monitor -- ❌ No built-in update mechanism (purely informational) - -```yaml title="docker-compose.yml" -version: '3' -services: - diun: - image: crazymax/diun:latest - container_name: diun - volumes: - - /var/run/docker.sock:/var/run/docker.sock:ro - - ./data:/data - environment: - - TZ=America/New_York - - LOG_LEVEL=info - - DIUN_WATCH_WORKERS=10 - - DIUN_WATCH_SCHEDULE=0 */6 * * * # Every 6 hours - - DIUN_PROVIDERS_DOCKER=true - - DIUN_NOTIF_MAIL_HOST=smtp.gmail.com - - DIUN_NOTIF_MAIL_PORT=587 - - DIUN_NOTIF_MAIL_USERNAME=your-email@gmail.com - - DIUN_NOTIF_MAIL_PASSWORD=your-app-password - - DIUN_NOTIF_MAIL_FROM=your-email@gmail.com - - DIUN_NOTIF_MAIL_TO=your-email@gmail.com - restart: unless-stopped -``` - -For complete Diun documentation, visit https://crazymax.dev/diun/ - -### Comparison: Which Tool Should You Use? - -| Feature | Watchtower (Fork) | WUD | Diun | -|---------|------------------|-----|------| -| **Automatic Updates** | βœ… Yes | ⚠️ Manual via UI | ❌ No | -| **Web Interface** | ❌ No | βœ… Yes | ❌ No | -| **Notifications** | βœ… Yes | βœ… Yes | βœ… Yes | -| **Manual Control** | ⚠️ Limited | βœ… Full control | βœ… Full control | -| **Resource Usage** | Low | Medium | Very Low | -| **Docker 29+ Support** | βœ… Yes (forks) | βœ… Yes | βœ… Yes | -| **Best For** | Set-and-forget homelabs | Visual monitoring + control | Notification-only workflows | - -:::tip Recommendation -- **For homelabs/personal use:** nickfedor/watchtower (automated) -- **For managed environments:** WUD (visual + manual control) -- **For production/critical systems:** Diun (notifications only) + manual updates -::: - -## Troubleshooting Updates - -### Container Won't Start After Update - -**Check logs for errors:** -```bash title="Terminal" -docker logs open-webui - -# Look for migration errors or startup failures -``` - -**Common causes:** -- Database migration failed -- Incompatible environment variables -- Port already in use - -**Solution:** Restore previous version and investigate: -```bash title="Terminal - Rollback to Previous Version" -# Stop current container -docker stop open-webui -docker rm open-webui - -# Pull specific older version (check GitHub releases for version tags) -docker pull ghcr.io/open-webui/open-webui:v0.4.0 - -# Start with old image +docker rm -f open-webui +docker pull ghcr.io/open-webui/open-webui:v0.6.51 docker run -d -p 3000:8080 -v open-webui:/app/backend/data \ - --name open-webui ghcr.io/open-webui/open-webui:v0.4.0 + -e WEBUI_SECRET_KEY="your-secret-key" \ + --name open-webui ghcr.io/open-webui/open-webui:v0.6.51 ``` -### Data Loss or Corruption +--- -**If you suspect data issues:** +## Automated Updates -```bash title="Terminal - Inspect Volume" -# Find volume location -docker volume inspect open-webui - -# Check database file exists -docker run --rm -v open-webui:/data alpine ls -lah /data -``` - -**Recovery steps:** -1. Stop Open WebUI: `docker stop open-webui` -2. Backup volume: `docker run --rm -v open-webui:/data -v $(pwd):/backup alpine tar czf /backup/openwebui-backup.tar.gz /data` -3. Restore from backup if needed -4. Check [Manual Migration Guide](/troubleshooting/manual-database-migration.md) for database issues - -### Watchtower Updates Too Frequently - -Configure update schedule with cron expressions: - -```bash title="Terminal - Custom Schedule" -# Daily at 3 AM --e WATCHTOWER_SCHEDULE="0 0 3 * * *" - -# Weekly on Sundays at 2 AM --e WATCHTOWER_SCHEDULE="0 0 2 * * 0" - -# Every 12 hours --e WATCHTOWER_SCHEDULE="0 0 */12 * * *" -``` - -### "Logged Out After Update" Despite Setting Secret Key - -**Diagnosis:** -```bash title="Terminal - Check Environment Variables" -docker inspect open-webui | grep WEBUI_SECRET_KEY -``` - -If the key isn't showing, you didn't pass it correctly when recreating the container. - -**Fix:** -```bash title="Terminal - Recreate with Correct Key" -docker stop open-webui -docker rm open-webui - -# Make sure to include -e WEBUI_SECRET_KEY -docker run -d -p 3000:8080 -v open-webui:/app/backend/data \ - -e WEBUI_SECRET_KEY="your-persistent-key" \ - --name open-webui ghcr.io/open-webui/open-webui:main -``` - -## Docker Volume Management - -### Locate Your Data - -The `open-webui` Docker volume contains all your data (chats, users, uploads, etc.). - -```bash title="Terminal - Inspect Volume" -docker volume inspect open-webui -``` - -**Common volume locations:** -- Linux: `/var/lib/docker/volumes/open-webui/_data` -- Windows (WSL2): `\\wsl$\docker-desktop\mnt\docker-desktop-disk\data\docker\volumes\open-webui\_data` -- macOS: `~/Library/Containers/com.docker.docker/Data/vms/0/data/docker/volumes/open-webui/_data` - -:::warning Direct Access Risk -Avoid directly modifying files in the volume location. Always interact through the container or Docker commands to prevent corruption. +:::warning +Automated updates can break your deployment if a release includes breaking changes or migration issues. Review release notes before auto-updating production systems, and always have a backup. ::: -### Backup Volume +### Choosing a Tool -```bash title="Terminal - Backup Docker Volume" -# Create timestamped backup +| Feature | Watchtower | WUD | Diun | +|---------|:---:|:---:|:---:| +| **Auto-updates containers** | βœ… | ❌ (manual via UI) | ❌ | +| **Web interface** | ❌ | βœ… | ❌ | +| **Notifications** | βœ… | βœ… | βœ… | +| **Docker 29+** | βœ… (forks) | βœ… | βœ… | +| **Best for** | Homelabs | Visual monitoring | Notification-only | + +### Watchtower + +:::note +The original `containrrr/watchtower` is unmaintained and broken on Docker 29+. Use the [nickfedor/watchtower](https://watchtower.nickfedor.com/) fork instead. +::: + +**One-time update:** +```bash docker run --rm \ - -v open-webui:/data \ - -v $(pwd):/backup \ - alpine tar czf /backup/openwebui-$(date +%Y%m%d_%H%M%S).tar.gz /data + -v /var/run/docker.sock:/var/run/docker.sock \ + nickfedor/watchtower --run-once open-webui ``` -### Restore Volume +**Continuous (check every 6 hours):** +```bash +docker run -d --name watchtower --restart unless-stopped \ + -v /var/run/docker.sock:/var/run/docker.sock \ + nickfedor/watchtower --interval 21600 open-webui +``` -```bash title="Terminal - Restore from Backup" -# Stop container +Set `WATCHTOWER_CLEANUP=true` to auto-remove old images. See [Watchtower docs](https://watchtower.nickfedor.com/) for scheduling, notifications, and monitor-only mode. + +### What's Up Docker (WUD) + +Web UI for monitoring container updates and triggering them manually. See [WUD documentation](https://getwud.github.io/wud/) for setup. + +### Diun + +Notification-only β€” alerts you when updates are available (email, Slack, Discord, Telegram, etc.) without touching your containers. See [Diun documentation](https://crazymax.dev/diun/) for setup. + +--- + +## Backup & Restore + +All data (chats, users, uploads) lives in the `open-webui` Docker volume. + +**Backup:** +```bash +docker run --rm -v open-webui:/data -v $(pwd):/backup \ + alpine tar czf /backup/openwebui-$(date +%Y%m%d).tar.gz /data +``` + +**Restore:** +```bash docker stop open-webui - -# Restore backup -docker run --rm \ - -v open-webui:/data \ - -v $(pwd):/backup \ - alpine sh -c "rm -rf /data/* && tar xzf /backup/openwebui-20241201_120000.tar.gz -C /" - -# Start container +docker run --rm -v open-webui:/data -v $(pwd):/backup \ + alpine sh -c "rm -rf /data/* && tar xzf /backup/openwebui-20250216.tar.gz -C /" docker start open-webui ``` -### Clean Up Old Images - -After updating, old images remain on disk. Remove them to free space: - -```bash title="Terminal - Remove Unused Images" -# Remove dangling images (not tagged or used) -docker image prune - -# Remove all unused images (careful!) -docker image prune -a - -# List all open-webui images -docker images | grep open-webui -``` - -Watchtower can do this automatically with: -```bash --e WATCHTOWER_CLEANUP=true -``` - -## Post-Update Checklist - -After updating, verify everything works: - -- [ ] Open WebUI starts without errors (`docker logs open-webui`) -- [ ] Can access web interface at `http://localhost:3000` -- [ ] Can log in with existing credentials -- [ ] Chat history is intact -- [ ] Models are still configured correctly -- [ ] Custom settings are preserved -- [ ] No JavaScript console errors (F12 in browser) -- [ ] Clear browser cache if interface looks broken - -:::tip Browser Cache Issues -If the interface looks broken or old after updating: -1. Hard refresh: Ctrl+F5 (Windows/Linux) or Cmd+Shift+R (Mac) -2. Clear site data: Browser Settings > Privacy > Clear browsing data -3. Try incognito/private window to verify it's a cache issue -::: - -## Additional Resources - -- [Open WebUI GitHub Releases](https://github.com/open-webui/open-webui/releases) - Version history and changelogs -- [Environment Configuration Guide](https://docs.openwebui.com/reference/env-configuration) - All environment variables -- [Manual Database Migration](/troubleshooting/manual-database-migration.md) - Fix database issues after updates -- [Watchtower Documentation](https://watchtower.nickfedor.com/) - Advanced Watchtower configuration -- [WUD Documentation](https://getwud.github.io/wud/) - What's Up Docker setup guide +For database-specific recovery, see the [Manual Database Migration](/troubleshooting/manual-database-migration.md) guide. diff --git a/docs/intro.mdx b/docs/intro.mdx index bf0420a6..fe10d139 100644 --- a/docs/intro.mdx +++ b/docs/intro.mdx @@ -5,7 +5,7 @@ title: 🏑 Home hide_title: true --- -import { TopBanners } from "@site/src/components/TopBanners"; + import { SponsorList } from "@site/src/components/SponsorList"; # Open WebUI @@ -13,7 +13,6 @@ import { SponsorList } from "@site/src/components/SponsorList"; **Open WebUI is an [extensible](https://docs.openwebui.com/features/extensibility/plugin/), feature-rich, and user-friendly self-hosted AI platform designed to operate entirely offline.** It is built around universal standards, supporting **Ollama** and **OpenAI-compatible Protocols** (specifically Chat Completions). This protocol-first approach makes it a powerful, provider-agnostic AI deployment solution for both local and cloud-based models. -[![Open WebUI Banner](/images/banner.png)](https://openwebui.com) Passionate about open-source AI? [Join our team β†’](https://careers.openwebui.com/) @@ -38,8 +37,6 @@ Get **enhanced capabilities**, including **custom theming and branding**, **Serv ::: - - ## Quick Start with Docker 🐳 :::info @@ -151,7 +148,7 @@ Always use a separate data volume (e.g., `-v open-webui-dev:/app/backend/data`) To update Open WebUI container easily, follow these steps: #### Manual Update -Use [Watchtower](https://github.com/nickfedor/watchtower) to update your Docker container manually: +Use [Watchtower](https://github.com/nicholas-fedor/watchtower) to update your Docker container manually: ```bash docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nickfedor/watchtower --run-once open-webui ``` diff --git a/docs/license.mdx b/docs/license.mdx index 42b3275d..9bf030dd 100644 --- a/docs/license.mdx +++ b/docs/license.mdx @@ -3,9 +3,6 @@ sidebar_position: 1900 title: "βš–οΈ Open WebUI License" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - ## Keeping Open WebUI Free, Fair, and Sustainable diff --git a/docs/mission.mdx b/docs/mission.mdx index e6e54961..c61429e1 100644 --- a/docs/mission.mdx +++ b/docs/mission.mdx @@ -3,36 +3,28 @@ sidebar_position: 2000 title: "🎯 Our Mission" --- -import { TopBanners } from "@site/src/components/TopBanners"; +## Bring Intelligence Home - +The most transformative technology in human history is here. It can diagnose, discover, teach, build, and create. And right now, for most people on this planet, it lives behind someone else's login page, on someone else's servers, under someone else's rules. -### A Note from Our Founder +We're changing that. -Before diving into our mission, we invite you to read our founder's blog post: ["Why I’m Building Open WebUI"](https://jryng.com/thoughts/why-open-webui). In this post, Tim shares the inspiration, challenges, and hopes driving Open WebUI's vision forward. It's a heartfelt introduction to what we're all about! +**Open WebUI is building toward a future where every person has their own AI that truly knows them, runs on their own hardware, and goes wherever they go.** ---- +Picture what that means. -Hello there! πŸ‘‹ +A doctor's AI that has read every chart in the hospital, catches a dangerous drug interaction before the prescription is signed, and never sends a byte of patient data outside the building. A teacher's AI that knows every student's strengths and weak spots and has tomorrow's lesson plan ready before the school day starts. A disaster coordinator's AI that runs on a laptop with no internet and still knows exactly where to send water because it has every supply manifest and damage report loaded locally. -Imagine a world where local, open models that can run on any machine, united as one, outperform proprietary giants like GPT-4. Even better, imagine us all having the capability to train and reproduce state-of-the-art models like GPT-4 or GPT-5 from scratch, using high-quality, curated data. +An engineer's AI on Mars that diagnoses a failing CO2 scrubber from maintenance logs alone, because there is no cloud twenty-two light-minutes from Earth. -Here's the thing, though: one of the biggest challenges in creating these foundation and fine-tune models is the substantial need for **[high-quality data](https://arxiv.org/abs/2305.11206)**, which is both costly and time-consuming to gather and curate. This is where Open WebUI's mission comes into play. Our mission is to contribute to this vision by building the best AI interface and crowdsourcing curated datasets from our community of users. +All of this becomes possible when AI has **context**: your documents, your history, your tools, your memory, your world. And all of it requires one thing: that the AI lives with you, on your machine, under your control. Not visiting someone else's service. Home. -β€” [Tim](https://github.com/tjbck) +That is what Open WebUI is. A home for AI. The place where your AI's knowledge, memory, tools, and skills accumulate over time into something that understands your work as deeply as you do. Something that doesn't just answer when asked, but anticipates what you need and acts. ---- +It works with any model. It runs on your hardware. It scales from one person to thousands. And it is open source, because we believe this technology should belong to everyone. -Our mission is founded on the belief that AI technologies hold transformative potential for society, yet their benefits have been narrowly confined due to complex setup requirements. Recognizing this, we are dedicated to democratizing AI by developing an easy-to-install, feature-rich local WebUI that is designed to operate locally without internet access. Enabling anyone with basic technical skills to tap into the power of AI, effectively bringing its capabilities to communities far and wide. +**Our mission is to bring AI to every person and every organization on Earth, and everywhere beyond it.** -At the heart of our efforts is the creation of an open-sourced ecosystem of AI tools. Our commitment lies in making AI not only accessible but also beneficial for everyone. We envision a future where AI acts as a lever for societal advancement, driving progress, and technological breakthroughs across all communities. +### Come Build With Us -By eliminating technological barriers and making AI's advantages universally accessible, we aim to foster a positive impact worldwide. Our ultimate goal is to ensure that AI serves as a catalyst for positive change, helping to bridge gaps and create a more equitable society where everyone can benefit from the advancements in technology. - -### Our Vision: Shaping the Future Together - -At the heart of our mission lies a profound commitment not just to envision a future where advanced AI technology is universally accessible, but to actively build towards it. Our efforts extend beyond the development of our WebUI; We are at the forefront of creating an ecosystem that embodies the democratization of AI technology. This ecosystem, envisioned as a vibrant, community-driven platform, will be a repository of shared knowledgeβ€”ranging from model presets and custom prompts to valuable chat logs. A space where the collective intelligence of our community acts as the driving force for the continuous evolution and refinement of AIs, ensuring these advancements serve us, the actual users of these technologies. - -Our strategy aims to tackle the complex challenges of AI, such as model fine-tuning and dataset curation, head-on. Leveraging the collective skills and insights of our community, we'll forge innovative pathways that not only enhance the precision and relevance of AI models but also guarantee these improvements are shared openly. Our objective is unequivocal: to democratize access to refined, user-curated datasets, thereby eliminating barriers to advancing AI for all. - -As we navigate this journey, our vision serves as our north star, guiding our efforts to turn bold ambitions into reality. We extend an invitation for you to join us in this endeavor, as we work diligently to ensure AI technology becomes an empowering resource for individuals and communities across the globe. +[GitHub](https://github.com/open-webui/open-webui) Β· [Discord](https://discord.gg/5rJgQTnV4s) Β· [Careers](https://careers.openwebui.com) diff --git a/docs/roadmap.mdx b/docs/roadmap.mdx index a25e53e4..f1d57506 100644 --- a/docs/roadmap.mdx +++ b/docs/roadmap.mdx @@ -3,9 +3,6 @@ sidebar_position: 1400 title: "πŸ›£οΈ Roadmap" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - At Open WebUI, we're committed to continually enhancing our platform to provide the best experience for our users. Below, you'll find the structured roadmap for our ongoing and future developments, categorized into Interface, Information Retrieval, and Community. diff --git a/docs/security.mdx b/docs/security.mdx index dcf5bc7a..3e1c3e73 100644 --- a/docs/security.mdx +++ b/docs/security.mdx @@ -3,9 +3,6 @@ sidebar_position: 1500 title: "πŸ›‘οΈ Security Policy" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - At Open WebUI, safeguarding the security and confidentiality of user data is our foremost concern. Our technical architecture and development processes are designed to minimize vulnerabilities and uphold the trust our stakeholders place in us. Regular assessments, codebase vetting, and systematic adoption of best practice methodologies ensure that security remains a central part of our project lifecycle. diff --git a/docs/sponsorships.mdx b/docs/sponsorships.mdx index ebd832f4..c3c980f1 100644 --- a/docs/sponsorships.mdx +++ b/docs/sponsorships.mdx @@ -2,9 +2,6 @@ sidebar_position: 1800 title: "πŸ’– Sponsorships" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - ## The Impact of Your Support diff --git a/docs/team.mdx b/docs/team.mdx index 7945eab8..e60fb0eb 100644 --- a/docs/team.mdx +++ b/docs/team.mdx @@ -3,9 +3,6 @@ sidebar_position: 2200 title: "πŸ‘₯ Our Team" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - ## 🌟 Meet Our Core Development Team! diff --git a/docs/troubleshooting/audio.mdx b/docs/troubleshooting/audio.mdx index 52df8a58..0a46f9a2 100644 --- a/docs/troubleshooting/audio.mdx +++ b/docs/troubleshooting/audio.mdx @@ -3,9 +3,6 @@ sidebar_position: 3 title: "Audio" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - # Audio Troubleshooting Guide diff --git a/docs/troubleshooting/index.mdx b/docs/troubleshooting/index.mdx index eaaefa7f..48d50534 100644 --- a/docs/troubleshooting/index.mdx +++ b/docs/troubleshooting/index.mdx @@ -2,9 +2,6 @@ sidebar_position: 300 title: "πŸ› οΈ Troubleshooting" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - ## 🌟 General Troubleshooting Tips diff --git a/docs/tutorials/deployment/index.mdx b/docs/tutorials/deployment/index.mdx index a9c0afb4..c0ef95da 100644 --- a/docs/tutorials/deployment/index.mdx +++ b/docs/tutorials/deployment/index.mdx @@ -3,9 +3,6 @@ sidebar_position: 5 title: "Community Guides" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - :::warning Community Content The tutorials and videos below are created by the community and are not officially supported by the Open WebUI team. They serve as demonstrations for customizing and deploying Open WebUI for specific use cases. diff --git a/docs/tutorials/maintenance/offline-mode.mdx b/docs/tutorials/maintenance/offline-mode.mdx index b3a4a8fe..94625ef3 100644 --- a/docs/tutorials/maintenance/offline-mode.mdx +++ b/docs/tutorials/maintenance/offline-mode.mdx @@ -3,9 +3,6 @@ sidebar_position: 300 title: "Offline Mode" --- -import { TopBanners } from "@site/src/components/TopBanners"; - - :::warning diff --git a/src/components/SidebarBanners.tsx b/src/components/SidebarBanners.tsx index 4593af23..746f981d 100644 --- a/src/components/SidebarBanners.tsx +++ b/src/components/SidebarBanners.tsx @@ -3,21 +3,14 @@ import { useEffect, useState } from "react"; export const SidebarBanners = () => { const items = [ - { - imgSrc: "/sponsors/banners/openwebui-banner.png", - mobileImgSrc: "/sponsors/banners/openwebui-banner-mobile.png", - url: "https://docs.openwebui.com/enterprise", - name: "Open WebUI Inc.", - description: - "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.", - }, + { imgSrc: "/sponsors/banners/openwebui-banner.png", mobileImgSrc: "/sponsors/banners/openwebui-banner-mobile.png", url: "https://careers.openwebui.com", name: "Open WebUI Inc.", description: - "**We are hiring!** Shape the way humanity engages with _intelligence_.", + "" }, ]; diff --git a/src/css/custom.css b/src/css/custom.css index 822835af..e55d3595 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -30,12 +30,13 @@ --docusaurus-highlighted-code-line-bg: rgb(0 0 0 / 10%); --ifm-hover-overlay: #fafafa; --ifm-heading-color: #111; - --ifm-font-family-base: "Archivo"; - --ifm-global-shadow-md: 0px; /* Remove shadow on the left */ + --ifm-font-family-base: "Archivo", -apple-system, BlinkMacSystemFont, " Segoe UI", Roboto, " Helvetica Neue", Arial, sans-serif; + --ifm-global-shadow-md: 0px; + /* Remove shadow on the left */ } /** In mobile view, reduce the padding */ -@media screen and (width <= 996px) { +@media screen and (width <=996px) { :root { --ifm-navbar-height: 100%; } @@ -55,8 +56,7 @@ display: flex; flex: 1; height: fit-content !important; - padding: var(--ifm-navbar-padding-vertical) - var(--ifm-navbar-padding-horizontal); + padding: var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal); } .navbar-sidebar__items { @@ -317,7 +317,7 @@ article p a { margin-top: 20px; } -@media screen and (width >= 997px) { +@media screen and (width >=997px) { .hero--container { padding: 80px 200px; } @@ -414,7 +414,7 @@ article p a { background-color: #111; } -@media screen and (width >= 997px) { +@media screen and (width >=997px) { .menu_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-Content-styles-module { padding: 0 !important; } @@ -429,7 +429,7 @@ article p a { } /* from here - https://theochu.com/docusaurus/styling/ */ -@media screen and (width <= 996px) { +@media screen and (width <=996px) { h1 { font-size: 1.5rem !important; font-weight: 600; @@ -440,7 +440,7 @@ article p a { } } -@media screen and (width >= 997px) { +@media screen and (width >=997px) { h1 { font-size: 2rem !important; } @@ -466,7 +466,8 @@ article p a { font-size: inherit; } -@media screen and (width >= 997px) { +@media screen and (width >=997px) { + /* Show inline table of contents on mobile only */ div[class^="tableOfContentsInline"] { display: none; @@ -503,11 +504,11 @@ article p a { background-color: rgb(50 125 255); } -.tabs + .margin-top--md { +.tabs+.margin-top--md { margin-top: 5px !important; } -.tabs + .margin-top--md pre { +.tabs+.margin-top--md pre { border-top-right-radius: 0; border-top-left-radius: 0; } @@ -529,7 +530,7 @@ article p a { background-color: rgb(120 120 120 / 20%); } -div.special_table + table { +div.special_table+table { border: none; /* border-collapse: separate; */ @@ -537,13 +538,13 @@ div.special_table + table { /* border-spacing: 0px; */ } -div.special_table + table thead { +div.special_table+table thead { background: rgb(120 120 120 / 10%); border-top-right-radius: 10px; overflow: hidden; } -div.special_table + table thead tr { +div.special_table+table thead tr { background: rgb(255 255 255 / 0%); border-top: 0; border-bottom: 0; @@ -551,23 +552,23 @@ div.special_table + table thead tr { th, td, -div.special_table + table { +div.special_table+table { border-width: 0 !important; } -div.special_table + table tr th { +div.special_table+table tr th { background: rgb(255 255 255 / 0%); color: #000; font-weight: 600; padding: 5px 20px; } -div.special_table + table tr td { +div.special_table+table tr td { padding: 5px 20px; text-align: left; } -div.special_table + table tr:nth-child(even) { +div.special_table+table tr:nth-child(even) { background: rgb(255 255 255 / 0%); } @@ -642,7 +643,8 @@ div.special_table + table tr:nth-child(even) { gap: 0.25rem; } -@media screen and (width >= 997px) { +@media screen and (width >=997px) { + .header-github-link, .header-discord-link { font-size: 0; @@ -660,8 +662,7 @@ div.special_table + table tr:nth-child(even) { display: flex; background-color: var(--ifm-navbar-link-color); mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E"); - transition: background-color var(--ifm-transition-fast) - var(--ifm-transition-timing-default); + transition: background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default); } .header-github-link:hover::before { @@ -677,10 +678,9 @@ div.special_table + table tr:nth-child(even) { /* URL encode an svg https://yoksel.github.io/url-encoder/ */ mask-image: url("data:image/svg+xml,%3Csvg aria-hidden='true' role='img' xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M19.73 4.87a18.2 18.2 0 0 0-4.6-1.44c-.21.4-.4.8-.58 1.21-1.69-.25-3.4-.25-5.1 0-.18-.41-.37-.82-.59-1.2-1.6.27-3.14.75-4.6 1.43A19.04 19.04 0 0 0 .96 17.7a18.43 18.43 0 0 0 5.63 2.87c.46-.62.86-1.28 1.2-1.98-.65-.25-1.29-.55-1.9-.92.17-.12.32-.24.47-.37 3.58 1.7 7.7 1.7 11.28 0l.46.37c-.6.36-1.25.67-1.9.92.35.7.75 1.35 1.2 1.98 2.03-.63 3.94-1.6 5.64-2.87.47-4.87-.78-9.09-3.3-12.83ZM8.3 15.12c-1.1 0-2-1.02-2-2.27 0-1.24.88-2.26 2-2.26s2.02 1.02 2 2.26c0 1.25-.89 2.27-2 2.27Zm7.4 0c-1.1 0-2-1.02-2-2.27 0-1.24.88-2.26 2-2.26s2.02 1.02 2 2.26c0 1.25-.88 2.27-2 2.27Z' %3E%3C/path%3E%3C/svg%3E"); - transition: background-color var(--ifm-transition-fast) - var(--ifm-transition-timing-default); + transition: background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default); } .header-discord-link:hover::before { background-color: var(--ifm-navbar-link-hover-color); -} +} \ No newline at end of file diff --git a/src/theme/Layout.tsx b/src/theme/Layout.tsx index fbe52958..73ddd746 100644 --- a/src/theme/Layout.tsx +++ b/src/theme/Layout.tsx @@ -1,6 +1,5 @@ import React from "react"; import Layout from "@theme-original/Layout"; -import { TopBanners } from "../components/TopBanners"; export default function CustomLayout(props) { return ( @@ -8,7 +7,7 @@ export default function CustomLayout(props) { {/*
- +
*/} diff --git a/src/theme/Navbar/Content/index.tsx b/src/theme/Navbar/Content/index.tsx index 6b1bc203..6c5cb69d 100644 --- a/src/theme/Navbar/Content/index.tsx +++ b/src/theme/Navbar/Content/index.tsx @@ -2,7 +2,7 @@ import React from "react"; import Content from "@theme-original/Navbar/Content"; import type ContentType from "@theme/Navbar/Content"; import type { WrapperProps } from "@docusaurus/types"; -import { TopBanners } from "@site/src/components/TopBanners"; + type Props = WrapperProps; @@ -14,10 +14,6 @@ export default function ContentWrapper(props: Props): JSX.Element {
- -
- -
diff --git a/static/images/tutorials/amazon-bedrock/amazon-bedrock-base-models.png b/static/images/tutorials/amazon-bedrock/amazon-bedrock-base-models.png deleted file mode 100644 index 08db2b79..00000000 Binary files a/static/images/tutorials/amazon-bedrock/amazon-bedrock-base-models.png and /dev/null differ