Open WebUI: свой ChatGPT-клон с RouterAI через OpenAI-совместимое подключение
Open WebUI — это самостоятельно разворачиваемый веб-интерфейс для работы с языковыми моделями, по виду и удобству похожий на ChatGPT. Внутри: чаты с историей, каналы для командной работы, RAG по загруженным документам, веб-поиск, голосовой ввод, инструменты и плагины, а также мультипользовательский режим с ролями и группами. Open WebUI умеет подключаться к любому серверу с OpenAI-совместимым API, поэтому RouterAI подходит ему без доработок: один ключ и один Base URL открывают сотни моделей (Claude, GPT, DeepSeek, Gemini, GLM и другие), работа идёт из России без VPN, а оплата — в рублях.
В статье поднимем Open WebUI в Docker, подключим RouterAI через интерфейс и через переменные окружения, оставим в списке только нужные модели и разберём типичные ошибки.
Требования
- Docker (или Python 3.11, если ставите через pip).
- Аккаунт на RouterAI с положительным балансом.
- API-ключ из раздела «Ключи API» — он начинается с
sk-or-...и показывается один раз, сохраните его сразу. - Порт 3000 на машине свободен (иначе выберите другой в параметре
-p).
Установка
Самый простой способ — готовый образ из официального репозитория open-webui/open-webui:
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
Данные (пользователи, чаты, загруженные документы) хранятся в томе open-webui, поэтому при обновлении образа они сохраняются. Флаг --add-host=host.docker.internal:host-gateway нужен, чтобы контейнер видел локальные серверы на хосте, например Ollama; для работы с RouterAI он не обязателен, но вреда от него нет.
Альтернатива без Docker (по README проекта, нужен Python 3.11):
pip install open-webui
open-webui serve
В этом случае интерфейс откроется на http://localhost:8080.
После запуска откройте http://localhost:3000 (первый старт может занять несколько минут). При первом входе Open WebUI покажет приветственный экран, после кнопки «Get started» предложит создать учётную запись: введите имя, почту и пароль. Эта учётная запись станет администратором — под ней вы будете настраивать подключения и управлять остальными пользователями.
Подключение к RouterAI
Подключение выполняется в настройках администратора. В актуальной версии это окно настроек: в боковой панели в группе Admin → AI выберите Connections (в документации Open WebUI путь записан как Settings > Admin > Connections; страница также открывается по адресу /admin/settings/connections).
- Откройте Settings → Admin → Connections и найдите список Manage OpenAI API Connections.
- Нажмите значок + (Add Connection) справа от заголовка списка.
- В поле URL укажите
https://routerai.ru/api/v1. - Тип авторизации Auth оставьте Bearer, а в поле API Key вставьте ключ RouterAI (в примерах — заглушка
sk-xxxxxxxxxxxxxxxx). - Нажмите кнопку Verify Connection (значок обновления справа от поля URL): Open WebUI обратится к эндпоинту
/modelsи покажет Server connection verified. Если каталог подтянулся, подключение рабочее. - Нажмите Save.

Обратите внимание: простое сохранение подключение не проверяет — проверку запускает только кнопка Verify Connection (так сказано в документации Open WebUI).
Если в списке подключений остался стандартный адрес OpenAI (https://api.openai.com/v1), отключите его переключателем или удалите, чтобы он не запрашивал модели с неверным ключом.
Переменные окружения: подключение без захода в интерфейс
Для docker-compose и автоматического развёртывания проще передать параметры через окружение. Open WebUI читает OPENAI_API_BASE_URL и OPENAI_API_KEY (обе есть в .env.example репозитория и в справочнике переменных):
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
environment:
- OPENAI_API_BASE_URL=https://routerai.ru/api/v1
- OPENAI_API_KEY=${ROUTERAI_API_KEY}
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
volumes:
- open-webui:/app/backend/data
restart: always
volumes:
open-webui:
Ключ храните в файле .env рядом с docker-compose.yml, а не в самом compose-файле. WEBUI_SECRET_KEY — секрет для подписи сессий; задайте его постоянным значением, иначе после пересоздания контейнера пользователям придётся входить заново.
Важная особенность: эти переменные работают как начальные значения. Если Open WebUI уже запускался и сохранил настройки в базе, то при следующем старте значения из интерфейса имеют приоритет над окружением. Чтобы окружение всегда побеждало, добавьте ENABLE_PERSISTENT_CONFIG=False — но тогда изменения, сделанные в настройках администратора, не будут сохраняться между перезапусками.
Выбор модели
Open WebUI подтягивает весь каталог RouterAI, и в выпадающем списке чата оказываются сотни моделей. Чтобы не выбирать среди них каждый раз, ограничьте список:
- Откройте Settings → Admin → Connections и нажмите на значок настроек (шестерёнку) у подключения RouterAI: откроется окно Edit Connection.
- Раскройте блок Advanced, в поле Model IDs введите id модели из каталога RouterAI и нажмите значок +. Повторите для каждой нужной модели.
- Нажмите Save.

Пока список Model IDs пуст, доступны все модели каталога; как только вы добавили хотя бы одну, остальные скрываются. Повторно добавить тот же id нельзя — Open WebUI выдаст сообщение Model ID is already added.
Подборка для старта (актуальность id проверяйте по каталогу, он обновляется чаще, чем статьи):
| Модель | Для чего |
|---|---|
anthropic/claude-sonnet-5.5 |
основная модель для повседневной работы: тексты, код, анализ документов |
anthropic/claude-haiku-5.5 |
быстрые и недорогие ответы, черновики, перевод |
deepseek/deepseek-v4-flash |
самый дешёвый вариант для обычного чата и суммаризации |
google/gemini-3.1-pro-preview |
длинный контекст: большие документы и RAG |
anthropic/claude-opus-5.5 |
сложные задачи: рассуждения, многошаговый анализ, архитектура |
openai/gpt-6-astra-pro |
максимальное качество там, где важен результат, а не цена |
Точные цены за токены для каждой модели смотрите в каталоге: они различаются в десятки раз, поэтому для повседневного чата разумно по умолчанию выбрать недорогую модель (Haiku или DeepSeek V4 Flash), а дорогие подключать для отдельных задач.
Практика
RAG по документам. Загрузите файлы в разделе Documents рабочей области (Workspace). В чате введите # перед вопросом и выберите документ во всплывающем списке — над полем ввода появится значок вложения, и модель будет отвечать с учётом содержимого файла. Тем же способом можно подтянуть веб-страницу: # и адрес. Для работы с большими документами берите модели с большим контекстом из таблицы выше.
Веб-поиск. Включается в настройках администратора: нужно выбрать поисковый провайдер (SearXNG, Brave, Tavily, Google PSE и другие — полный список в README проекта) и при необходимости указать его ключ. После этого результаты поиска подставляются в контекст диалога.
Голосовой ввод. Open WebUI поддерживает голосовые вызовы с несколькими провайдерами распознавания и синтеза речи (локальный Whisper, OpenAI, Deepgram, Azure и другие). Речевые модели настраиваются отдельно от чат-подключения; в этой статье мы подключали к RouterAI только текстовые модели.
Несколько пользователей. Администратор создаёт пользователей и группы и ограничивает, кто какие модели видит. Расходы при этом идут с одного баланса RouterAI, поэтому для команды разумно оставить только недорогие модели по умолчанию.
Проверка подключения
- На странице подключения нажмите Verify Connection — должно появиться Server connection verified.
- Откройте новый чат и выберите в списке моделей, например,
anthropic/claude-sonnet-5.5. - Отправьте сообщение «Объясни одним предложением, что такое RAG» — модель должна ответить.
- Проверить ключ и каталог можно и из командной строки:
curl -s https://routerai.ru/api/v1/models -H "Authorization: Bearer sk-xxxxxxxxxxxxxxxx" | head -c 300
Ответ с JSON-списком моделей означает, что ключ рабочий.

Решение проблем
Список моделей пуст. Нажмите Verify Connection и посмотрите на сообщение. Проверьте, что в URL указано ровно https://routerai.ru/api/v1 — без /chat/completions в конце и без лишних символов. Затем убедитесь, что в Model IDs нет опечаток: фильтр оставляет только перечисленные id.
Ошибка 401. Ключ неверный, отозван или скопирован с пробелом либо переносом строки. Создайте новый ключ в личном кабинете и вставьте его заново. Если вы задаёте ключ через OPENAI_API_KEY, но подключение уже сохранялось через интерфейс, помните: сохранённое значение из базы приоритетнее окружения (см. выше про ENABLE_PERSISTENT_CONFIG).
Нет ответа при положительном балансе. Проверьте, что выбранный id точно есть в каталоге, и повторите запрос с другой моделью, чтобы отделить проблему модели от проблемы подключения.
http вместо https. Адрес должен начинаться с https://. Подключение по http:// к публичному API не используйте: ключ уйдёт по открытому каналу.
CORS и «Open WebUI backend required». Запросы к RouterAI делает сервер Open WebUI, а не браузер, поэтому CORS на стороне RouterAI не мешает. Проблемы с CORS возникают, когда вы открываете сам Open WebUI с другого домена или за reverse proxy. Укажите в переменной CORS_ALLOW_ORIGIN все адреса, по которым пользователи заходят в интерфейс (с протоколом и портом), и убедитесь, что прокси пробрасывает WebSocket. Подробности — в разделе про HTTPS и CORS официальной документации.
Что дальше
- Выберите модели под свои задачи в каталоге RouterAI.
- Если нужна автоматизация без кода, посмотрите n8n с блоком AI Agent или Dify — оба подключаются к RouterAI по тому же OpenAI-совместимому адресу.
- Сравнение подходов к доступу к моделям — в статье «Альтернативы OpenAI API».
- Документация Open WebUI: подключение OpenAI-совместимых провайдеров и переменные окружения.