Разделы документации
Платформа

Требования

Системные требования Charo, совместимость с операционными системами и архитектурами процессора, сеть и порты, закрытый контур и порядок работы с уязвимостями.

Ресурсы

Минимальная конфигурация — это установка, в которой и языковая модель, и модель векторного представления текста внешние: Charo обращается к ним по сети, а сам несёт поиск, индексацию и хранение.

РесурсМинимум
Процессор4 ядра
Оперативная память8 ГБ
Свободное место на диске40 ГБ

Это минимум для запуска, а не расчёт под нагрузку. Диск растёт вместе с корпусом документов: место расходуют содержимое файлов, поисковый индекс и кэш моделей — что именно, разобрано в «Архитектуре». Графический ускоритель не нужен.

Если часть моделей поднимается на том же сервере, к минимуму добавляется:

  • модель векторного представления текста локально — ещё 2 ядра и 2 ГБ памяти. Такая установка работает по умолчанию: модель выбирается в настройках индексации, и требования зависят от выбранной — приведённая прибавка рассчитана на модель по умолчанию;
  • языковая модель локально — прибавка определяется самой моделью и всегда больше, чем ещё 8 ядер и 16 ГБ памяти. Считайте по требованиям выбранной модели, а не по этому числу.

Операционные системы

Charo целиком работает внутри контейнеров, поэтому от операционной системы требуется только Docker. Продукт запускается через Docker Compose на:

  • Astra Linux;
  • РЕД ОС;
  • ОС «Альт»;
  • Ubuntu, Debian и других дистрибутивах Linux с Docker Engine;
  • macOS — для ознакомительной установки.

Установщик не привязан к дистрибутиву: он не читает сведения о системе, не устанавливает пакеты и не зависит от systemd. Ему нужны bash и работающий Docker.

Архитектура процессора

Образы Charo публикуются под x86-64 (linux/amd64). На arm64 они запустятся только через эмуляцию, и это не рабочий вариант: эмуляция заметно замедляет индексацию.

Docker

Нужен Docker с плагином Compose (docker compose). Минимальная версия Docker Engine не задана; устаревший docker-compose первой версии поддерживается, но не рекомендуется.

Пользователь, от имени которого идёт установка, должен иметь доступ к демону Docker — состоять в группе docker либо иметь право на sudo.

Сеть и порты

ПортНазначение
80веб-интерфейс по HTTP
443веб-интерфейс по HTTPS, если при установке указан домен

Больше наружу ничего не публикуется: служебные порты базы данных, векторного хранилища, кэша и сервера эмбеддингов остаются на петлевом интерфейсе.

Если порт 80 занят, установщик предложит 3000. Если указан домен, его запись DNS должна указывать на этот сервер, а порты 80 и 443 — быть открыты: сертификат выпускается автоматически.

Для установки серверу нужен доступ в интернет: к реестру образов Charo и к хранилищу моделей эмбеддингов. Оба размещены в российской инфраструктуре; Docker Hub не используется.

Закрытый контур

Отдельного офлайн-пакета в поставке нет, поэтому в контур без выхода в интернет переносятся:

  1. Образы контейнеров — через внутренний реестр образов. Помимо собственных образов Charo это PostgreSQL, Valkey, Qdrant и Caddy.
  2. Модель эмбеддингов — зеркало хранилища моделей, адрес задаётся переменной MODELS_BUCKET_URL.
  3. Языковая модель, если она локальная.

Модели распознавания текста переносить не нужно: они входят в образ сервера моделей и при установке не скачиваются.

Дополнительно отключите два исходящих запроса, включённых по умолчанию, и учтите остальные требования к контуру — см. «Безопасность».

Лицензия проверяется локально: постоянный доступ в интернет для работы системы не нужен.

Сообщить об уязвимости

Если вы нашли уязвимость в Charo, напишите на support@charo.tech, указав в теме письма слово «уязвимость». Это единственный канал приёма таких сообщений.

Приложите версию Charo, описание уязвимости и шаги воспроизведения, а также оценку последствий, если она у вас есть.

Мы подтверждаем получение письма и сообщаем, что собираемся делать. Исправления выходят в составе очередной версии; уязвимость, допускающую доступ к данным в обход разграничения прав, стараемся закрыть отдельным выпуском.

Пожалуйста, не публикуйте детали до выхода исправления. Если вы не против, мы упомянем вас в описании версии.