diff --git a/README_CUSTOM.md b/README_CUSTOM.md new file mode 100644 index 000000000..e398d3879 --- /dev/null +++ b/README_CUSTOM.md @@ -0,0 +1,154 @@ +# 🦾 Open WebUI β€” ΠšΠ°ΡΡ‚ΠΎΠΌΠ½Π°Ρ сборка (open-webui-custom) + +> **ВСрсия:** 0.9.1 (Π½Π° Π±Π°Π·Π΅ upstream v0.8.1 + dev-ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹) +> **Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ upstream:** [github.com/open-webui/open-webui](https://github.com/open-webui/open-webui) +> **Π”Π°Ρ‚Π° сборки:** 2026-04-22 + +--- + +## πŸ“‹ Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ + +Π­Ρ‚ΠΎ **Ρ„ΠΎΡ€ΠΊ Open WebUI** с нашими кастомными настройками развёртывания. Основной ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Open WebUI β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Π²Π΅Π±-интСрфСйс для LLM-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (Ollama, OpenAI-совмСстимыС API ΠΈ Π΄Ρ€.), Π° наша сборка добавляСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сСрвСра. + +ВсС измСнСния вынСсСны Π² Π²Π΅Ρ‚ΠΊΡƒ custom, Π²Π΅Ρ‚ΠΊΠ° main синхронизирована с upstream. + +--- + +## πŸ”§ Наши измСнСния (Π²Π΅Ρ‚ΠΊΠ° custom) + +| Π€Π°ΠΉΠ» | ИзмСнСниС | +|------|-----------| +| docker-compose.yaml | Bind mounts Π½Π° /mnt/1TB/docker/, ΠΏΠΎΡ€Ρ‚ Ollama 11434 Π½Π°Ρ€ΡƒΠΆΡƒ, GPU-ΠΎΠ±Ρ€Π°Π· | +| docker-compose.override.yaml | 3 Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Ollama + Nginx reverse proxy для балансировки | +| nginx.conf | Upstream-балансировщик ΠΌΠ΅ΠΆΠ΄Ρƒ инстансами Ollama | +| MOK.crt/der/key | ΠšΠ»ΡŽΡ‡ΠΈ MOK для Secure Boot | + +--- + +## πŸš€ ВозмоТности Open WebUI v0.9.1 + +### πŸ’¬ Π§Π°Ρ‚ ΠΈ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ +- **ΠœΡƒΠ»ΡŒΡ‚ΠΈ-ΠΌΠΎΠ΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‡Π°Ρ‚** - одноврСмСнная Ρ€Π°Π±ΠΎΡ‚Π° с нСсколькими LLM-модСлями, сравнСниС ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² +- **ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний** - ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ сообщСния ΠΏΠΎΠΊΠ° ΠΈΠ΄Π΅Ρ‚ гСнСрация +- **ΠšΠ°Π½Π°Π»Ρ‹ (Channels)** - Π³Ρ€ΡƒΠΏΠΏΠΎΠ²Ρ‹Π΅ Ρ‡Π°Ρ‚Ρ‹ с увСдомлСниями ΠΈ модСлями +- **ΠžΠ±Ρ‰ΠΈΠ΅ Ρ‡Π°Ρ‚Ρ‹ (Shared chats)** - Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‡Π°Ρ‚Π°ΠΌΠΈ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ доступом +- **Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‡Π°Ρ‚Ρ‹** - Π±Π΅Π· сохранСния истории +- **Π’Π΅Ρ‚ΠΊΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²** - ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ любой Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° + +### 🧠 RAG ΠΈ Π±Π°Π·Π° Π·Π½Π°Π½ΠΈΠΉ +- **Knowledge Base** - Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (PDF, DOCX, CSV, TXT, MD, HTML, JSON, изобраТСния) +- **АвтоматичСский RAG** - ΠΌΠΎΠ΄Π΅Π»ΠΈ сами Ρ€Π΅ΡˆΠ°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π±Π°Π·Π΅ Π·Π½Π°Π½ΠΈΠΉ +- **Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ Π‘Π”** - ChromaDB, Milvus, Qdrant, OpenSearch, pgvector, Weaviate, ElasticSearch +- **ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ‡Π°Π½ΠΊΠΈΠ½Π³** - PDF: страницы ΠΈΠ»ΠΈ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ + +### πŸ”§ Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ (Tools and Functions) +- **Tools** - Python-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ модСлью Π² Ρ‡Π°Ρ‚Π΅ +- **Functions** - Filter (ΠΏΡ€Π΅-пост ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°), Pipe (ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹), Action (дСйствия) +- **Pipelines API** - сСрвСрныС ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹: rate-limiting, moderation, routing +- **MCP (Model Context Protocol)** - внСшниС tool-сСрвСры с OAuth 2.1 +- **OpenAPI Import** - ΠΈΠΌΠΏΠΎΡ€Ρ‚ REST API ΠΊΠ°ΠΊ инструмСнтов Ρ‡Π°Ρ‚Π° +- **Function Calling** - ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Python-ΠΊΠΎΠ΄ ΠΈ API Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ +- **Web Search** - Google, Bing, DuckDuckGo, SearxNG, Brave, Kagi, Yandex + +### 🎯 Skills (Навыки) - ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ функция v0.9.1 +- ΠŸΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ инструкции, Π²Ρ‹Π·ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· $ Π² Ρ‡Π°Ρ‚Π΅ +- ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ модСлям для автоматичСского контСкста + +### πŸ“Š Аналитика +- Dashboard - статистика использования, Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ +- Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ, история Ρ„ΠΈΠ΄Π±Π΅ΠΊΠ° ΠΏΠΎ модСлям + +### πŸ›‘οΈ Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ доступом +- **Access Grants** - ΠΏΡ€Π°Π²Π° чтСния/записи для Π³Ρ€ΡƒΠΏΠΏ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ +- **SCIM** - интСграция с Microsoft Entra ID ΠΈ Okta +- **OAuth 2.0** - Google, Microsoft, GitHub, OIDC + Token Exchange +- **LDAP** - аутСнтификация Ρ‡Π΅Ρ€Π΅Π· Active Directory +- **Trusted Header Auth** - аутСнтификация Ρ‡Π΅Ρ€Π΅Π· reverse proxy +- **API-ΠΊΠ»ΡŽΡ‡ΠΈ** - доступ ΠΊ API с ΠΏΡ€Π°Π²Π°ΠΌΠΈ Π°Π΄ΠΌΠΈΠ½Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ + +### πŸ—£οΈ Голос ΠΈ Π°ΡƒΠ΄ΠΈΠΎ +- Speech-to-Text (Whisper, OpenAI API) +- Text-to-Speech (ElevenLabs, OpenAI TTS, Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ) + +### ⚑ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ +- 34% быстрСС аутСнтификация +- Sub-second Time-To-First-Token с ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ +- АсинхронныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (Pipeline, Web Search, Π­ΠΌΠ±Π΅Π΄Π΄ΠΈΠ½Π³ΠΈ) +- Batch-запросы Π² 4-5 Ρ€Π°Π· быстрСС +- Redis Sentinel для кластСризации + +--- + +## πŸ”„ Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°ΠΌΠΈ ΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠ°Π³Π΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ систСмами + +### Π§Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ + +| Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ | ОписаниС | Бтатус | +|-------------|----------|--------| +| Pipelines API | Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹: rate-limiting, moderation, routing | βœ… | +| Filter Functions | ΠŸΡ€Π΅/пост-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСний | βœ… | +| Pipe Functions | ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ запросов ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ модСлям/ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°ΠΌ | βœ… | +| MCP Protocol | Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ tool-сСрвСры с Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ | βœ… | +| OpenAPI Import | Π˜ΠΌΠΏΠΎΡ€Ρ‚ REST API ΠΊΠ°ΠΊ инструмСнтов | βœ… | +| Function Calling | МодСли Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Python-ΠΊΠΎΠ΄ ΠΈ API | βœ… | +| Skills | ΠŸΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ инструкции для ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ | ⚠️ Π­ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ | +| Event Emitters | Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ инструмСнты ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ события Π² Ρ‡Π°Ρ‚ | βœ… | + +### Как ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ + +3 уровня ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ: + +1. **Functions (Python)** - Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² UI, ΠΏΠΈΡˆΡƒΡ‚ΡΡ прямо Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ +2. **Pipelines** - ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сСрвСры-посрСдники (Lua, JS, Python) +3. **MCP + OpenAPI** - ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Π½Π΅ΡˆΠ½ΠΈΡ… сСрвисов ΠΊΠ°ΠΊ инструмСнтов Ρ‡Π°Ρ‚Π° + +### Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠ°Π³Π΅Π½Ρ‚Π½ΠΎΠΉ систСмой + +Open WebUI = Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ для ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠ°Π³Π΅Π½Ρ‚Π½ΠΎΠΉ систСмы: + + ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ -> Open WebUI -> Pipe Function -> Pipeline -> АгСнты -> МодСли + | + Event Emitters -> Π§Π°Ρ‚ UI + +ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ: +- **Pipe Function** - ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ запрос ΠΈ направляСт Π² Pipeline Runner +- **MCP Server** - экспортируСт Π°Π³Π΅Π½Ρ‚ΠΎΠ² ΠΊΠ°ΠΊ инструмСнты (task delegation, code review) +- **Event Emitters** - Π°Π³Π΅Π½Ρ‚ ΡˆΠ»Ρ‘Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ статусы Π² Ρ‡Π°Ρ‚ +- **Skills** - привязка инструкций ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ +- **Knowledge Base** - Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΡƒΡŽ Π‘Π” + +--- + +## πŸ“ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° дСплоя + + /mnt/1TB/docker/ + +-- ollama/ # Π”Π°Π½Π½Ρ‹Π΅ Ollama (ΠΌΠΎΠ΄Π΅Π»ΠΈ) + +-- open-webui/ # Π”Π°Π½Π½Ρ‹Π΅ Open WebUI (Π‘Π”, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ) + + /root/open-webui/ + +-- docker-compose.yaml # Основной (наш) + +-- docker-compose.gpu.yaml # GPU-ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ (upstream) + +-- docker-compose.override.yaml # Наш: Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ + nginx + +-- nginx.conf # Балансировщик Ollama + +-- MOK.* # ΠšΠ»ΡŽΡ‡ΠΈ Secure Boot + +-- dump/ # SQL-Π΄Π°ΠΌΠΏΡ‹ + +--- + +## πŸ› Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π±Π°Π³ΠΈ Π² нашСй сборкС + +| Π‘Π°Π³ | ОписаниС | +|-----|----------| +| No module aiosqlite | Π”ΠΎΠ±Π°Π²Π»Π΅Π½ aiosqlite Π² pyproject.toml | +| No module asyncpg | Π”ΠΎΠ±Π°Π²Π»Π΅Π½ asyncpg для PostgreSQL | +| no such table: calendar_event | Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° Alembic-миграция (вСрсия head != Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ схСма) | + +--- + +## ⚠️ Π’Π°ΠΆΠ½ΠΎ + +- Бэкапы Π‘Π” ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ: /mnt/1TB/docker/open-webui/webui.db +- ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ alembic_version ΠΏΠ΅Ρ€Π΅Π΄ запуском Π½ΠΎΠ²ΠΎΠΉ вСрсии +- Π’Π΅Ρ‚ΠΊΠ° main - чистый upstream, Π½Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ +- Π’Π΅Ρ‚ΠΊΠ° custom - наши измСнСния, merge с main ΠΏΡ€ΠΈ обновлСниях +