> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Variables de entorno

> Referencia de las variables de entorno usadas para configurar Reporter, organizadas por categoría: servidor HTTP, base de datos, almacenamiento, autenticación y telemetría.

Esta referencia enumera las variables de entorno usadas para configurar **Reporter**, el servicio que genera informes regulatorios, de cumplimiento y contables a partir de plantillas configurables. Reporter se distribuye como un solo binario, y `RUN_MODE` selecciona sus superficies activas: el manager de la API, el worker de informes, o ambos. Las configuras al momento del despliegue, mediante valores de Helm, Docker Compose o el entorno de tu orquestador. Las variables marcadas como obligatorias hacen que el servidor falle al iniciar si no están configuradas.

Para los bloques de configuración que comparten todos los productos de Lerian (postura de TLS, OpenTelemetry, autenticación de Access Manager, multi-tenancy, service discovery y event streaming), consulta la [referencia de configuración de BYOC](/es/reference/byoc-configuration). Esta página se centra en lo que es distintivo de Reporter.

## Modo de ejecución y puertos

`RUN_MODE` decide qué superficies sirve el proceso. Ejecuta la API y el worker como un solo proceso (`all`) para despliegues pequeños, o sepáralos en desplegables independientes (`api` y `worker`) para escalar la generación de informes por separado. Consulta la [referencia de salud y readiness](/es/reference/health-and-readiness) para conocer el contrato de las sondas.

| Variable                         | Descripción                                                                                                                                                                             | Valor predeterminado | Obligatoria      |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | ---------------- |
| `RUN_MODE`                       | Superficies que se ejecutan: `api`, `worker` o `all`                                                                                                                                    | `all`                | No               |
| `SERVER_PORT` / `SERVER_ADDRESS` | Dirección de bind de la API (`RUN_MODE=api`/`all`), leída de `SERVER_ADDRESS`; `SERVER_PORT` es la convención usada para construirla (`:4005`). Sirve `/health`, `/readyz`, `/version`. | —                    | Sí (`api`/`all`) |
| `HEALTH_PORT`                    | Puerto de salud del worker (`RUN_MODE=worker`). Sirve `/health`, `/readyz`.                                                                                                             | `4006`               | No               |

## Despliegue y TLS

| Variable             | Descripción                                                                                                                                                                                                                                                      | Valor predeterminado | Obligatoria |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | ----------- |
| `DEPLOYMENT_MODE`    | Tipo de despliegue: `local`, `byoc` o `saas`. En `saas`, TLS es obligatorio para cada conexión de dependencia y el servidor se niega a iniciar sin él. En `byoc`, TLS se recomienda y se advierte, pero no se exige. También etiqueta la respuesta de `/readyz`. | `local`              | No          |
| `ALLOW_INSECURE_TLS` | Omite la exigencia de TLS por conexión en los DSN de infraestructura. Déjala sin configurar o en `false` en producción.                                                                                                                                          | `false`              | No          |

## CORS y proxies

| Variable               | Descripción                                                                                                                          | Valor predeterminado | Obligatoria |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -------------------- | ----------- |
| `CORS_ALLOWED_ORIGINS` | Orígenes CORS permitidos (CSV, o `*`). Restringe a orígenes explícitos en producción.                                                | `*`                  | No          |
| `CORS_ALLOWED_METHODS` | Métodos CORS permitidos                                                                                                              | varía                | No          |
| `CORS_ALLOWED_HEADERS` | Encabezados CORS permitidos                                                                                                          | varía                | No          |
| `TRUSTED_PROXIES`      | CIDR de proxies de confianza para el análisis de `X-Forwarded-For`. Configúrala cuando se ejecute detrás de un balanceador de carga. | —                    | No          |
| `SWAGGER_ENABLED`      | Sirve la interfaz de OpenAPI/Swagger                                                                                                 | `false`              | No          |

## Paginación de la API

| Variable               | Descripción                                                                                                                                               | Valor predeterminado | Obligatoria |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | ----------- |
| `MAX_PAGINATION_LIMIT` | El `limit` más grande que acepta una operación de listado. Una solicitud por encima del tope se rechaza con un error de paginación en lugar de ajustarse. | `100`                | No          |

## Vistas previas de plantillas

| Variable                 | Descripción                                                                                                                                                                                                                                                                                                                                                                         | Valor predeterminado | Obligatoria |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | ----------- |
| `PREVIEW_MAX_CONCURRENT` | Máximo de vistas previas de plantilla síncronas que el manager de la API renderiza a la vez. Cuando todos los espacios están en uso, Reporter rechaza de inmediato una vista previa nueva con HTTP `429` y `RPT-0108`; no la encola. Este es un límite de renderizado concurrente, no un límite de tasa de solicitudes. Los valores por debajo de `1` usan el valor predeterminado. | `4`                  | No          |

## Base de datos (MongoDB)

Almacena los metadatos de los informes, las plantillas y el historial de ejecuciones.

| Variable              | Descripción                                                                       | Valor predeterminado | Obligatoria |
| --------------------- | --------------------------------------------------------------------------------- | -------------------- | ----------- |
| `MONGO_URI`           | Esquema de conexión: `mongodb` o `mongodb+srv`                                    | `mongodb`            | No          |
| `MONGO_HOST`          | Host de MongoDB                                                                   | —                    | Sí          |
| `MONGO_PORT`          | Puerto de MongoDB                                                                 | —                    | Sí          |
| `MONGO_USER`          | Usuario de la base de datos                                                       | —                    | Sí          |
| `MONGO_PASSWORD`      | Contraseña de la base de datos. Sensible.                                         | —                    | Sí          |
| `MONGO_NAME`          | Nombre de la base de datos                                                        | —                    | Sí          |
| `MONGO_MAX_POOL_SIZE` | Tamaño máximo del pool de conexiones                                              | varía                | No          |
| `MONGO_TLS_CA_CERT`   | Certificado CA en PEM codificado en Base64 para TLS (por ejemplo, AWS DocumentDB) | —                    | No          |

## Broker de mensajes (RabbitMQ)

Lleva la cola de comandos de generación de informes entre la API y el worker.

| Variable                         | Descripción                                                               | Valor predeterminado | Obligatoria               |
| -------------------------------- | ------------------------------------------------------------------------- | -------------------- | ------------------------- |
| `RABBITMQ_HOST`                  | Host del broker                                                           | —                    | Sí                        |
| `RABBITMQ_PORT_AMQP`             | Puerto AMQP                                                               | —                    | Sí                        |
| `RABBITMQ_PORT_HOST`             | Puerto de administración/HTTP                                             | —                    | No                        |
| `RABBITMQ_URI`                   | Esquema de conexión: `amqp` o `amqps`. Usa `amqps` en producción.         | `amqp`               | No                        |
| `RABBITMQ_DEFAULT_USER`          | Usuario del broker                                                        | —                    | Sí                        |
| `RABBITMQ_DEFAULT_PASS`          | Contraseña del broker. Sensible.                                          | —                    | Sí                        |
| `RABBITMQ_EXCHANGE`              | Exchange donde la API publica los comandos de generación de informes      | —                    | Sí (`api`/`all`)          |
| `RABBITMQ_GENERATE_REPORT_QUEUE` | Cola que lleva los comandos de generación de informes de la API al worker | —                    | Sí (`api`/`worker`/`all`) |
| `RABBITMQ_GENERATE_REPORT_KEY`   | Routing key que usa la API para los comandos de generación de informes    | —                    | Sí (`api`/`all`)          |
| `RABBITMQ_NUMBERS_OF_WORKERS`    | Concurrencia de consumidores del worker                                   | `5`                  | No                        |

## Almacenamiento de objetos (compatible con S3)

Dónde se almacenan los informes renderizados. Funciona con cualquier endpoint compatible con S3.

| Variable                        | Descripción                                                                                | Valor predeterminado | Obligatoria |
| ------------------------------- | ------------------------------------------------------------------------------------------ | -------------------- | ----------- |
| `OBJECT_STORAGE_ENDPOINT`       | URL del endpoint compatible con S3                                                         | —                    | Sí          |
| `OBJECT_STORAGE_REGION`         | Región de almacenamiento                                                                   | `us-east-1`          | No          |
| `OBJECT_STORAGE_BUCKET`         | Bucket para los informes renderizados                                                      | `reporter-storage`   | No          |
| `OBJECT_STORAGE_ACCESS_KEY_ID`  | ID de la clave de acceso. Sensible.                                                        | —                    | Sí          |
| `OBJECT_STORAGE_SECRET_KEY`     | Clave de acceso secreta. Sensible.                                                         | —                    | Sí          |
| `OBJECT_STORAGE_USE_PATH_STYLE` | Usa direccionamiento de estilo de ruta (lo necesitan algunos almacenes compatibles con S3) | `false`              | No          |
| `OBJECT_STORAGE_DISABLE_SSL`    | Desactiva TLS hacia el endpoint de almacenamiento. Déjala en `false` en producción.        | `false`              | No          |

## Caché (Redis / Valkey)

| Variable            | Descripción                                                       | Valor predeterminado | Obligatoria |
| ------------------- | ----------------------------------------------------------------- | -------------------- | ----------- |
| `REDIS_HOST`        | Host y puerto de Redis/Valkey                                     | —                    | Sí          |
| `REDIS_PASSWORD`    | Contraseña de autenticación. Sensible.                            | —                    | No          |
| `REDIS_DB`          | Índice lógico de la base de datos                                 | `0`                  | No          |
| `REDIS_PROTOCOL`    | Versión del protocolo RESP                                        | varía                | No          |
| `REDIS_TLS`         | Habilita TLS para la conexión                                     | `false`              | No          |
| `REDIS_CA_CERT`     | Certificado CA en PEM codificado en Base64 para TLS               | —                    | No          |
| `REDIS_MASTER_NAME` | Nombre del master de Sentinel (despliegues con Sentinel)          | —                    | No          |
| `REDIS_USE_GCP_IAM` | Autentica ante GCP Memorystore con IAM en lugar de una contraseña | `false`              | No          |

## Renderizado de PDF (worker)

| Variable              | Descripción                                                   | Valor predeterminado | Obligatoria |
| --------------------- | ------------------------------------------------------------- | -------------------- | ----------- |
| `PDF_POOL_WORKERS`    | Workers concurrentes de renderizado de PDF                    | `2`                  | No          |
| `PDF_TIMEOUT_SECONDS` | Tiempo de espera de renderizado de PDF por informe (segundos) | `90`                 | No          |

## Fuentes de datos de informes

Los informes leen de fuentes de datos de PostgreSQL y MongoDB en el registro persistido. Crea y administra las entradas ordinarias mediante la [API de fuentes de datos](/es/reference/products/reporter/list-data-sources). El bloque de entorno de abajo es una vía de arranque opcional para un solo tenant. Los despliegues multi-tenant crean fuentes de datos ordinarias por tenant mediante la API.

`DATASOURCE_{NAME}_CONFIG_NAME` hace que exista un bloque de siembra por entorno. Reporter escanea las claves que coinciden con `DATASOURCE_*_CONFIG_NAME`. El prefijo cuenta tanto como el sufijo, así que una clave que solo termina en `_CONFIG_NAME` no declara nada. Al iniciar el Manager, un bloque completo siembra su `configName` solo cuando ninguna entrada del registro, incluida una eliminada de forma lógica, ya usa ese nombre. El valor es el nombre que usan tus plantillas para dirigirse a la fuente.

Dentro de un bloque, las variables marcadas como obligatorias son las que Reporter necesita antes de leer el bloque.

| Variable                               | Descripción                                                                                                                                                                                                                                                                                                         | Valor predeterminado | Obligatoria |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | ----------- |
| `DATASOURCE_{NAME}_CONFIG_NAME`        | Nombre que usan las plantillas para dirigirse a esta fuente de datos. Declara el bloque.                                                                                                                                                                                                                            | —                    | Sí          |
| `DATASOURCE_{NAME}_TYPE`               | Motor de la fuente de datos: `postgresql` o `mongodb`                                                                                                                                                                                                                                                               | —                    | Sí          |
| `DATASOURCE_{NAME}_HOST`               | Host de la fuente de datos                                                                                                                                                                                                                                                                                          | —                    | Sí          |
| `DATASOURCE_{NAME}_PORT`               | Puerto de la fuente de datos                                                                                                                                                                                                                                                                                        | —                    | Sí          |
| `DATASOURCE_{NAME}_DATABASE`           | Nombre de la base de datos                                                                                                                                                                                                                                                                                          | —                    | Sí          |
| `DATASOURCE_{NAME}_USER`               | Usuario de la fuente de datos                                                                                                                                                                                                                                                                                       | —                    | No          |
| `DATASOURCE_{NAME}_PASSWORD`           | Contraseña de la fuente de datos. Sensible.                                                                                                                                                                                                                                                                         | —                    | No          |
| `DATASOURCE_CRED_ENC_KEY`              | Clave AES persistente codificada en hex, compartida por el Manager y el worker para cifrar y descifrar las credenciales del registro. Mantenla sin cambios a través de reinicios y despliegues; cambiarla les impide descifrar las credenciales ya almacenadas en el registro. Genérala con `openssl rand -hex 32`. | —                    | Sí          |
| `DATASOURCE_{CONFIG_NAME}_SCHEMAS`     | Esquemas que se exponen desde la fuente de datos (CSV). Esta clave usa el valor de `CONFIG_NAME` en mayúsculas, a diferencia de las demás claves del bloque.                                                                                                                                                        | `public`             | No          |
| `DATASOURCE_{NAME}_SSLMODE`            | Modo SSL para una conexión de PostgreSQL                                                                                                                                                                                                                                                                            | —                    | No          |
| `DATASOURCE_{NAME}_SSLROOTCERT`        | Ruta al certificado raíz SSL de PostgreSQL                                                                                                                                                                                                                                                                          | —                    | No          |
| `DATASOURCE_{NAME}_SSL`                | Habilita TLS en una conexión de MongoDB                                                                                                                                                                                                                                                                             | —                    | No          |
| `DATASOURCE_{NAME}_SSLCA`              | Ruta al archivo de certificado CA de MongoDB                                                                                                                                                                                                                                                                        | —                    | No          |
| `DATASOURCE_{NAME}_OPTIONS`            | Opciones adicionales de la URI de MongoDB                                                                                                                                                                                                                                                                           | —                    | No          |
| `DATASOURCE_CRM_MIDAZ_ORGANIZATION_ID` | ID de organización de Midaz que acota la fuente de datos de CRM reservada. Obligatoria cuando `DATASOURCE_CRM_CONFIG_NAME=plugin_crm`.                                                                                                                                                                              | —                    | No          |
| `CRYPTO_HASH_SECRET_KEY_CRM`           | Clave de hashing de CRM existente, usada para leer la PII de la fuente de datos de CRM. Sensible; obligatoria cuando se leen campos de CRM.                                                                                                                                                                         | —                    | No          |
| `CRYPTO_ENCRYPT_SECRET_KEY_CRM`        | Clave de cifrado de CRM existente, usada para leer la PII de la fuente de datos de CRM. Sensible; obligatoria cuando se leen campos de CRM.                                                                                                                                                                         | —                    | No          |

A continuación, un bloque de siembra completo por fuente de datos. Configura la `DATASOURCE_CRED_ENC_KEY` global por separado, como se describió arriba. Recomendamos usar el mismo nombre para `CONFIG_NAME` y `{NAME}`, con el segmento de la variable de entorno en mayúsculas (por ejemplo, `ONBOARDING` para `CONFIG_NAME=onboarding`). Eso mantiene la clave del esquema intuitiva, porque `SCHEMAS` usa el valor de `CONFIG_NAME` como su clave, mientras que los demás campos usan `{NAME}`:

```bash theme={null}
DATASOURCE_ONBOARDING_CONFIG_NAME=onboarding
DATASOURCE_ONBOARDING_TYPE=postgresql
DATASOURCE_ONBOARDING_HOST=midaz-postgres-replica
DATASOURCE_ONBOARDING_PORT=5702
DATASOURCE_ONBOARDING_DATABASE=onboarding
DATASOURCE_ONBOARDING_USER=reporter
DATASOURCE_ONBOARDING_PASSWORD=<secret>
DATASOURCE_ONBOARDING_SCHEMAS=public
```

Una plantilla entonces se dirige a esa fuente por su nombre de configuración, como en `{{ onboarding.accounts }}`. Usa la API para agregar o actualizar una fuente de datos ordinaria. En modo de un solo tenant, un bloque de entorno solo siembra una entrada previamente ausente. Nunca sobrescribe una entrada administrada por la API ni restaura una eliminada de forma lógica.

<h3 id="reserved-crm-datasource">
  Fuente de datos de CRM reservada
</h3>

`plugin_crm` es la fuente de datos de CRM reservada y administrada por entorno. No la crees ni le apliques PATCH mediante la API de fuentes de datos ordinaria: Reporter rechaza esa vía con `RPT-0073`. Una plantilla de CRM debe usar exactamente el nombre de configuración `plugin_crm` y un bloque completo de MongoDB:

```bash theme={null}
DATASOURCE_CRM_CONFIG_NAME=plugin_crm
DATASOURCE_CRM_TYPE=mongodb
DATASOURCE_CRM_HOST=<crm-mongodb-host>
DATASOURCE_CRM_PORT=<crm-mongodb-port>
DATASOURCE_CRM_DATABASE=<crm-database>
DATASOURCE_CRM_USER=<crm-readonly-user>
DATASOURCE_CRM_PASSWORD=<secret>
DATASOURCE_CRM_MIDAZ_ORGANIZATION_ID=<midaz-organization-id>
```

Coloca `DATASOURCE_CRM_PASSWORD`, `CRYPTO_HASH_SECRET_KEY_CRM` y `CRYPTO_ENCRYPT_SECRET_KEY_CRM` en tu almacén de secretos. Los valores criptográficos de CRM deben ser las mismas claves que ya usa CRM; no generes claves de reemplazo para Reporter. Mantén `DATASOURCE_CRED_ENC_KEY` estable también: cambiarla le impide a Reporter descifrar las credenciales de fuentes de datos almacenadas.

En un despliegue de un solo tenant, el Manager usa este bloque al iniciar para sembrar `plugin_crm` y para completar un `metadata.midazOrganizationId` ausente o vacío. Un ID de organización persistido y no vacío prevalece y no se sobrescribe por el entorno. Si es incorrecto, no uses la API ordinaria para cambiarlo; detente y usa la vía de recuperación de ingeniería compatible. En un despliegue multi-tenant, el Manager omite esta siembra por entorno, así que este bloque no es un mecanismo de aprovisionamiento multi-tenant.

Para la ubicación en Helm y un ejemplo completo de valores, consulta [Reporter mediante Helm](/es/platform/deploy/reporter/reporter-helm). Para las plantillas que usan `plugin_crm`, valida la vía completa: importa o guarda la plantilla, genera un informe, confirma que los campos de CRM se descifran, y confirma que sus registros están acotados a la organización de Midaz prevista.

## Backbone de configuración compartido

Los siguientes bloques son idénticos en todos los productos de Lerian. La [referencia de configuración de BYOC](/es/reference/byoc-configuration) los documenta en su totalidad. Están desactivados de forma predeterminada.

* **Autenticación de Access Manager**: `PLUGIN_AUTH_ENABLED`, `PLUGIN_AUTH_ADDRESS`. Habilítala en producción.
* **Multi-tenancy**: `MULTI_TENANT_*`, además de `RABBITMQ_MULTI_TENANT_SYNC_INTERVAL` y `RABBITMQ_MULTI_TENANT_DISCOVERY_TIMEOUT`. Desactivada de forma predeterminada.
* **Service discovery**: `SD_*` (Consul, y Reporter también acepta los alias heredados `SD_ADVERTISE_*` / `CONSUL_ADDR`). Desactivado de forma predeterminada.
* **Event streaming**: `STREAMING_ENABLED`, `STREAMING_BROKERS`, `STREAMING_CLOUDEVENTS_SOURCE`, además de `RABBITMQ_REPORT_EVENTS_EXCHANGE` para el exchange de eventos. Desactivado de forma predeterminada.
* **OpenTelemetry**: `ENABLE_TELEMETRY`, `OTEL_*`, `OTEL_INSECURE_EXPORTER`. La telemetría es de tipo push OTLP.
