Когда вы запускаете локальную модель через Ollama, получается работать только через CLI. Это удобно для тестов, но не для ежедневной работы. Нужен интерфейс: с историей чатов, загрузкой документов, управлением моделями и пользователями.
Open WebUI решает эту задачу — это self-hosted веб-интерфейс для LLM, который работает с Ollama и любыми OpenAI-совместимыми API. Запускается одной Docker-командой, хранит данные локально и не требует внешних сервисов.
Проект набрал более 140 тысяч звёзд на GitHub и используется как в небольших домашних сетапах, так и в корпоративных деплоях на тысячи пользователей. Samsung Semiconductor, Public Storage, Astellas Pharma — примеры компаний, построивших на его основе внутренние AI-платформы.
В этом материале разберём, как Open WebUI устроен, что умеет и где у него границы.
Что это
Open WebUI — это расширяемая, многофункциональная self-hosted AI-платформа, спроектированная для работы полностью в офлайн-режиме. Она поддерживает Ollama для локальных моделей и любой OpenAI-совместимый API для облачных провайдеров. Встроенный inference-движок обеспечивает RAG (Retrieval Augmented Generation — генерация с дополненной выборкой) прямо из коробки.
Ключевое отличие от облачных чат-сервисов: все данные — история диалогов, загруженные документы, векторные embeddings — хранятся на вашем сервере. Никаких внешних запросов по умолчанию. Модели приватны и должны быть явно опубликованы, чтобы другие пользователи их увидели.
Проект написан на Python (бэкенд) и Svelte (фронтенд). Лицензия — модифицированная BSD-3 с branding clause: код открыт и бесплатен, но для деплоев с 50+ пользователями нужно сохранить брендинг Open WebUI или приобрести Enterprise-лицензию. Версии до v0.6.5 распространялись под чистой BSD-3-Clause и остаются свободными без ограничений.
Зачем нужно
Open WebUI закрывает несколько практических задач, которые сложно решить по отдельности:
- Единый интерфейс для разных моделей. Подключите Ollama для локальных моделей, OpenAI для GPT, Anthropic для Claude, vLLM для self-hosted inference — всё в одном окне. Переключение моделей в чате, сравнение ответов нескольких моделей одновременно.
- Командная работа с AI. Многопользовательские аккаунты с ролевой моделью доступа (RBAC), общие чаты, каналы для совместной работы с моделями в реальном времени.
- RAG без отдельных сервисов. Загрузка документов в чат, векторные базы данных (поддержка 9 систем: ChromaDB, PGVector, Qdrant, Milvus, Elasticsearch, OpenSearch, Pinecone, S3Vector, Oracle 23ai), веб-поиск через десятки провайдеров — всё встроено.
- Офлайн-работа. Полная функциональность без интернет-соединения, если используются локальные модели. Подходит для air-gapped окружений и ситуаций с повышенными требованиями к безопасности данных.
- Расширяемость. Плагины (Filters, Actions, Pipes, Tools, Skills), MCP (Model Context Protocol), MCPO и OpenAPI tool servers — для интеграций с внешними сервисами, rate limits, approval flows и кастомных workflow.
Как устроено
Архитектура Open WebUI построена вокруг трёх слоёв: фронтенд на Svelte, бэкенд на Python (FastAPI) и хранилище данных.
Бэкенд
Бэкенд работает на Python 3.11+ и использует FastAPI. Хранит данные в SQLite (по умолчанию, с опциональным шифрованием) или PostgreSQL. Файлы можно хранить локально или в S3, Google Cloud Storage, Azure Blob Storage.
Ключевые компоненты бэкенда:
- Inference engine — встроенный движок для RAG, работающий с 9 векторными базами. Поддерживает гибридный поиск (BM25 + vector) с reranking и full-context mode.
- Model provider layer — абстракция над разными поставщиками моделей. Ollama, OpenAI API, Anthropic, llama.cpp, vLLM — все подключаются через единую конфигурацию.
- Plugin system — Filters (преобработка/постобработка сообщений), Actions (вызовы внешних сервисов), Pipes (маршрутизация запросов), Tools (инструменты для моделей), Skills (переиспользуемые наборы инструкций).
- Auth & RBAC — ролевая модель доступа с группами, разрешениями и детальным контролем. LDAP/Active Directory, SSO через trusted headers и OAuth, SCIM 2.0 для автоматического provisioning.
Фронтенд
Svelte-фронтенд обеспечивает responsive-дизайн с PWA-поддержкой (Progressive Web App). Работает на десктопе, ноутбуке и мобильных устройствах. На localhost доступен офлайн-режим через PWA.
Поддержка Markdown и LaTeX для форматирования сообщений. Голосовые и видеозвонки с несколькими Speech-to-Text провайдерами (Local Whisper, OpenAI, Deepgram, Azure) и Text-to-Speech движками (Azure, ElevenLabs, OpenAI, Transformers, WebAPI).
Хранилище
| Компонент | Варианты |
|---|---|
| База данных | SQLite (по умолчанию, с опциональным шифрованием) или PostgreSQL |
| Файловое хранилище | Локальное, S3, Google Cloud Storage, Azure Blob Storage |
| Векторная база для RAG | ChromaDB, PGVector, Qdrant, Milvus, Elasticsearch, OpenSearch, Pinecone, S3Vector, Oracle 23ai |
| Content extraction | Tika, Docling, Document Intelligence, Mistral OCR, PaddleOCR-vl, внешние загрузчики |
Веб-поиск для RAG
Встроенная интеграция с десятками поисковых провайдеров: SearXNG, Google PSE, Brave Search, Kagi, Mojeek, Tavily, Perplexity, Firecrawl, serpstack, serper, Serply, DuckDuckGo, SearchApi, SerpApi, Bing, Jina, Exa, Sougou, Azure AI Search, Ollama Cloud. Результаты поиска инжектируются прямо в диалог.
Дополнительно
- Persistent Memory — модель запоминает факты о пользователе между диалогами.
- Notes — отдельное рабочее пространство для контента вне чатов. Rich-редактор, AI-переписывание выделенного текста, прикрепление заметок к чату для контекстного внедрения.
- Channels — shared-пространства для командной работы с AI в реальном времени. Тегирование моделей для draft/critique, threads, reactions, pins, access control.
- Calendar & AI Scheduling — встроенный календарь с month/week/day views, recurring events, color coding, attendees, reminders. Модели управляют расписанием через native function calling.
- Automations — запуск промптов по расписанию, с привязкой к календарю и ссылками на чат.
- Image Generation — создание и редактирование изображений через OpenAI DALL-E, Gemini, ComfyUI (локально), AUTOMATIC1111 (локально).
- Usage Analytics — админ-дашборды с метриками сообщений, токенов, стоимости по пользователям и моделям. A/B тестирование, arena, ELO-лидерборды для оценки моделей.
- OpenTelemetry — встроенная поддержка traces, metrics и logs для production-observability.
- Horizontal Scalability — Redis-backed session management и WebSocket для multi-worker и multi-node деплоев за load balancer.
Когда использовать
Open WebUI подходит в нескольких сценариях:
- Локальный AI-ассистент. Запускаете Ollama на ноутбуке или рабочей станции, добавляете Open WebUI как интерфейс. Получаете чат с историей, загрузку документов, RAG — всё локально, без отправки данных наружу.
- Командная AI-платформа. Деплой на сервере или в приватном облаке, многопользовательский режим с RBAC. Каждый участник видит свои чаты, общие каналы и модели. Администратор контролирует доступ.
- Корпоративный AI-портал. Air-gapped деплой для compliance с SOC 2, HIPAA, GDPR, FedRAMP, ISO 27001. LDAP/AD интеграция, SSO, SCIM provisioning. Ответственность за compliance лежит на деплоящей организации.
- RAG-система для документов. Загружаете корпоративную базу знаний, настраиваете векторную базу и поисковый движок. Модели отвечают на основе ваших документов с цитированием источников.
- Multi-provider experimentation. Подключаете несколько провайдеров одновременно, сравниваете ответы моделей, оцениваете через arena и A/B тесты.
- Прототипирование AI-агентов. Модели с кастомными инструкциями, tools, knowledge — обёртка над базовой моделью превращает её в специализированного агента. Поддержка динамических переменных и per-user/group access control.
Пример
Быстрый старт с Docker
Минимальная команда для запуска:
docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
После запуска откройте http://localhost:3000 в браузере. Первый созданный аккаунт получает права администратора. Последующие регистрации требуют подтверждения админом.
Docker-образы
| Тег | Назначение |
|---|---|
| :main | Стандартный образ (рекомендуется) |
| :main-slim | Меньший образ, Whisper и embedding-модели загружаются при первом использовании |
| :cuda | Поддержка Nvidia GPU (добавьте —gpus all к docker run) |
| :ollama | Ollama внутри контейнера — all-in-one деплой |
Сборка с Ollama внутри (GPU)
docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
Сборка с Ollama внутри (CPU only)
docker run -d -p 3000:8080 -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
Подключение к Ollama на другом сервере
docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
Однопользовательский режим (без логина)
docker run -d -p 3000:8080 -e WEBUI_AUTH=False -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
Внимание: переключиться между однопользовательским режимом и multi-account нельзя после активации.
Установка через pip
pip install open-webui
open-webui serve
Доступно на http://localhost:8080.
Pin версии для production
Для production-окружений фиксируйте версию вместо floating-тегов:
docker pull ghcr.io/open-webui/open-webui:v0.10.1
docker pull ghcr.io/open-webui/open-webui:v0.10.1-cuda
docker pull ghcr.io/open-webui/open-webui:v0.10.1-ollama
Установка WEBUI_SECRET_KEY
Без постоянного WEBUI_SECRET_KEY вы разлогинитесь при каждом пересоздании контейнера. Сгенерируйте ключ:
openssl rand -hex 32
И передайте при запуске:
docker run -d -p 3000:8080 -v open-webui:/app/backend/data \
-e WEBUI_SECRET_KEY="ваш-сг…ключ" \
--name open-webui --restart always \
ghcr.io/open-webui/open-webui:main
Экосистема
Open WebUI — ядро, вокруг которого строится экосистема:
| Проект | Назначение |
|---|---|
| Open Terminal | Self-hosted среда для кода: AI пишет, запускает, читает output, фиксит ошибки внутри чата |
| Terminals (Enterprise) | Изолированные контейнеры per-user с отдельными credential, resource limits, network rules |
| cptr | Standalone coding agent для мобильных. Файлы, terminal, git в браузере. Подключается к Open WebUI как модель |
| oikb | Синхронизация Knowledge Bases из 45+ источников: GitHub, Confluence, ServiceNow, Salesforce, Jira, Slack, SharePoint, Notion |
| Native Desktop App | macOS, Windows, Linux. Spotlight chat bar, screenshot capture, push-to-talk voice, локальный inference через llama.cpp |
Ограничения
Ограничения
Что учитывать
Branding clause в лицензии — с версии v0.6.6 нельзя убирать брендинг Open WebUI при 50+ пользователях.
Для white-label деплоев нужна Enterprise-лицензия. Версии до v0.6.5 остаются под чистой BSD-3-Clause.
WebSocket обязателен — для корректной работы требуется поддержка WebSocket в сетевой конфигурации.
Некоторые reverse-proxy и корпоративные сети могут потребовать дополнительной настройки.
Однопользовательский режим необратим
— после включения WEBUI_AUTH=False нельзя переключиться обратно на multi-account без потери данных.
Dev-билды и production несовместимы — не делите data volume между dev и production.
Dev-сборки включают database migrations, которые могут быть не backward-compatible.
Python 3.11 строго
— при установке через pip требуется именно Python 3.11, другие версии могут вызывать проблемы совместимости.
Compliance ответственность — self-hosted deploy не гарантирует compliance автоматически.
Соответствие SOC 2, HIPAA, GDPR, FedRAMP, ISO 27001 — ответственность деплоящей организации.
Антипаттерны
Антипаттерны
Чего не делать
Не использовать floating-теги в production — :main и :dev обновляются часто.
Для production фиксируйте версию (:v0.10.1), чтобы избежать неожиданных breaking changes.
Не монтировать data volume в dev и production одновременно — dev-сборки содержат миграции БД, несовместимые с production.
Всегда используйте отдельные volume (-v open-webui-dev:/app/backend/data).
Не игнорировать WEBUI_SECRET_KEY — без постоянного ключа сессии не переживают рестарт контейнера.
Особенно критично для multi-user деплоев.
Не оставлять регистрацию открытой без надзора — по умолчанию новые регистрации требуют approval админом.
Открывать свободную регистрацию в публично доступном деплое — риск безопасности.
Не забывать -v open-webui:/app/backend/data — без этого флага данные теряются при каждом рестарте контейнера.
Это первая команда из документации, но частая ошибка новичков.
Не пытаться rebrand без Enterprise-лицензии — при 50+ пользователях это нарушает условия лицензии.
Для smaller deploys rebranding разрешён.
Чеклист
Чеклист
Проверка перед запуском
Docker установлен — Open WebUI работает через Docker, Docker Compose, Podman, Quadlets, Kube Play, Swarm или WSL.
Убедитесь, что Docker настроен и работает.
WebSocket поддерживается
— проверьте, что сетевая конфигурация (reverse proxy, firewall, load balancer) пропускает WebSocket-соединения.
Persistent volume смонтирован — флаг -v open-webui:/app/backend/data должен быть в команде запуска.
Без него данные исчезнут при рестарте.
WEBUI_SECRET_KEY задан — сгенерируйте через openssl rand -hex 32 и передайте через -e.
Особенно важно для multi-user деплоев.
Модельный провайдер настроен — Open WebUI требует хотя бы один провайдер для чата.
Ollama, OpenAI, OpenAI-compatible API, Anthropic, llama.cpp или vLLM — выберите и настройте.
Версия зафиксирована
— для production используйте pinned версию (:v0.10.1), не floating-тег :main.
Branding требования проверены
— если планируется 50+ пользователей и rebranding, убедитесь, что у вас есть Enterprise-лицензия или branding сохранён.
Бэкап настроен — volume open-webui содержит все данные.
Настройте регулярный бэкап перед production-деплоем.
Ссылки
Ссылки
- Документация: Open WebUI — официальная документация
- GitHub: Open WebUI — GitHub репозиторий
- Quick Start: Open WebUI — Quick Start Guide
- Лицензия: Open WebUI — License
- Enterprise: Open WebUI — Enterprise