Osmi
Конфигурация

Параметры окружения

Узнайте, как настроить параметры окружения для OSMI-AI.

OSMI-AI поддерживает различные параметры окружения для настройки вашей инстанции. Их можно указать в файле .env, который находится в папке packages/server. Обратитесь к файлу .env. example для примера.

ПеременнаяОписаниеТипЗначение по умолчанию
PORTПорт HTTP, на котором работает OSMI-AIЧисло3000
OSMI_AI_FILE_SIZE_LIMITМаксимальный размер файла при загрузкеСтрока50mb
NUMBER_OF_PROXIESПрокси для ограничения скорости (Rate Limit Proxy)Число
CORS_ORIGINSРазрешённые origin для всех кросс-доменных HTTP-запросовСтрока
IFRAME_ORIGINSРазрешённые origin для вставки через iframe srcСтрока
SHOW_COMMUNITY_NODESОтображать nodes, созданные сообществомБулев: true или false
DISABLED_NODESСписок отключённых node-ов через запятуюСтрока

Для базы данных

ПеременнаяОписаниеТипЗначение по умолчанию
DATABASE_TYPEТип базы данных для хранения данных OSMI-AIEnum строка: sqlite, mysql, postgressqlite
DATABASE_PATHМесто, где сохраняется база данных (если DATABASE_TYPE = sqlite)Строкаyour-home-dir/.OSMI-AI
DATABASE_HOSTURL-адрес хоста или IP-адрес (если DATABASE_TYPE ≠ sqlite)Строка
DATABASE_PORTПорт базы данных (если DATABASE_TYPE ≠ sqlite)Строка
DATABASE_USERИмя пользователя базы данных (если DATABASE_TYPE ≠ sqlite)Строка
DATABASE_PASSWORDПароль базы данных (если DATABASE_TYPE ≠ sqlite)Строка
DATABASE_NAMEИмя базы данных (если DATABASE_TYPE ≠ sqlite)Строка
DATABASE_SSLТребуется ли SSL для базы данных (если DATABASE_TYPE ≠ sqlite)Булев: true или falsefalse

Для хранения данных

OSMI-AI по умолчанию сохраняет следующие файлы в локальную папку.

  • Файлы, загруженные через Загрузчики документов / База документов
  • Изображения/аудио, загруженные из чата
  • Изображения/файлы из Assistant
  • Файлы из API Vector Upsert

Пользователь может указать переменную STORAGE_TYPE, чтобы использовать AWS S3, Google Cloud Storage или локальный путь.

ПеременнаяОписаниеТипЗначение по умолчанию
STORAGE_TYPEТип хранилища для загруженных файлов. По умолчанию — локальноеEnum строка: s3, gcs, locallocal
BLOB_STORAGE_PATHЛокальный путь к папке, где будут храниться загруженные файлы при STORAGE_TYPE = localСтрокаyour-home-dir/.OSMI-AI/storage
S3_STORAGE_BUCKET_NAMEИмя бакета для хранения файлов при STORAGE_TYPE = s3Строка
S3_STORAGE_ACCESS_KEY_IDКлюч доступа AWSСтрока
S3_STORAGE_SECRET_ACCESS_KEYСекретный ключ AWSСтрока
S3_STORAGE_REGIONРегион для бакета S3Строка
S3_ENDPOINT_URLПользовательский URL для S3 (опционально)Строка
S3_FORCE_PATH_STYLEИспользовать принудительный стиль пути S3 (опционально)Булевfalse
GOOGLE_CLOUD_STORAGE_CREDENTIALКлюч аккаунта службы Google CloudСтрока
GOOGLE_CLOUD_STORAGE_PROJ_IDID проекта Google CloudСтрока
GOOGLE_CLOUD_STORAGE_BUCKET_NAMEНазвание бакета в Google Cloud StorageСтрока
GOOGLE_CLOUD_UNIFORM_BUCKET_ACCESSТип доступа в Google Cloud StorageБулевtrue

Для отладки и логирования

Переменная  Description  Тип  Значение по умолчанию  
DEBUGВыводить логи из компонентовБулев
LOG_PATHМестоположение, где сохраняются файлы журналовСтрокаOSMI-AI/packages/server/logs
LOG_LEVELУровень логов (различные уровни детализации)Enum строка: error, info, verbose, debuginfo

DEBUG - Если установлено в true, выводить логи в терминал/консоль.

LOG_LEVEL: Разные уровни логирования для логгеров, которые сохраняются. Может быть error, info, verbose или debug. По умолчанию устанавливается в значение info, в файлы журналов будут сохраняться только записи logger.info. Если хотите полную детализацию, установите значение debug.

Стриминг логов в S3:

Если STORAGE_TYPE=s3, логи автоматически пишутся в S3. Новый лог-файл создаётся каждый час.

Logs Streaming GCS

Если STORAGE_TYPE=gcs, логи автоматически пишутся в Google Cloud Logging.

Креденшелы

OSMI-AI хранит ваши сторонние API-ключи в зашифрованном виде с помощью ключа шифрования. По умолчанию при запуске приложения автоматически создается случайный ключ шифрования, который сохраняется в файл по определенному пути. Этот ключ используется каждый раз для расшифровки учетных данных, используемых внутри chatflow. Например, ваш API-ключ OpenAI, API-ключ Pinecone и т.д. Вы также можете настроить использование AWS Secret Manager для хранения ключа шифрования вместо файла.

Переменная  Описание  Тип  Значение по умолчанию  
SECRETKEY_STORAGE_TYPEСпособ хранения ключа шифрованияEnum строка: local, awslocal
SECRETKEY_PATHЛокальный путь к файлу, где сохраняется ключ шифрованияСтрокаOSMI-AI/packages/server
OSMI_AI_SECRETKEY_OVERWRITEКлюч шифрования, который будет использован вместо текущегоСтрока
SECRETKEY_AWS_ACCESS_KEYAWS Access KeyСтрока
SECRETKEY_AWS_SECRET_KEYAWS Secret KeyСтрока
SECRETKEY_AWS_REGIONРегион AWSСтрока

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

OSMI-AI_SECRETKEY_OVERWRITE, тогда один и тот же ключ будет использоваться каждый раз. Формат не ограничен: вы можете использовать любой текст или даже такой же, как пароль OSMI-AI_PASSWORD.

Модели

В некоторых случаях вы можете захотеть использовать на существующих узлах Chat Model и LLM собственную модель или ограничить доступ только к определённым моделям. По умолчанию OSMI-AI загружает список моделей отсюда. Но пользователь может создать свой собственный файл models.json и указать путь к нему:

Переменная  Описание  Тип  Значение по умолчанию  
MODEL_LIST_CONFIG_JSONСсылка для загрузки списка моделей из вашего файла конфигурации models.jsonСтрока[

Для встроенных и внешних зависимостей

В некоторых узлах/функциях OSMI-AI есть возможность запускать код на Javascript. Для безопасности по умолчанию разрешены только определённые зависимости. Но вы можете снять это ограничение для встроенных и внешних модулей, установив следующие переменные окружения:

Переменная  Описание  Тип  Значение по умолчанию  
TOOL_FUNCTION_BUILTIN_DEPВстроенные модули NodeJS для использованияСтрока
TOOL_FUNCTION_EXTERNAL_DEPВнешние модули для использованияСтрока
ALLOW_BUILTIN_DEPРазрешить использование зависимостей проекта, таких как cheerio, typeormБулев

Примеры настроек в файле .env:

Разрешить использование всех встроенных модулей

TOOL_FUNCTION_BUILTIN_DEP=*

Разрешить только модуль fs

TOOL_FUNCTION_BUILTIN_DEP=fs

Разрешить только модули crypto и fs

TOOL_FUNCTION_BUILTIN_DEP=crypto,fs

Разрешить использование внешних npm-модулей

TOOL_FUNCTION_EXTERNAL_DEP=cheerio,typeorm

Разрешить использование встроенных модулей по умолчанию

ALLOW_BUILTIN_DEP=true

Использование встроенных зависимостей

Некоторые встроенные модули, например Puppeteer, могут создавать потенциальные уязвимости безопасности. Рекомендуется тщательно анализировать и оценивать риски перед их использованием.

Ошибка выполнения NodeVM:VMError: Cannot find module Если вы используете библиотеку, которая по умолчанию не разрешена, есть два варианта:

  1. Разрешить все библиотеки/зависимости проекта: ALLOW_BUILTIN_DEP=true
  2. Разрешить определённые библиотеки/зависимости:TOOL_FUNCTION_EXTERNAL_DEP=cheerio,typeorm

Настройки безопасности

Переменная  Описание  ПараметрыПо умолчанию  
HTTP_DENY_LISTБлокирует HTTP-запросы к указанным URL или доменам на серверах MCPCSV список URL/доменных имен(empty)
CUSTOM_MCP_SECURITY_CHECKВключает комплексную проверку безопасности для настроек Custom MCPtrue | falsetrue
CUSTOM_MCP_PROTOCOLУстанавливает стандартный протокол для связи в Custom MCPstdio | ssestdio

CUSTOM_MCP_SECURITY_CHECK=true

По умолчанию CUSTOM_MCP_SECURITY_CHECK включена. Включение обеспечивает проверку:

  1. Список разрешенных команд: разрешены только безопасные команды (node, npx, python, python3, docker)
  2. Проверка аргументов: блокировка опасных путей файлов, обхода директорий и выполнение файлов
  3. Предотвращение инъекций: избегание специальных символов и цепочек команд
  4. Защиту окружения: блокировка изменений критически важных переменных окружения (PATH, LD_LIBRARY_PATH)

CUSTOM_MCP_PROTOCOL

  • stdio: Прямое взаимодействие с процессами (по умолчанию, требует выполнения команды)
  • sse: Server-Sent Events — события, отправляемые сервером по протоколу HTTP (рекомендуется для работы в производственной среде, более безопасный вариант)

Рекомендуемые настройки

Включить проверку безопасности (по умолчанию)

CUSTOM_MCP_SECURITY_CHECK=true

Использовать протокол SSE для лучшей безопасности

CUSTOM_MCP_PROTOCOL=sse

Заблокировать опасные домены (пример)

HTTP_DENY_LIST=localhost,127.0.0.1,internal.company.com

Предупреждение: Отключение CUSTOM_MCP_SECURITY_CHECK позволяет произвольное выполнение команд и существенно увеличивает риски безопасности в производственной среде.

Примеры настройки переменных окружения

NPM

Через команду в NPM

npx OSMI-AI start --PORT=3000 --DEBUG=true

Docker

docker run -d -p 5678:5678 OSMI-AI \
 -e DATABASE_TYPE=postgresdb \
 -e DATABASE_PORT=<POSTGRES_PORT> \
 -e DATABASE_HOST=<POSTGRES_HOST> \
 -e DATABASE_NAME=<POSTGRES_DATABASE_NAME> \
 -e DATABASE_USER=<POSTGRES_USER> \
 -e DATABASE_PASSWORD=<POSTGRES_PASSWORD> \

Docker Compose

Все переменные можно установить в .env файле внутри папки docker. См. пример .env.example.