LobeChat через RouterAI: свой ChatGPT-клон с агентами и библиотекой знаний
LobeChat (проект называется LobeHub, репозиторий lobehub/lobehub, около 83 тысяч звёзд на GitHub) — open-source веб-клиент и десктоп-приложение для работы с LLM: чат с агентами, библиотека знаний, каталог готовых агентов в разделе «Сообщество», навыки и MCP-серверы. Через RouterAI в него подключаются Claude, GPT, DeepSeek, Gemini и другие модели из каталога: работа из России без VPN, оплата в рублях, один ключ на все модели. Статья проверена на образе lobehub/lobehub версии 2.2.20.
Требования
- Docker (для самохостинга) или десктопное приложение со страницы релизов.
- Для серверной версии, по документации: PostgreSQL 14+ с расширением pgvector и S3-совместимое хранилище для файлов и библиотеки знаний.
- Ключ RouterAI: создайте его в личном кабинете (раздел «Ключи API») и пополните баланс.
Установка
В старых инструкциях встречается образ lobehub/lobe-chat: его последний тег на Docker Hub — 1.143.3 от 25 января 2026 года. Актуальные релизы выходят в образе lobehub/lobehub.
Docker Compose — рекомендуемый в документации способ: в одном стеке PostgreSQL, Redis, RustFS (S3) и Searxng.
mkdir lobehub && cd lobehub
bash <(curl -fsSL https://lobe.li/setup.sh) -l en
docker compose up -d
Скрипт предлагает три режима: Local (только с этой машины), Port (доступ по IP) и Domain (за обратным прокси). После запуска откройте http://localhost:3210.
Один контейнер с отдельными Postgres и S3. Минимальный набор переменных, на котором мы запускали проверку (Postgres с pgvector и S3-хранилище уже подняты):
docker run -d --name lobehub -p 3210:3210 \
-e DATABASE_URL=postgres://postgres:mysecretpassword@my-postgres:5432/postgres \
-e KEY_VAULTS_SECRET=$(openssl rand -base64 32) \
-e AUTH_SECRET=$(openssl rand -base64 32) \
-e APP_URL=http://localhost:3210 \
-e FTS_SEARCH_PROVIDER=pg_like \
-e S3_ENDPOINT=http://localhost:9000 \
-e S3_BUCKET=lobe \
-e S3_ACCESS_KEY_ID=xxxxxxxx \
-e S3_SECRET_ACCESS_KEY=xxxxxxxx \
lobehub/lobehub
FTS_SEARCH_PROVIDER=pg_like нужен, если в Postgres нет расширения pg_search (например, образ pgvector/pgvector); с образом ParadeDB из документации переменную можно не задавать. Остальные переменные и варианты — в инструкции по Docker.

Первого пользователя создаёт форма регистрации («Sign up now»).
Подключение к RouterAI
LobeChat подключается к RouterAI как к OpenAI-совместимому провайдеру. Есть два способа: переменные окружения для всей инсталляции или форма в интерфейсе.
Через переменные окружения
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
OPENAI_PROXY_URL=https://routerai.ru/api/v1
OPENAI_MODEL_LIST=-all,+anthropic/claude-sonnet-5.5=Claude Sonnet 5.5<1000000:fc:vision>,+anthropic/claude-haiku-5.5=Claude Haiku 5.5<1000000:fc:vision>,+deepseek/deepseek-v4-flash=DeepSeek V4 Flash<1048576:fc>
OPENAI_PROXY_URL должен заканчиваться на /v1: документация предупреждает, что при неверном суффиксе ответ может приходить пустым.
OPENAI_MODEL_LIST управляет списком моделей: -all скрывает встроенные, +id=Название добавляет модель, в угловых скобках — контекст и возможности (fc — вызов инструментов, vision — изображения). Формат описан здесь. Id берите из каталога RouterAI.
Через интерфейс
Откройте Настройки → Поставщик ИИ (AI Provider) → OpenAI и включите провайдера.
-
Ключ API — ключ RouterAI вида
sk-xxxxxxxxxxxxxxxx(на кадре показана заглушка). -
URL прокси API —
https://routerai.ru/api/v1. - Проверка подключения — выберите модель в выпадающем списке и нажмите «Проверить».

Переключатель «Использовать режим клиентского запроса» оставьте выключенным: в нём, по описанию в интерфейсе, сессии инициируются напрямую из браузера, а не с сервера LobeChat.
Встроенный список OpenAI-провайдера содержит только модели OpenAI, поэтому id RouterAI вида anthropic/… или deepseek/… нужно добавить самому — проще всего через OPENAI_MODEL_LIST. Цены и даты рядом с моделями LobeChat берёт из собственных метаданных, они не совпадают с ценами RouterAI: стоимость в рублях смотрите в каталоге.
Выбор модели в чате
Модель выбирается в поле ввода: нажмите на название модели справа внизу, затем «Модель». В списке есть поиск.

В LobeChat есть и встроенные провайдеры Anthropic, Google и другие со своими списками. Чтобы запросы шли через RouterAI, давайте добавленным моделям узнаваемые названия, например «Claude Sonnet 5.5 (RouterAI)».
Выбор модели
| Модель | Контекст (каталог) | Для чего |
|---|---|---|
anthropic/claude-sonnet-5.5 |
1 000 000 | Основная: чат, агенты, работа с документами |
anthropic/claude-haiku-5.5 |
1 000 000 | Быстрые и дешёвые ответы |
deepseek/deepseek-v4-flash |
1 048 576 | Массовые вопросы, когда важна цена |
openai/gpt-5.5 |
1 050 000 | Универсальные и сложные задачи |
google/gemini-3.1-pro-preview |
1 048 576 | Длинные документы и мультимодальные запросы |
Цены в рублях — в каталоге моделей.
Агенты и каталог сообщества
В LobeChat версии 2 готовые ассистенты называются агентами. Каталог открывается в боковом меню через «Сообщество»: на главной — избранные агенты и поиск, во вкладке «Агент» — категории (программирование, копирайтинг, маркетинг, перевод и другие). Кнопка «Fork & Chat» создаёт вашу копию агента с новым диалогом (описание): в копии можно менять системный промпт, модель по умолчанию, навыки и базы знаний.

Адрес индекса агентов задаётся переменной AGENTS_INDEX_URL. Чтобы агент работал через RouterAI, выберите в его настройках одну из добавленных моделей.

Библиотека знаний
Раздел «Ресурсы» (Resource Library) — личная библиотека: загруженные в чат файлы, изображения и документы. Файлы режутся на фрагменты, превращаются в эмбеддинги и ищутся семантически; агент отвечает по найденным фрагментам (документация).

Серверной версии для этого нужны PostgreSQL с pgvector и S3 (в Docker Compose они уже есть). По документации, эмбеддинги по умолчанию строит text-embedding-3-small через OpenAI-провайдер. У RouterAI эта модель называется openai/text-embedding-3-small: при коротком id в журнале контейнера появляется ошибка Model 'text-embedding-3-small' not found. Модель по умолчанию меняется переменной (формат значения — провайдер/модель):
DEFAULT_FILES_CONFIG=embedding_model=openai/openai/text-embedding-3-small
Это значение проверено на живой инсталляции: загруженный документ разбился на фрагменты, для каждого RouterAI вернул эмбеддинг, и агент ответил по содержимому файла (см. ниже). Эмбеддинг-модели RouterAI: openai/text-embedding-3-small (контекст 8192), qwen/qwen3-embedding-8b (40 960), google/gemini-embedding-001 (20 000); запрос к /api/v1/embeddings вернул векторы для openai/text-embedding-3-small и qwen/qwen3-embedding-8b. После смены модели эмбеддингов загруженные файлы лучше проиндексировать заново.
Чтобы файлы загружались и индексировались, на проверочной инсталляции понадобились три условия:
-
JWKS_KEY— RSA-ключ в формате JWKS (тот же, что выдаётscripts/generate-oidc-jwk.mjsиз репозитория). Без него разбор файла завершается ошибкойJWKS_KEY environment variable is not set. Задайте его один раз и не меняйте. -
S3 доступен из браузера. Браузер загружает файл в S3 напрямую по временной ссылке, поэтому
S3_ENDPOINTдолжен открываться с вашего компьютера, а не только из docker-сети, а для бакета нужно разрешить CORS. Иначе загрузка зависает на «Подготовка к загрузке… 99%». -
APP_URLдоступен с самого сервера. Для разбора файла LobeChat обращается к себе поAPP_URL: порт в нём должен совпадать с портом, на котором приложение слушает внутри контейнера, иначе файл получает статус «Ошибка сегментации» (Please make sure the APP_URL is available from your server).
Сгенерировать ключ для JWKS_KEY можно так (команда выводит одну строку JSON):
docker run --rm node:24-slim node -e 'const c=require("crypto");const k=c.generateKeyPairSync("rsa",{modulusLength:2048}).privateKey.export({format:"jwk"});k.use="sig";k.alg="RS256";k.kid=c.randomBytes(8).toString("hex");console.log(JSON.stringify({keys:[k]}))'
Создайте библиотеку («Создать новую библиотеку»), откройте её и нажмите «Загрузить файл». В проверке мы загрузили короткий документ faq-invoices.md (2,7 КБ, ответы на вопросы о демо-сервисе счетов): он разбился на 3 фрагмента.

Чтобы агент отвечал по библиотеке:
- В поле ввода чата нажмите «+» и выберите «Вложения».
- Нажмите «Выбрать файлы / библиотеки» и «Добавить» напротив нужной библиотеки.
- Выберите модель Claude Sonnet 5.5 и задайте вопрос по документу.
Агент назвал файл faq-invoices.md и базу знаний «Invoices FAQ» и ответил по их содержимому: срок оплаты счёта по умолчанию — 14 дней, номер счёта имеет формат INV-ГГГГ-ММ-NNNN. Обе подробности есть только в загруженном документе.

Навыки, MCP и голос
Вместо старых плагинов во второй версии используются навыки (Skills) и MCP-серверы: каталоги лежат в «Сообщество» → «Навыки» и «MCP» (MCP Market). Чтобы агент вызывал инструменты, модель должна уметь tool calling: в OPENAI_MODEL_LIST такая модель помечается fc. Часть навыков и MCP-серверов требует собственного ключа сервиса (поиск, почта и т. п.), он вводится в настройках самого навыка и с ключом RouterAI не связан.
Голосовой ввод отправляет запись как голосовое сообщение; транскрибации в текст перед отправкой, по документации, сейчас нет.
Самохостинг для команды
Серверная версия уже включает PostgreSQL и вход по учётным записям (Better Auth). Для команды:
- задайте
APP_URLс публичным адресом и поставьте обратный прокси с HTTPS (режим Domain вsetup.sh); - ограничьте регистрацию:
AUTH_ALLOWED_EMAILS(список разрешённых адресов) или SSO вместе сAUTH_DISABLE_EMAIL_PASSWORD=1(авторизация); - задайте RouterAI один раз через
OPENAI_API_KEYиOPENAI_PROXY_URL, чтобы не раздавать ключи сотрудникам; - настройте резервное копирование Postgres и S3: в Compose-файле тома по умолчанию локальные.
Проверка подключения
Откройте чат, выберите модель RouterAI и отправьте сообщение. Быстрая проверка ключа без интерфейса:
curl https://routerai.ru/api/v1/chat/completions \
-H "Authorization: Bearer sk-xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"model":"anthropic/claude-sonnet-5.5","messages":[{"role":"user","content":"Привет"}]}'
В проверочной инсталляции lobehub/lobehub 2.2.20 с OPENAI_PROXY_URL=https://routerai.ru/api/v1 агент Lobe AI ответил на сообщение с выбранной моделью Claude Sonnet 5.5.
LobeChat, LibreChat и Open WebUI
Все три — self-hosted чаты, которые подключаются к RouterAI по OpenAI-совместимому API. LobeChat выбирают за каталог готовых агентов, личную библиотеку знаний и навыки/MCP; цена за это — более тяжёлая серверная часть (Postgres, S3). Подключение остальных клиентов описано в статьях Open WebUI через RouterAI и LibreChat через RouterAI.
Решение проблем
-
Ответ пустой. Убедитесь, что
OPENAI_PROXY_URL(или «URL прокси API») —https://routerai.ru/api/v1, с/v1. -
Нужной модели нет в списке. Добавьте её id из каталога RouterAI через
OPENAI_MODEL_LIST. -
Контейнер завершается при старте с сообщением про
pg_search. В базе нет расширения ParadeDB. ЗадайтеFTS_SEARCH_PROVIDER=pg_likeили используйте образ из документации. -
Ошибка
Invalid environment variables … S3_ENDPOINT. Серверной версии нужен настроенный S3:S3_ENDPOINTдолжен быть валидным URL, бакет создан заранее. -
В журнале
Model 'text-embedding-3-small' not found. Эмбеддинги запрашиваются у RouterAI под коротким id. ЗадайтеDEFAULT_FILES_CONFIGс полным id, как в разделе про библиотеку знаний. -
Файл в библиотеке: загрузка висит на 99% или статус «Ошибка сегментации». Проверьте три условия из раздела про библиотеку знаний:
JWKS_KEY, доступность S3 из браузера с CORS и доступностьAPP_URLс самого сервера. -
На экране входа «Email registration is disabled and no SSO providers are configured». Включён
AUTH_DISABLE_EMAIL_PASSWORD=1, но SSO не настроен. Уберите переменную или подключите SSO. - 401. Неверный ключ или нулевой баланс: проверьте их в личном кабинете RouterAI.
Что дальше
- Каталог моделей RouterAI — id, контекст и цены.
- Open WebUI и LibreChat — другие self-hosted чаты.
- AnythingLLM — приватный RAG-ассистент по документам; Cherry Studio — десктопный клиент.
- Репозиторий LobeHub и документация.