mirror of
https://github.com/open-webui/docs.git
synced 2025-12-12 07:29:49 +07:00
Compare commits
23 Commits
bd20fa2b69
...
452b5fd9a6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
452b5fd9a6 | ||
|
|
e5cd33bc3b | ||
|
|
c6b1a83d7e | ||
|
|
fd288d3f2e | ||
|
|
b83be510fe | ||
|
|
f7d55528af | ||
|
|
b1fb7f9f5a | ||
|
|
2f3768eaba | ||
|
|
1d27a09ef3 | ||
|
|
88cfaa45c5 | ||
|
|
f259caed08 | ||
|
|
7e59becd58 | ||
|
|
80662a5af7 | ||
|
|
7e748f922b | ||
|
|
160cacb4a9 | ||
|
|
37a6efa2d3 | ||
|
|
5adf72e0ec | ||
|
|
1f3124525e | ||
|
|
a8b88bce34 | ||
|
|
e6e00efc8e | ||
|
|
672a98d058 | ||
|
|
fd29e9fd13 | ||
|
|
16feac98b7 |
@@ -5,8 +5,6 @@ sidebar_position: 1200
|
|||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
> **Audience:** admins and power users configuring external tools
|
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
Requires **Open WebUI v0.6.31+**.
|
Requires **Open WebUI v0.6.31+**.
|
||||||
:::
|
:::
|
||||||
@@ -47,6 +45,7 @@ Browser-based, multi-user deployments increase the surface area (CORS/CSRF, per-
|
|||||||
## ❓ FAQ
|
## ❓ FAQ
|
||||||
|
|
||||||
**Do you support stdio or SSE transports?**
|
**Do you support stdio or SSE transports?**
|
||||||
|
|
||||||
Native MCP support in Open WebUI is **Streamable HTTP only**. This design choice reflects our architecture: Open WebUI is a **web-based, multi-tenant environment**, not a local desktop process.
|
Native MCP support in Open WebUI is **Streamable HTTP only**. This design choice reflects our architecture: Open WebUI is a **web-based, multi-tenant environment**, not a local desktop process.
|
||||||
|
|
||||||
Browsers operate within strict **sandboxed and event-driven HTTP constraints**, making long-lived stdio or SSE connections difficult to maintain securely across users and sessions.
|
Browsers operate within strict **sandboxed and event-driven HTTP constraints**, making long-lived stdio or SSE connections difficult to maintain securely across users and sessions.
|
||||||
@@ -54,7 +53,9 @@ Browsers operate within strict **sandboxed and event-driven HTTP constraints**,
|
|||||||
If you need to bridge those other MCP transports, check out [**mcpo**](https://github.com/open-webui/mcpo) — an open-source proxy that translates **stdio or SSE-based MCP servers into OpenAPI-compatible endpoints**. It effectively lets you run traditional MCP tools inside Open WebUI without modifying their transport layer.
|
If you need to bridge those other MCP transports, check out [**mcpo**](https://github.com/open-webui/mcpo) — an open-source proxy that translates **stdio or SSE-based MCP servers into OpenAPI-compatible endpoints**. It effectively lets you run traditional MCP tools inside Open WebUI without modifying their transport layer.
|
||||||
|
|
||||||
**Is MCP considered stable here?**
|
**Is MCP considered stable here?**
|
||||||
|
|
||||||
Supported and improving. The broader ecosystem is still evolving; expect occasional breaking changes.
|
Supported and improving. The broader ecosystem is still evolving; expect occasional breaking changes.
|
||||||
|
|
||||||
**Can I mix OpenAPI and MCP tools?**
|
**Can I mix OpenAPI and MCP tools?**
|
||||||
|
|
||||||
Yes. Many deployments do both.
|
Yes. Many deployments do both.
|
||||||
@@ -12,7 +12,7 @@ As new variables are introduced, this page will be updated to reflect the growin
|
|||||||
|
|
||||||
:::info
|
:::info
|
||||||
|
|
||||||
This page is up-to-date with Open WebUI release version [v0.6.35](https://github.com/open-webui/open-webui/releases/tag/v0.6.35), but is still a work in progress to later include more accurate descriptions, listing out options available for environment variables, defaults, and improving descriptions.
|
This page is up-to-date with Open WebUI release version [v0.6.41](https://github.com/open-webui/open-webui/releases/tag/v0.6.41), but is still a work in progress to later include more accurate descriptions, listing out options available for environment variables, defaults, and improving descriptions.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -200,6 +200,12 @@ is also being used and set to `True`. **Never disable this if OAUTH/SSO is not b
|
|||||||
- Default: `0`
|
- Default: `0`
|
||||||
- Description: Sets the thread pool size for FastAPI/AnyIO blocking calls. By default (when set to `0`) FastAPI/AnyIO use `40` threads. In case of large instances and many concurrent users, it may be needed to increase `THREAD_POOL_SIZE` to prevent blocking.
|
- Description: Sets the thread pool size for FastAPI/AnyIO blocking calls. By default (when set to `0`) FastAPI/AnyIO use `40` threads. In case of large instances and many concurrent users, it may be needed to increase `THREAD_POOL_SIZE` to prevent blocking.
|
||||||
|
|
||||||
|
:::info
|
||||||
|
|
||||||
|
If you are running larger instances, you WILL NEED to set this to a higher value like multiple hundreds if not thousands (e.g. `1000`) otherwise your app may get stuck the default pool size (which is 40 threads) is full and will not react anymore.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
#### `MODELS_CACHE_TTL`
|
#### `MODELS_CACHE_TTL`
|
||||||
|
|
||||||
- Type: `int`
|
- Type: `int`
|
||||||
@@ -1614,6 +1620,14 @@ If you want to use Milvus, be careful when upgrading Open WebUI (crate backups a
|
|||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
| Collection Variable | Default Name (Suffix) | Trigger / Routing Logic in the Code | Purpose |
|
||||||
|
| :--- | :--- | :--- | :--- |
|
||||||
|
| `HASH_BASED_COLLECTION` | `_hash_based` | Collection name is a **63-char hex string** (SHA256 hash). | Caching direct URL fetches (Websites) with the `#` feature. |
|
||||||
|
| `MEMORY_COLLECTION` | `_memories` | Collection name starts with **`user-memory-`**. | Storing user-specific long-term memories of the experimental memory system. |
|
||||||
|
| `FILE_COLLECTION` | `_files` | Collection name starts with **`file-`**. | Storing uploaded documents (PDFs, DOCX, etc.). |
|
||||||
|
| `WEB_SEARCH_COLLECTION`| `_web_search` | Collection name starts with **`web-search-`**. | Storing transient results from search engine queries. |
|
||||||
|
| `KNOWLEDGE_COLLECTION` | `_knowledge` | **Everything else** (Default fallback). | Storing explicitly created Knowledge Bases. |
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
|
|
||||||
**Migration from Legacy Mode to Multitenancy**
|
**Migration from Legacy Mode to Multitenancy**
|
||||||
@@ -2153,25 +2167,94 @@ Note: this configuration assumes that AWS credentials will be available to your
|
|||||||
|
|
||||||
- Type: `str`
|
- Type: `str`
|
||||||
- Default: `http://docling:5001`
|
- Default: `http://docling:5001`
|
||||||
- Description: Specifies the URL for the Docling server. Requires Docling version 1.0.0 or later.
|
- Description: Specifies the URL for the Docling server. Requires Docling version 2.0.0 or later for full compatibility with the new parameter-based configuration system.
|
||||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||||
|
|
||||||
#### `DOCLING_OCR_ENGINE`
|
:::warning
|
||||||
|
|
||||||
|
**Docling 2.0.0+ Required**
|
||||||
|
|
||||||
|
The Docling integration has been refactored to use server-side parameter passing. If you are using Docling:
|
||||||
|
|
||||||
|
1. Upgrade to Docling server version 2.0.0 or later
|
||||||
|
2. Migrate all individual `DOCLING_*` configuration variables to the `DOCLING_PARAMS` JSON object
|
||||||
|
3. Remove all deprecated `DOCLING_*` environment variables from your configuration
|
||||||
|
4. Add `DOCLING_API_KEY` if your server requires authentication
|
||||||
|
|
||||||
|
The old individual environment variables (`DOCLING_OCR_ENGINE`, `DOCLING_OCR_LANG`, etc.) are no longer supported and will be ignored.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
#### `DOCLING_API_KEY`
|
||||||
|
|
||||||
- Type: `str`
|
- Type: `str`
|
||||||
- Default: `tesseract`
|
- Default: `None`
|
||||||
- Description: Specifies the OCR engine used by Docling.
|
- Description: Sets the API key for authenticating with the Docling server. Required when the Docling server has authentication enabled.
|
||||||
Supported values include: `tesseract` (default), `easyocr`, `ocrmac`, `rapidocr`, and `tesserocr`.
|
|
||||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||||
|
|
||||||
#### `DOCLING_OCR_LANG`
|
#### `DOCLING_PARAMS`
|
||||||
|
|
||||||
|
- Type: `str` (JSON)
|
||||||
|
- Default: `{}`
|
||||||
|
- Description: Specifies all Docling processing parameters in JSON format. This is the primary configuration method for Docling processing options. All previously individual Docling settings are now configured through this single JSON object.
|
||||||
|
|
||||||
|
**Supported Parameters:**
|
||||||
|
- `do_ocr` (bool): Enable OCR processing
|
||||||
|
- `force_ocr` (bool): Force OCR even when text layer exists
|
||||||
|
- `ocr_engine` (str): OCR engine to use (`tesseract`, `easyocr`, `ocrmac`, `rapidocr`, `tesserocr`)
|
||||||
|
- `ocr_lang` (str): OCR language codes (e.g., `eng,fra,deu,spa`)
|
||||||
|
- `pdf_backend` (str): PDF processing backend
|
||||||
|
- `table_mode` (str): Table extraction mode
|
||||||
|
- `pipeline` (str): Processing pipeline to use
|
||||||
|
- `do_picture_description` (bool): Enable image description generation
|
||||||
|
- `picture_description_mode` (str): Mode for picture descriptions
|
||||||
|
- `picture_description_local` (str): Local model for picture descriptions
|
||||||
|
- `picture_description_api` (str): API endpoint for picture descriptions
|
||||||
|
- `vlm_pipeline_model_api` (str): Vision-language model API configuration
|
||||||
|
|
||||||
|
- Example:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"do_ocr": true,
|
||||||
|
"ocr_engine": "tesseract",
|
||||||
|
"ocr_lang": "eng,fra,deu,spa",
|
||||||
|
"force_ocr": false,
|
||||||
|
"do_picture_description": true,
|
||||||
|
"picture_description_mode": "api",
|
||||||
|
"vlm_pipeline_model_api": "openai://gpt-4o"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
- Type: `str`
|
|
||||||
- Default: `eng,fra,deu,spa` (when using the default `tesseract` engine)
|
|
||||||
- Description: Specifies the OCR language(s) to be used with the configured `DOCLING_OCR_ENGINE`.
|
|
||||||
The format and available language codes depend on the selected OCR engine.
|
|
||||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||||
|
|
||||||
|
:::info
|
||||||
|
|
||||||
|
**Migration from Individual Docling Variables**
|
||||||
|
|
||||||
|
If you were previously using individual `DOCLING_*` environment variables (such as `DOCLING_OCR_ENGINE`, `DOCLING_OCR_LANG`, etc.), these are now deprecated. You must migrate to using `DOCLING_PARAMS` as a single JSON configuration object.
|
||||||
|
|
||||||
|
**Example Migration:**
|
||||||
|
```bash
|
||||||
|
# Old configuration (deprecated)
|
||||||
|
DOCLING_OCR_ENGINE=tesseract
|
||||||
|
DOCLING_OCR_LANG=eng,fra
|
||||||
|
DOCLING_DO_OCR=true
|
||||||
|
|
||||||
|
# New configuration (required)
|
||||||
|
DOCLING_PARAMS='{"do_ocr": true, "ocr_engine": "tesseract", "ocr_lang": "eng,fra"}'
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::warning
|
||||||
|
|
||||||
|
When setting this environment variable in a `.env` file, ensure proper JSON formatting and escape quotes as needed:
|
||||||
|
```
|
||||||
|
DOCLING_PARAMS="{\"do_ocr\": true, \"ocr_engine\": \"tesseract\", \"ocr_lang\": \"eng,fra,deu,spa\"}"
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
## Retrieval Augmented Generation (RAG)
|
## Retrieval Augmented Generation (RAG)
|
||||||
|
|
||||||
### Core Configuration
|
### Core Configuration
|
||||||
@@ -2369,9 +2452,36 @@ When configuring `RAG_FILE_MAX_SIZE` and `RAG_FILE_MAX_COUNT`, ensure that the v
|
|||||||
|
|
||||||
- Type: `int`
|
- Type: `int`
|
||||||
- Default: `1`
|
- Default: `1`
|
||||||
- Description: Controls how many text chunks are embedded in a single API request when using external embedding providers (Ollama, OpenAI, or Azure OpenAI). Higher values (20-100+; max 16000) process documents faster by sending more API requests, but may exceed API rate limits, while lower values (1-10) are more stable but slower. Default is 1 (safest option if you are API rate limit constrained, but slowest option). This setting only applies to external embedding engines, not the default SentenceTransformers engine.
|
- Description: Controls how many text chunks are embedded in a single API request when using external embedding providers (Ollama, OpenAI, or Azure OpenAI). Higher values (20-100+; max 16000 (not recommended)) may process documents faster by sending less, but larger API requests. Some external APIs do not support batching or sending more than 1 chunk per request. In such casey you must leave this at `1`. Default is 1 (safest option if the API does not support batching / more than 1 chunk per request). This setting only applies to external embedding engines, not the default SentenceTransformers engine.
|
||||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||||
|
|
||||||
|
:::info
|
||||||
|
|
||||||
|
Check if your API and embedding model supports batched processing.
|
||||||
|
Only increase this variable's value if it does - otherwise you might run into unexpected issues.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
#### `ENABLE_ASYNC_EMBEDDING`
|
||||||
|
|
||||||
|
- Type: `bool`
|
||||||
|
- Default: `true`
|
||||||
|
- Description: Runs embedding tasks asynchronously (parallelized) for maximum performance. Only works for Ollama, OpenAI and Azure OpenAI, does not affect sentence transformer setups.
|
||||||
|
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
|
||||||
|
It may be needed to increase the value of `THREAD_POOL_SIZE` if many other users are simultaneously using your Open WebUI instance while having async embeddings turned on to prevent
|
||||||
|
|
||||||
|
:::warning
|
||||||
|
|
||||||
|
Enabling this will potentially send thousands of requests per minute.
|
||||||
|
If you are embedding locally, ensure that you can handle this amount of requests, otherwise turn this off to return to sequential embedding (slower but will always work).
|
||||||
|
If you are embedding externally via API, ensure your rate limits are high enough to handle parallel embedding.
|
||||||
|
(Usually, OpenAI can handle thousands of embedding requests per minute, even on the lowest API tier).
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
#### `RAG_EMBEDDING_CONTENT_PREFIX`
|
#### `RAG_EMBEDDING_CONTENT_PREFIX`
|
||||||
|
|
||||||
- Type: `str`
|
- Type: `str`
|
||||||
|
|||||||
@@ -13,20 +13,18 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
|||||||
:::tip
|
:::tip
|
||||||
**Here's the TL;DR:**
|
**Here's the TL;DR:**
|
||||||
|
|
||||||
To keep Open WebUI thriving for the long term, we’ve introduced a **lightweight branding protection clause** that helps us sustain the project while ensuring **every user** continues to benefit from rapid innovation **without resorting to gated features or paywalled functionality**. Branding requirements **only apply to larger deployments (50+ users)**. Deployments with 50 or fewer users may fully rebrand if they choose.
|
To keep Open WebUI thriving for the long term, we’ve introduced a **lightweight branding protection clause** with Open WebUI v0.6.6+ that helps us sustain the project while ensuring **every user** continues to benefit from rapid innovation **without resorting to gated features or paywalled functionality**. Branding requirements **only apply to larger deployments (50+ users)**. Deployments with 50 or fewer users may fully rebrand if they choose.
|
||||||
|
|
||||||
As a small, independent team building mission-critical AI tooling, we rely on fair attribution to **support ongoing development, security, and quality**, all without restricting real users, contributors, or businesses who use Open WebUI responsibly.
|
As a small, independent team building mission-critical AI tooling, we rely on fair attribution to **support ongoing development, security, and quality**, all without restricting real users, contributors, or businesses who use Open WebUI responsibly.
|
||||||
|
|
||||||
And for those who prefer a fully permissive path, **[anyone can still fork from v0.6.5 with zero restrictions and build from there however they choose](https://github.com/open-webui/open-webui/blob/main/LICENSE_HISTORY)**. It’s a simple, balanced step that protects the ecosystem, strengthens the project, and **ensures we can sustain our mission of empowering everyone**.
|
And for those who prefer a fully permissive path, **[anyone can still fork from v0.6.5 with zero restrictions and build from there however they choose](https://github.com/open-webui/open-webui/blob/main/LICENSE_HISTORY)**. It’s a simple, balanced step that protects the ecosystem, strengthens the project, and **ensures we can sustain our mission of empowering everyone**.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
If you've been following Open WebUI’s journey, you know our mission has always been: empower everyone with cutting-edge AI, no strings attached. Open WebUI is an independent project, built and maintained by a small, dedicated core team. Over the last year, we’ve poured **countless hours, late nights, and real financial resources** into making this tool world-class, **and we trust our users enough to keep it free and open**.
|
If you've been following Open WebUI’s journey, you know our mission has always been: empower everyone with cutting-edge AI, no strings attached. Open WebUI is an independent project, built and maintained by a small, dedicated core team. Over the last year, we’ve poured **countless hours, late nights, and real financial resources** into making this tool world-class, **and we trust our users enough to keep it free and open**.
|
||||||
|
|
||||||
But with Open WebUI’s rapid growth and success, we started seeing a pattern we couldn’t ignore: **bad actors taking our work, stripping the branding, selling it as their own, and giving nothing back.** That’s not open source, that’s exploitation. When organizations profit off our efforts, misrepresent our work, and box out the real community, it threatens the very spirit of what we’re trying to build.
|
But with Open WebUI’s rapid growth, we began seeing a pattern that put real pressure on the project’s **long-term sustainability**: some groups were stripping out the branding, repackaging our work as their own, and monetizing it without any acknowledgment or participation. This wasn’t just about credit, it created confusion for end users, **obscured the project’s availability as a free software**, and made it harder for people to understand where the software came from. Worse, these same groups often came back to us for fixes, support, and updates, effectively turning our small team into **unpaid labor** for products they were profiting from, quietly shifting the burden of their commercial offerings. That dynamic ultimately drained time, focus, our limited bandwidth and resources away from the people we’re actually here to serve: **the real community**.
|
||||||
|
|
||||||
That’s why we’ve acted: **with Open WebUI v0.6.6+ (April 2025), our license remains permissive, but now adds a fair-use branding protection clause**. This update does **not** impact genuine users, contributors, or anyone who simply wants to use the software in good faith. If you’re a real contributor, a small team, or an organization adopting Open WebUI for internal use, **nothing changes for you**. This change **only affects those who intend to exploit the project’s goodwill**: stripping away its identity, falsely representing it, and never giving back.
|
That’s why we’ve acted: **with Open WebUI v0.6.6+ (April 2025), our license remains permissive, but now adds a fair-use branding protection clause**. This update does **not** impact genuine users, contributors, or anyone who simply wants to use the software in good faith. If you’re a real contributor, a small team, or an organization adopting Open WebUI for internal use, **nothing changes for you**. This change **only affects those who intend to exploit the project’s goodwill**.
|
||||||
|
|
||||||
In plain terms:
|
In plain terms:
|
||||||
- **Open WebUI is still free and permissively licensed.**
|
- **Open WebUI is still free and permissively licensed.**
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ Passionate about open-source AI? [Join our team →](https://careers.openwebui.c
|
|||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
Our team is led by the dedicated creator and founder, [Tim J. Baek](https://github.com/tjbck). Although Tim is currently the only official full-time member of the core development team, we’re also supported by talented team members from our company who work hard behind the scenes to make this project great. In addition, we are incredibly fortunate to have a community of **[amazing contributors](https://github.com/open-webui/open-webui/graphs/contributors)** who find this project valuable and actively participate in its continued success.
|
Our team is led by the dedicated creator and founder, [Tim J. Baek](https://github.com/tjbck). We’re supported by talented team members from our company who work hard behind the scenes to make this project great. In addition, we are incredibly fortunate to have a community of **[amazing contributors](https://github.com/open-webui/open-webui/graphs/contributors)** who find this project valuable and actively participate in its continued success.
|
||||||
|
|
||||||
### 💓 Our Contributors
|
### 💓 Our Contributors
|
||||||
|
|
||||||
@@ -38,7 +38,5 @@ Beyond our contributors, Open WebUI, Inc. has an incredible global team working
|
|||||||
|
|
||||||
We greatly appreciate enthusiasm and thoughtful suggestions from our community. At the same time, **we're not looking for unsolicited governance recommendations or guidance on how to operate**—we know exactly how we want to run our project (just as, for example, you wouldn't tell OpenAI how to run theirs). Open WebUI maintains strong, opinionated leadership because that's precisely what we believe is necessary to build something truly great, fast-moving, and purposeful.
|
We greatly appreciate enthusiasm and thoughtful suggestions from our community. At the same time, **we're not looking for unsolicited governance recommendations or guidance on how to operate**—we know exactly how we want to run our project (just as, for example, you wouldn't tell OpenAI how to run theirs). Open WebUI maintains strong, opinionated leadership because that's precisely what we believe is necessary to build something truly great, fast-moving, and purposeful.
|
||||||
|
|
||||||
If our leadership and governance style align with your views, we're thrilled to have your continued support and contributions. However, if you fundamentally disagree with our direction, **one of the key benefits of our open-source license is the freedom to fork the project and implement your preferred approach.**
|
|
||||||
|
|
||||||
Thank you for respecting our perspective and for your continued support and contributions. We're excited to keep building with the community around the vision we've established together!
|
Thank you for respecting our perspective and for your continued support and contributions. We're excited to keep building with the community around the vision we've established together!
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ The `CORS_ALLOW_ORIGIN` setting is crucial for WebSocket functionality. If you s
|
|||||||
|
|
||||||
### Reverse Proxy / SSL/TLS Configuration
|
### Reverse Proxy / SSL/TLS Configuration
|
||||||
|
|
||||||
For reverse proxy and TLS setups, check our [tutorials here](docs/tutorials/https).
|
For reverse proxy and TLS setups, check our [tutorials here](/category/https).
|
||||||
|
|
||||||
### WebSocket Troubleshooting
|
### WebSocket Troubleshooting
|
||||||
|
|
||||||
|
|||||||
@@ -1,178 +1,98 @@
|
|||||||
---
|
---
|
||||||
sidebar_position: 1000
|
sidebar_position: 1000
|
||||||
title: "Deployment"
|
title: "Deployment & Community Guides"
|
||||||
---
|
---
|
||||||
|
|
||||||
import { TopBanners } from "@site/src/components/TopBanners";
|
import { TopBanners } from "@site/src/components/TopBanners";
|
||||||
|
|
||||||
<TopBanners />
|
<TopBanners />
|
||||||
|
|
||||||
:::warning
|
:::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.
|
||||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
:::info
|
## 📝 Written Guides
|
||||||
|
|
||||||
# 📢 **Calling all YouTubers and Content Creators!**
|
Step-by-step articles for advanced deployment scenarios.
|
||||||
We're looking for talented individuals to create videos showcasing Open WebUI's features. If you make a video, we'll feature it at the top of our guide section!
|
|
||||||
|
|
||||||
|
* **Secure HTTPS Deployment**
|
||||||
|
* [Deploy Your Own Open WebUI Interface with HTTPS Security](https://henrynavarro.org/deploy-your-own-open-webui-interface-with-https-security-53a6ea2609d7?sk=a5876acd56b44ea60f10f9b13aa24aee) — *via Medium (@hdnh2006)*
|
||||||
|
* **Google Drive Integration**
|
||||||
|
* [How to integrate Google Drive with Open WebUI](https://henrynavarro.org/how-to-integrate-google-drive-with-open-webui-e525c8f3f82e?sk=a9f48cd1590e3e8dca052f7fe9f12765) — *via Medium (@hdnh2006)*
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
:::info 📹 Content Creators Wanted!
|
||||||
|
**Are you a YouTuber or Blogger?**
|
||||||
|
We are looking for talented individuals to create content showcasing Open WebUI's features. If you make a high-quality video or guide, let us know and we'll feature it here!
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Articles
|
---
|
||||||
|
|
||||||
- Learn how to deploy Open WebUI 100% secure through https: [Deploy Your Own Open WebUI Interface with HTTPS Security](https://henrynavarro.org/deploy-your-own-open-webui-interface-with-https-security-53a6ea2609d7?sk=a5876acd56b44ea60f10f9b13aa24aee) (Medium article by @hdnh2006)
|
## 📺 Video Gallery
|
||||||
|
|
||||||
- Google Drive integration in Open WebUI interface tutorial: [How to integrate Google Drive with Open WebUI](https://henrynavarro.org/how-to-integrate-google-drive-with-open-webui-e525c8f3f82e?sk=a9f48cd1590e3e8dca052f7fe9f12765) (Medium article by @hdnh2006)
|
A collection of community installation guides, reviews, and deployment tutorials.
|
||||||
|
|
||||||
## Videos
|
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fill, minmax(450px, 1fr))', gap: '20px' }}>
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/8iVHOkUrpSA?si=Jt1GVqA0wY4UI7sF" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/8iVHOkUrpSA?si=Jt1GVqA0wY4UI7sF"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen>
|
|
||||||
</iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/QHuTBksNt_w?si=l99ZFxeNbbPcyfch" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/QHuTBksNt_w?si=l99ZFxeNbbPcyfch"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/Gyvy9JpDVBw?si=qUf0DVd4bnp_ndzH" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/Gyvy9JpDVBw?si=qUf0DVd4bnp_ndzH"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/Ic5BRW_nLok?si=zhQXPqb0PuKqg3u1" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/Ic5BRW_nLok?si=zhQXPqb0PuKqg3u1"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/bp2eev21Qfo?si=-JoG1as7l6ZjNDyE" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/bp2eev21Qfo?si=-JoG1as7l6ZjNDyE"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/DHVQ1UBaYMQ?si=PjslnpJKiHsct8lF" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/DHVQ1UBaYMQ?si=PjslnpJKiHsct8lF"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/Wjrdr0NU4Sk?si=gDsyvkE19AsMlJJa" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/Wjrdr0NU4Sk?si=gDsyvkE19AsMlJJa"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/kDwEIgmqaEE?si=hes3N1xHp7AaVOGk" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/kDwEIgmqaEE?si=hes3N1xHp7AaVOGk"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/D4H5hMMoZ28?si=vKiTocXDRkez1SoV" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/D4H5hMMoZ28?si=vKiTocXDRkez1SoV"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/syR0fT0rkgY?si=UusLnKSvU1HGjtyc" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/syR0fT0rkgY?si=UusLnKSvU1HGjtyc"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/jlvjipGNwSU?si=RrPk-tMRFU_badO8" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/jlvjipGNwSU?si=RrPk-tMRFU_badO8"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/PhCoRPY7hCE?si=flHuovmiwx7DwKZb" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/PhCoRPY7hCE?si=flHuovmiwx7DwKZb"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/zc3ltJeMNpM?si=FJvfCccQYIntnAJR" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/zc3ltJeMNpM?si=FJvfCccQYIntnAJR"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/CcGrI9YkUJI?si=YGdmDlz268MAxmkn" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/CcGrI9YkUJI?si=YGdmDlz268MAxmkn"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
<iframe
|
<div style={{ position: 'relative', paddingBottom: '56.25%', height: 0 }}>
|
||||||
width="560"
|
<iframe style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} src="https://www.youtube-nocookie.com/embed/cGBjAned72A?si=Q5E4MqtKW3r1PC56" title="Open WebUI Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
height="315"
|
</div>
|
||||||
src="https://www.youtube-nocookie.com/embed/cGBjAned72A?si=Q5E4MqtKW3r1PC56"
|
|
||||||
title="YouTube video player"
|
</div>
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
Reference in New Issue
Block a user