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

Как задать переменные окружения?

Метод установки из исходного кода Git или create-nocobase-app

Задайте переменные окружения в файле .env в корневом каталоге проекта. После изменения переменных окружения остановите процесс приложения и перезапустите его.

Метод установки через Docker

Измените конфигурацию docker-compose.yml и задайте переменные окружения в параметре environment. Пример:

services:
  app:
    image: nocobase/nocobase:latest
    environment:
      - APP_ENV=production

Также можно использовать env_file, чтобы задавать переменные окружения в файле .env. Пример:

services:
  app:
    image: nocobase/nocobase:latest
    env_file: .env

После изменения переменных окружения пересоберите контейнер приложения:

docker-compose up -d app

Глобальные переменные окружения

TZ

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

https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Warning

Операции, связанные со временем, будут выполняться в соответствии с этим часовым поясом. Изменение TZ может повлиять на значения дат в базе данных. Для получения подробностей см. Обзор даты и времени.

APP_ENV

Среда приложения; по умолчанию — development. Доступные варианты:

  • production производственная среда
  • development среда разработки
APP_ENV=production

APP_KEY

Секретный ключ приложения, используемый для генерации токенов пользователей и т.д. Замените его на ваш собственный ключ приложения и убедитесь, что он не раскрыт.

Warning

Если APP_KEY будет изменен, старые токены станут недействительными.

APP_KEY=app-key-test

APP_PORT

Порт приложения; по умолчанию — 13000.

APP_PORT=13000

API_BASE_PATH

Префикс адреса API NocoBase; по умолчанию — /api/.

API_BASE_PATH=/api/

API_BASE_URL

CLUSTER_MODE

v1.6.0+

Режим запуска приложения с несколькими ядрами (кластерный режим). Если эта переменная задана, она будет передана в команду pm2 start как параметр -i <instances>. Варианты соответствуют параметру pm2 -i (см. PM2: Кластерный режим), включая:

  • max: Использовать максимальное количество ядер CPU
  • -1: Использовать максимальное количество ядер CPU минус один
  • <number>: Указать количество ядер

Значение по умолчанию пустое, то есть режим не включен.

Внимание

Для этого режима требуются плагины, связанные с кластерным режимом. В противном случае функциональность приложения может столкнуться с неожиданными проблемами.

Для получения дополнительной информации см. Кластерный режим.

PLUGIN_PACKAGE_PREFIX

Префикс пакета плагинов; по умолчанию: @nocobase/plugin-,@nocobase/preset-.

Например, чтобы добавить плагин hello в проект my-nocobase-app, полное имя пакета плагина будет @my-nocobase-app/plugin-hello.

PLUGIN_PACKAGE_PREFIX можно настроить так:

PLUGIN_PACKAGE_PREFIX=@nocobase/plugin-,@nocobase-preset-,@my-nocobase-app/plugin-

Соответствие между именем плагина и именем пакета следующее:

  • users — имя пакета плагина: @nocobase/plugin-users
  • nocobase — имя пакета плагина: @nocobase/preset-nocobase
  • hello — имя пакета плагина: @my-nocobase-app/plugin-hello

DB_DIALECT

Тип базы данных; доступны варианты:

  • mariadb
  • mysql
  • postgres
DB_DIALECT=mysql

DB_HOST

Хост базы данных (обязателен при использовании баз MySQL или PostgreSQL).

По умолчанию — localhost.

DB_HOST=localhost

DB_PORT

Порт базы данных (обязателен при использовании MySQL или PostgreSQL).

  • Порт по умолчанию для MySQL и MariaDB — 3306
  • Порт по умолчанию для PostgreSQL — 5432
DB_PORT=3306

DB_DATABASE

Имя базы данных (обязательно при использовании MySQL или PostgreSQL).

DB_DATABASE=nocobase

DB_USER

Пользователь базы данных (обязателен при использовании MySQL или PostgreSQL).

DB_USER=nocobase

DB_PASSWORD

Пароль базы данных (обязателен при использовании MySQL или PostgreSQL).

DB_PASSWORD=nocobase

DB_TABLE_PREFIX

Префикс таблиц данных.

DB_TABLE_PREFIX=nocobase_

DB_UNDERSCORED

Определяет, будут ли имена таблиц и полей в базе данных преобразовываться в формат snake_case. По умолчанию — false. Если используется база MySQL (MariaDB) с lower_case_table_names=1, то DB_UNDERSCORED необходимо установить в true.

Warning

Когда DB_UNDERSCORED=true, фактические имена таблиц и полей в базе данных не будут совпадать с тем, что отображается в пользовательском интерфейсе. Например, orderDetails будет храниться как order_details в базе данных.

DB_LOGGING

Переключатель логгирования базы данных; по умолчанию — off. Доступные варианты:

  • on — включено
  • off — выключено
DB_LOGGING=on

DB_POOL_MAX

Максимальное число соединений в пуле. По умолчанию — 5.

DB_POOL_MIN

Минимальное число соединений в пуле. По умолчанию — 0.

DB_POOL_IDLE

Максимальное время в миллисекундах, в течение которого соединение может простаивать перед освобождением. По умолчанию — 10000 (10 секунд).

DB_POOL_ACQUIRE

Максимальное время в миллисекундах, в течение которого пул будет пытаться получить соединение перед тем, как выбросить ошибку. По умолчанию — 60000 (60 секунд).

DB_POOL_EVICT

Интервал времени в миллисекундах, по истечении которого пул соединений удаляет простаивающие соединения. По умолчанию — 1000 (1 секунда).

DB_POOL_MAX_USES

Количество раз, когда соединение может быть использовано, прежде чем оно будет отброшено и заменено. По умолчанию — 0 (без ограничений).

LOGGER_TRANSPORT

Метод вывода логов; несколько значений разделяются ,. По умолчанию: console в режиме разработки и console,dailyRotateFile в производственной среде. Доступные варианты:

  • consoleconsole.log
  • file — вывод в файл
  • dailyRotateFile — вывод в файлы, которые ротируются раз в день
LOGGER_TRANSPORT=console,dailyRotateFile

LOGGER_BASE_PATH

Путь хранения логов в файловой системе; по умолчанию — storage/logs.

LOGGER_BASE_PATH=storage/logs

LOGGER_LEVEL

Уровень логгирования. По умолчанию — debug в режиме разработки и info в производственной среде. Доступные варианты:

  • error
  • warn
  • info
  • debug
  • trace
LOGGER_LEVEL=info

Уровень вывода логов базы данных всегда — debug, он контролируется параметром DB_LOGGING и не зависит от LOGGER_LEVEL.

LOGGER_MAX_FILES

Максимальное количество файлов логов для хранения.

  • Когда LOGGER_TRANSPORT равно file: по умолчанию — 10.
  • Когда LOGGER_TRANSPORT равно dailyRotateFile: используйте [n]d для обозначения дней. По умолчанию — 14d.
LOGGER_MAX_FILES=14d

LOGGER_MAX_SIZE

Ротация логов по размеру.

  • Когда LOGGER_TRANSPORT равно file: единица измерения — byte. По умолчанию — 20971520 (20 * 1024 * 1024).
  • Когда LOGGER_TRANSPORT равно dailyRotateFile: используйте [n]k, [n]m, [n]g. По умолчанию не задано.
LOGGER_MAX_SIZE=20971520

LOGGER_FORMAT

Формат вывода логов. По умолчанию — console в режиме разработки и json в производственной среде. Доступные варианты:

  • console
  • json
  • logfmt
  • delimiter
LOGGER_FORMAT=json

Справка: Формат логов

CACHE_DEFAULT_STORE

Уникальный идентификатор метода кэширования, определяющий кэш по умолчанию на сервере. По умолчанию — memory. Встроенные варианты:

  • memory
  • redis
CACHE_DEFAULT_STORE=memory

CACHE_MEMORY_MAX

Максимальное количество элементов в кэш-памяти. По умолчанию — 2000.

CACHE_MEMORY_MAX=2000

CACHE_REDIS_URL

URL подключения к Redis (необязательно). Пример: redis://localhost:6379

CACHE_REDIS_URL=redis://localhost:6379

TELEMETRY_ENABLED

Включить сбор телеметрических данных. По умолчанию — off.

TELEMETRY_ENABLED=on

TELEMETRY_METRIC_READER

Включенные коллекторы метрик мониторинга. По умолчанию — console. Остальные значения должны ссылаться на имена, зарегистрированные соответствующими плагинами коллекторов, например prometheus. Несколько значений разделяются ,.

TELEMETRY_METRIC_READER=console,prometheus

TELEMETRY_TRACE_PROCESSOR

Включенные процессоры данных трассировки. По умолчанию — console. Остальные значения должны указывать на имена, зарегистрированные соответствующими плагинами процессоров. Несколько значений разделяются ,.

TELEMETRY_TRACE_PROCESSOR=console

SERVER_REQUEST_WHITELIST

Белый список разрешённых адресатов для исходящих HTTP-запросов на стороне сервера, используется для защиты от атак SSRF (Server-Side Request Forgery). Принимает список через запятую: точные IP-адреса, диапазоны CIDR, точные имена хостов и одноуровневые поддомены с подстановочным символом.

SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com

Применяется к: узлам «HTTP-запрос» в рабочих процессах и кнопкам действий «Пользовательский запрос». Запросы с относительным путём (вызовы собственного API NocoBase) не затрагиваются.

Не задано: все исходящие запросы по http/https разрешены (текущее поведение). Задано: разрешены только запросы, чей хост соответствует записи в белом списке; несовпадающие запросы возвращают ошибку.

Поддерживаемые форматы:

ФорматПримерСоответствует
Точный IPv41.2.3.4Только этот IP
IPv4 CIDR10.0.0.0/8Все IP в подсети
Точное имя хостаapi.example.comТолько это имя хоста
Поддомен с подстановочным символом*.example.comОдин уровень поддомена, напр. foo.example.com; не совпадает с example.com или a.b.example.com

Экспериментальные переменные окружения

APPEND_PRESET_LOCAL_PLUGINS

Используется для добавления заранее заданных локальных плагинов. Значение — это имя пакета (параметр name в package.json), при этом несколько плагинов разделяются запятыми.

Info
  1. Убедитесь, что плагин загружен локально и доступен в каталоге node_modules. Подробнее см. Организация плагинов (Plugin Organization).
  2. После добавления переменной окружения плагин появится на странице менеджера плагинов только после начальной установки (nocobase install) или обновления (nocobase upgrade).
APPEND_PRESET_LOCAL_PLUGINS=@my-project/plugin-foo,@my-project/plugin-bar

APPEND_PRESET_BUILT_IN_PLUGINS

Используется для добавления встроенных плагинов, которые устанавливаются по умолчанию. Значение — это имя пакета (параметр name в package.json), при этом несколько плагинов разделяются запятыми.

:::info

  1. Убедитесь, что плагин загружен локально и доступен в каталоге node_modules. Подробнее см. Организация плагинов.
  2. После добавления переменной окружения плагин будет автоматически установлен или обновлен во время начальной установки (nocobase install) или обновления (nocobase upgrade). :::
APPEND_PRESET_BUILT_IN_PLUGINS=@my-project/plugin-foo,@my-project/plugin-bar

Временные переменные окружения

Процесс установки NocoBase можно дополнить настройкой временных переменных окружения, например:

yarn cross-env \
  INIT_APP_LANG=en-US \
  INIT_ROOT_EMAIL=demo@nocobase.com \
  INIT_ROOT_PASSWORD=admin123 \
  INIT_ROOT_NICKNAME="Super Admin" \
  nocobase install

# Эквивалентно:
yarn nocobase install \
  --lang=en-US \
  --root-email=demo@nocobase.com \
  --root-password=admin123 \
  --root-nickname="Super Admin"

# Эквивалентно:
yarn nocobase install -l en-US -e demo@nocobase.com -p admin123 -n "Super Admin"

INIT_APP_LANG

Язык на момент установки. По умолчанию — en-US. Доступные варианты:

  • en-US
  • zh-CN
yarn cross-env \
  INIT_APP_LANG=en-US \
  nocobase install

INIT_ROOT_EMAIL

Email пользователя root.

yarn cross-env \
  INIT_APP_LANG=en-US \
  INIT_ROOT_EMAIL=demo@nocobase.com \
  nocobase install

INIT_ROOT_PASSWORD

Пароль пользователя root.

yarn cross-env \
  INIT_APP_LANG=en-US \
  INIT_ROOT_EMAIL=demo@nocobase.com \
  INIT_ROOT_PASSWORD=admin123 \
  nocobase install

INIT_ROOT_NICKNAME

Никнейм пользователя root.

yarn cross-env \
  INIT_APP_LANG=en-US \
  INIT_ROOT_EMAIL=demo@nocobase.com \
  INIT_ROOT_PASSWORD=admin123 \
  INIT_ROOT_NICKNAME="Super Admin" \
  nocobase install