Когда вы запускаете локальную модель через 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
Векторная база для RAGChromaDB, PGVector, Qdrant, Milvus, Elasticsearch, OpenSearch, Pinecone, S3Vector, Oracle 23ai
Content extractionTika, 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)
:ollamaOllama внутри контейнера — 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 TerminalSelf-hosted среда для кода: AI пишет, запускает, читает output, фиксит ошибки внутри чата
Terminals (Enterprise)Изолированные контейнеры per-user с отдельными credential, resource limits, network rules
cptrStandalone coding agent для мобильных. Файлы, terminal, git в браузере. Подключается к Open WebUI как модель
oikbСинхронизация Knowledge Bases из 45+ источников: GitHub, Confluence, ServiceNow, Salesforce, Jira, Slack, SharePoint, Notion
Native Desktop AppmacOS, 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-деплоем.