Variables de Entorno

¿Cómo configurar las variables de entorno?

Método de instalación con código fuente de Git o create-nocobase-app

Configure las variables de entorno en el archivo .env ubicado en el directorio raíz de su proyecto. Después de modificar estas variables, es necesario detener el proceso de la aplicación y reiniciarla.

Método de instalación con Docker

Modifique la configuración de docker-compose.yml y establezca las variables de entorno en el parámetro environment. Por ejemplo:

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

También puede usar env_file para configurar las variables de entorno directamente en un archivo .env. Por ejemplo:

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

Después de modificar las variables de entorno, deberá reconstruir el contenedor de la aplicación:

docker compose up -d app

Variables de Entorno Globales

TZ

Se utiliza para configurar la zona horaria de la aplicación. Por defecto, se usa la zona horaria del sistema operativo.

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

Warning

Las operaciones relacionadas con el tiempo se procesarán según esta zona horaria. Modificar TZ podría afectar los valores de fecha en la base de datos. Para más detalles, consulte la sección "Descripción general de Fecha y Hora".

APP_ENV

Entorno de la aplicación. El valor predeterminado es development. Las opciones disponibles son:

  • production: Entorno de producción
  • development: Entorno de desarrollo
APP_ENV=production

APP_KEY

La clave secreta de la aplicación, utilizada para generar tokens de usuario, entre otras cosas. Cámbiela por su propia clave de aplicación y asegúrese de que no se filtre.

Warning

Si se modifica APP_KEY, los tokens antiguos dejarán de ser válidos.

APP_KEY=app-key-test

APP_PORT

Puerto de la aplicación. El valor predeterminado es 13000.

APP_PORT=13000

API_BASE_PATH

Prefijo de la dirección de la API de NocoBase. El valor predeterminado es /api/.

API_BASE_PATH=/api/

API_BASE_URL

URL base que el frontend utiliza para acceder a la API de NocoBase. Está vacía por defecto, lo que significa que se usa ${APP_PUBLIC_PATH}api/ en el mismo origen.

API_BASE_URL=

Solo configúrela con la dirección completa de la API cuando las páginas y el servicio de API estén en orígenes distintos (protocolo, dominio o puerto diferentes):

API_BASE_URL=https://api.example.com/api/
Despliegues entre orígenes

NocoBase utiliza cookies para mantener el estado de inicio de sesión y autorizar el acceso a las URL estables de archivos. Cuando API_BASE_URL apunta a un origen distinto del de las páginas:

  • Debe añadirse el origen de la página a CORS_ORIGIN_WHITELIST. De lo contrario, el navegador ignorará Set-Cookie en las respuestas de la API, la cookie de inicio de sesión no se almacenará y las funciones que dependen de cookies, como la vista previa y la descarga de archivos, fallarán con 403.
  • Las cookies se almacenan por hostname. Si las páginas y la API usan dominios completamente distintos, las solicitudes a URL estables bajo /files/ desde el dominio de la página no enviarán la cookie de inicio de sesión guardada bajo el dominio de la API, por lo que el acceso al archivo seguirá fallando.

Se recomienda servir las páginas y la API desde el mismo origen mediante un proxy inverso y dejar API_BASE_URL vacío.

CORS_ORIGIN_WHITELIST

Lista blanca de orígenes autorizados a acceder a la API entre orígenes con credenciales (cookies). Separe varios orígenes con comas. Está vacía por defecto.

CORS_ORIGIN_WHITELIST=https://www.example.com,https://admin.example.com
  • Cuando no está configurada, solo las solicitudes del mismo origen se consideran de confianza; las solicitudes entre orígenes aún pueden llamar a la API de forma anónima, pero el navegador no puede leer ni escribir cookies para ellas.
  • Cuando está configurada, los orígenes incluidos reciben un Access-Control-Allow-Origin que refleja exactamente el origen y Access-Control-Allow-Credentials: true, lo que permite al navegador enviar y almacenar cookies de inicio de sesión en solicitudes entre orígenes.
  • La API de inicio de sesión valida el Origin y el Referer de la solicitud; las solicitudes de inicio de sesión entre orígenes procedentes de orígenes fuera de la lista blanca se rechazan con 403.

CLUSTER_MODE

v1.6.0+

Este es el modo de inicio multi-núcleo (clúster) para la aplicación. Si configura esta variable, se pasará al comando pm2 start como el parámetro -i <instances>. Las opciones son las mismas que las del parámetro -i de pm2 (consulte PM2: Cluster Mode), e incluyen:

  • max: Utiliza el número máximo de núcleos de CPU.
  • -1: Utiliza el número máximo de núcleos de CPU menos uno.
  • <number>: Especifica un número concreto de núcleos.

El valor predeterminado está vacío, lo que significa que no está habilitado.

Atención

Este modo requiere el uso de plugins relacionados con el modo clúster. De lo contrario, la funcionalidad de la aplicación podría presentar problemas inesperados.

Para más información, consulte: Modo Clúster.

PLUGIN_PACKAGE_PREFIX

Prefijo del nombre del paquete del plugin. El valor predeterminado es: @nocobase/plugin-,@nocobase/preset-.

Por ejemplo, si desea añadir el plugin hello al proyecto my-nocobase-app, el nombre completo del paquete del plugin sería @my-nocobase-app/plugin-hello.

PLUGIN_PACKAGE_PREFIX se puede configurar de la siguiente manera:

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

La correspondencia entre el nombre del plugin y el nombre del paquete es la siguiente:

  • El nombre del paquete del plugin users es @nocobase/plugin-users.
  • El nombre del paquete del plugin nocobase es @nocobase/preset-nocobase.
  • El nombre del paquete del plugin hello es @my-nocobase-app/plugin-hello.

DB_DIALECT

Tipo de base de datos. Las opciones disponibles son:

  • mariadb
  • mysql
  • postgres
DB_DIALECT=mysql

DB_HOST

Host de la base de datos (requerido al usar bases de datos MySQL o PostgreSQL).

El valor predeterminado es localhost.

DB_HOST=localhost

DB_PORT

Puerto de la base de datos (requerido al usar bases de datos MySQL o PostgreSQL).

  • El puerto predeterminado para MySQL y MariaDB es 3306.
  • El puerto predeterminado para PostgreSQL es 5432.
DB_PORT=3306

DB_DATABASE

Nombre de la base de datos (requerido al usar bases de datos MySQL o PostgreSQL).

DB_DATABASE=nocobase

DB_USER

Usuario de la base de datos (requerido al usar bases de datos MySQL o PostgreSQL).

DB_USER=nocobase

DB_PASSWORD

Contraseña de la base de datos (requerido al usar bases de datos MySQL o PostgreSQL).

DB_PASSWORD=nocobase

DB_TABLE_PREFIX

Prefijo de las tablas de datos.

DB_TABLE_PREFIX=nocobase_

DB_UNDERSCORED

Indica si los nombres de las tablas y campos de la base de datos se convertirán al estilo snake_case. El valor predeterminado es false. Si utiliza una base de datos MySQL (MariaDB) y lower_case_table_names=1, entonces DB_UNDERSCORED debe establecerse en true.

Warning

Cuando DB_UNDERSCORED=true, los nombres reales de las tablas y campos en la base de datos no coincidirán con lo que se muestra en la interfaz de usuario. Por ejemplo, orderDetails se almacenará como order_details en la base de datos.

DB_LOGGING

Interruptor para los registros de la base de datos. El valor predeterminado es off. Las opciones disponibles son:

  • on: Activar
  • off: Desactivar
DB_LOGGING=on

DB_POOL_MAX

Número máximo de conexiones en el pool de la base de datos. El valor predeterminado es 5.

DB_POOL_MIN

Número mínimo de conexiones en el pool de la base de datos. El valor predeterminado es 0.

DB_POOL_IDLE

Tiempo máximo, en milisegundos, que una conexión puede permanecer inactiva antes de ser liberada del pool. El valor predeterminado es 10000 (10 segundos).

DB_POOL_ACQUIRE

Tiempo máximo, en milisegundos, que el pool esperará para obtener una conexión antes de lanzar un error. El valor predeterminado es 60000 (60 segundos).

DB_POOL_EVICT

Intervalo de tiempo, en milisegundos, después del cual el pool de conexiones eliminará las conexiones inactivas. El valor predeterminado es 1000 (1 segundo).

DB_POOL_MAX_USES

Número de veces que se puede utilizar una conexión antes de que sea descartada y reemplazada. El valor predeterminado es 0 (ilimitado).

LOGGER_TRANSPORT

Método de salida de los registros (logs). Si hay varios, sepárelos con comas (,). El valor predeterminado es console en el entorno de desarrollo y console,dailyRotateFile en producción. Opciones:

  • console: Salida a console.log
  • file: Salida a un archivo
  • dailyRotateFile: Salida a archivos rotativos diarios
LOGGER_TRANSPORT=console,dailyRotateFile

LOGGER_BASE_PATH

Ruta de almacenamiento de los registros basados en archivos. El valor predeterminado es storage/logs.

LOGGER_BASE_PATH=storage/logs

LOGGER_LEVEL

Nivel de salida de los registros. El valor predeterminado es debug en el entorno de desarrollo y info en producción. Opciones:

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

El nivel de salida de los registros de la base de datos es debug, se controla mediante DB_LOGGING y no se ve afectado por LOGGER_LEVEL.

LOGGER_MAX_FILES

Número máximo de archivos de registro a conservar.

  • Cuando LOGGER_TRANSPORT es file: El valor predeterminado es 10.
  • Cuando LOGGER_TRANSPORT es dailyRotateFile: Utilice [n]d para representar el número de días. El valor predeterminado es 14d.
LOGGER_MAX_FILES=14d

LOGGER_MAX_SIZE

Rotación de registros por tamaño.

  • Cuando LOGGER_TRANSPORT es file: La unidad es byte. El valor predeterminado es 20971520 (20 * 1024 * 1024).
  • Cuando LOGGER_TRANSPORT es dailyRotateFile: Puede usar [n]k, [n]m, [n]g. Por defecto, no está configurado.
LOGGER_MAX_SIZE=20971520

LOGGER_FORMAT

Formato de impresión de los registros. El valor predeterminado es console en el entorno de desarrollo y json en producción. Opciones:

  • console
  • json
  • logfmt
  • delimiter
LOGGER_FORMAT=json

Referencia: Formato de Registros

CACHE_DEFAULT_STORE

Identificador único para el método de caché, que especifica el método de caché predeterminado del servidor. El valor predeterminado es memory. Las opciones integradas incluyen:

  • memory
  • redis
CACHE_DEFAULT_STORE=memory

CACHE_MEMORY_MAX

Número máximo de elementos en la caché de memoria. El valor predeterminado es 2000.

CACHE_MEMORY_MAX=2000

CACHE_REDIS_URL

URL de conexión a Redis, opcional. Ejemplo: redis://localhost:6379

CACHE_REDIS_URL=redis://localhost:6379

TELEMETRY_ENABLED

Habilita la recopilación de datos de telemetría. El valor predeterminado es off.

TELEMETRY_ENABLED=on

TELEMETRY_METRIC_READER

Recolectores de métricas de monitoreo habilitados. El valor predeterminado es console. Otros valores deben hacer referencia a los nombres registrados por los plugins recolectores correspondientes, como prometheus. Si hay varios, sepárelos con comas (,).

TELEMETRY_METRIC_READER=console,prometheus

TELEMETRY_TRACE_PROCESSOR

Procesadores de datos de rastreo habilitados. El valor predeterminado es console. Otros valores deben hacer referencia a los nombres registrados por los plugins procesadores correspondientes. Si hay varios, sepárelos con comas (,).

TELEMETRY_TRACE_PROCESSOR=console

SERVER_REQUEST_WHITELIST

Lista blanca de destinos permitidos para solicitudes HTTP salientes iniciadas por el servidor de NocoBase. Acepta una lista separada por comas de IPs exactas, rangos CIDR, nombres de host exactos y subdominios con comodín de un solo nivel.

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

Aplica a: Nodos de "Solicitud HTTP" en flujos de trabajo, botones de acción de solicitud personalizada, servicios AI y otras solicitudes del lado del servidor. Las solicitudes con ruta relativa (llamadas a la propia API de NocoBase) no se ven afectadas.

Sin configurar: Todas las solicitudes salientes http / https siguen permitidas para conservar el comportamiento existente. Sin embargo, si el destino es una dirección loopback, privada, link-local o metadata, o si un dominio resuelve a una de esas direcciones, el servidor escribe un warning en los logs.

Configurado: La solicitud inicial y cada destino de redirección deben coincidir con la lista blanca. Si no coinciden, NocoBase genera un error antes de enviar la siguiente solicitud. Versiones futuras pueden endurecer gradualmente el comportamiento predeterminado. Si tu despliegue necesita acceder a servicios internos, configura una lista blanca explícita con antelación.

Formatos admitidos:

FormatoEjemploCoincide con
IPv4 exacta1.2.3.4Solo esa IP
IPv4 CIDR10.0.0.0/8Todas las IPs de la subred
IPv6 exacta::1Solo esa IP
IPv6 CIDRfc00::/7Todas las IPs de la subred
Nombre de host exactoapi.example.comSolo ese nombre de host
Subdominio comodín*.example.comUn nivel de subdominio, p. ej. foo.example.com; no coincide con example.com ni a.b.example.com
Note

Si se configura un dominio en la lista blanca, la comprobación usa el host de la URL de la solicitud. En otras palabras, después de configurar internal.example.com, se trata como un destino permitido explícitamente aunque el dominio resuelva a 127.0.0.1 o a una dirección privada.

Variables de Entorno Experimentales

APPEND_PRESET_LOCAL_PLUGINS

Se utiliza para añadir plugins locales preestablecidos no activados. El valor es el nombre del paquete del plugin (el parámetro name en package.json), y si hay varios plugins, sepárelos con comas.

Info
  1. Asegúrese de que el plugin esté descargado localmente y pueda encontrarse en el directorio node_modules. Para más detalles, consulte Estructura del proyecto de plugins.
  2. Después de añadir la variable de entorno, el plugin solo aparecerá en la página del gestor de plugins tras una instalación inicial (nocobase install) o una actualización (nocobase upgrade).
APPEND_PRESET_LOCAL_PLUGINS=@my-project/plugin-foo,@my-project/plugin-bar

APPEND_PRESET_BUILT_IN_PLUGINS

Se utiliza para añadir plugins integrados que se instalan por defecto. El valor es el nombre del paquete del plugin (el parámetro name en package.json), y si hay varios plugins, sepárelos con comas.

Info
  1. Asegúrese de que el plugin esté descargado localmente y pueda encontrarse en el directorio node_modules. Para más detalles, consulte Estructura del proyecto de plugins.
  2. Después de añadir la variable de entorno, el plugin se instalará o actualizará automáticamente durante la instalación inicial (nocobase install) o la actualización (nocobase upgrade).
APPEND_PRESET_BUILT_IN_PLUGINS=@my-project/plugin-foo,@my-project/plugin-bar

Variables de Entorno Temporales

Al instalar NocoBase, puede facilitar el proceso configurando variables de entorno temporales, por ejemplo:

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

# Equivalente a
yarn nocobase install \
  --lang=zh-CN  \
  --root-email=demo@nocobase.com \
  --root-password=admin123 \
  --root-nickname="Super Admin"

# Equivalente a
yarn nocobase install -l zh-CN -e demo@nocobase.com -p admin123 -n "Super Admin"

INIT_APP_LANG

Idioma durante la instalación. El valor predeterminado es en-US. Las opciones disponibles son:

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

INIT_ROOT_EMAIL

Correo electrónico del usuario Root.

yarn cross-env \
  INIT_APP_LANG=zh-CN \
  INIT_ROOT_EMAIL=demo@nocobase.com \
  nocobase install

INIT_ROOT_PASSWORD

Contraseña del usuario Root.

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

INIT_ROOT_NICKNAME

Apodo del usuario Root.

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