Merge pull request #845 from open-webui/main

This commit is contained in:
Classic298
2025-11-24 22:05:23 +01:00
committed by GitHub
7 changed files with 87 additions and 154 deletions

View File

@@ -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.

View File

@@ -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**

View File

@@ -13,7 +13,7 @@ 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, weve 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, weve 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.

View File

@@ -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, were 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). Were 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!

View File

@@ -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

View File

@@ -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>