> ## 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

> Consulta la referencia completa de las variables de entorno usadas para configurar Reporter, organizadas por categoría para una consulta ágil y clara.

Esta referencia enumera las variables de entorno usadas para configurar **Reporter**, el servicio que genera reportes regulatorios, de cumplimiento y contables a partir de plantillas configurables. Reporter se entrega como un único binario cuyas superficies activas se seleccionan mediante `RUN_MODE`: el gestor de API, el worker de reportes, o ambos. Las defines en el momento del despliegue, mediante valores de Helm, Docker Compose o el entorno de tu orquestador. Las variables marcadas como requeridas hacen que el servidor falle al arrancar si no se definen.

Para los bloques de configuración que comparte cada producto de Lerian —postura de TLS, OpenTelemetry, autenticación de Access Manager, multi-tenancy, descubrimiento de servicios y streaming de eventos— consulta la [referencia de configuración 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 divídelos en desplegables separados (`api` y `worker`) para escalar la generación de reportes de forma independiente. Consulta la [referencia de salud y readiness](/es/reference/health-and-readiness) para el contrato de las sondas.

| Variable                         | Descripción                                                                                                                                                                               | Valor por defecto | Requerida        |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ---------------- |
| `RUN_MODE`                       | Superficies a ejecutar: `api`, `worker` o `all`                                                                                                                                           | `all`             | No               |
| `SERVER_PORT` / `SERVER_ADDRESS` | Dirección de enlace 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 por defecto | Requerida |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | --------- |
| `DEPLOYMENT_MODE`    | Sabor de despliegue: `local`, `byoc` o `saas`. En `saas`, el TLS es obligatorio para cada conexión a una dependencia y el servidor se niega a arrancar sin él. En `byoc`, el TLS se recomienda y se advierte en lugar de imponerse. También etiqueta la respuesta de `/readyz`. | `local`           | No        |
| `ALLOW_INSECURE_TLS` | Omite la imposición de TLS por conexión en los DSN de infraestructura. Déjala sin definir o en `false` en producción.                                                                                                                                                           | `false`           | No        |

## CORS y proxies

| Variable               | Descripción                                                                                                               | Valor por defecto | Requerida |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------- | ----------------- | --------- |
| `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` | Cabeceras CORS permitidas                                                                                                 | varía             | No        |
| `TRUSTED_PROXIES`      | CIDR de proxy de confianza para el análisis de `X-Forwarded-For`. Defínela al ejecutar 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 por defecto | Requerida |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | --------- |
| `MAX_PAGINATION_LIMIT` | Mayor `limit` que acepta una operación de listado. Una solicitud por encima del techo se rechaza con un error de paginación en lugar de recortarse. | `100`             | No        |

## Base de datos (MongoDB)

Almacena metadatos de reportes, plantillas e historial de ejecuciones.

| Variable              | Descripción                                                                   | Valor por defecto | Requerida |
| --------------------- | ----------------------------------------------------------------------------- | ----------------- | --------- |
| `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 PEM codificado en base64 para TLS (por ejemplo AWS DocumentDB) | —                 | No        |

## Broker de mensajes (RabbitMQ)

Transporta la cola de comandos de generación de reportes entre la API y el worker.

| Variable                      | Descripción                                                       | Valor por defecto | Requerida |
| ----------------------------- | ----------------------------------------------------------------- | ----------------- | --------- |
| `RABBITMQ_HOST`               | Host del broker                                                   | —                 | Sí        |
| `RABBITMQ_PORT_AMQP`          | Puerto AMQP                                                       | —                 | Sí        |
| `RABBITMQ_PORT_HOST`          | Puerto de gestió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_NUMBERS_OF_WORKERS` | Concurrencia de consumidores del worker                           | `5`               | No        |

## Almacenamiento de objetos (compatible con S3)

Donde se almacenan los reportes renderizados. Funciona con cualquier endpoint compatible con S3.

| Variable                        | Descripción                                                                             | Valor por defecto  | Requerida |
| ------------------------------- | --------------------------------------------------------------------------------------- | ------------------ | --------- |
| `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 reportes renderizados                                                   | `reporter-storage` | No        |
| `OBJECT_STORAGE_ACCESS_KEY_ID`  | ID de clave de acceso. Sensible.                                                        | —                  | Sí        |
| `OBJECT_STORAGE_SECRET_KEY`     | Clave de acceso secreta. Sensible.                                                      | —                  | Sí        |
| `OBJECT_STORAGE_USE_PATH_STYLE` | Usa direccionamiento de tipo path (necesario para algunos almacenes compatibles con S3) | `false`            | No        |
| `OBJECT_STORAGE_DISABLE_SSL`    | Deshabilita TLS hacia el endpoint de almacenamiento. Déjala en `false` en producción.   | `false`            | No        |

## Caché (Redis / Valkey)

| Variable            | Descripción                                                       | Valor por defecto | Requerida |
| ------------------- | ----------------------------------------------------------------- | ----------------- | --------- |
| `REDIS_HOST`        | Host y puerto de Redis/Valkey                                     | —                 | Sí        |
| `REDIS_PASSWORD`    | Contraseña de autenticación. Sensible.                            | —                 | No        |
| `REDIS_DB`          | Índice de la base de datos lógica                                 | `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 PEM codificado en base64 para TLS                  | —                 | No        |
| `REDIS_MASTER_NAME` | Nombre del master de Sentinel (despliegues Sentinel)              | —                 | No        |
| `REDIS_USE_GCP_IAM` | Autentícate en GCP Memorystore con IAM en lugar de una contraseña | `false`           | No        |

## Renderizado de PDF (worker)

| Variable              | Descripción                                          | Valor por defecto | Requerida |
| --------------------- | ---------------------------------------------------- | ----------------- | --------- |
| `PDF_POOL_WORKERS`    | Workers concurrentes de renderizado de PDF           | `2`               | No        |
| `PDF_TIMEOUT_SECONDS` | Timeout de renderizado de PDF por reporte (segundos) | `90`              | No        |

## Fuentes de datos de reportes

Los reportes leen de fuentes de datos PostgreSQL y MongoDB declaradas en el entorno, un bloque por fuente. Sustituye `{NAME}` por el identificador de tu fuente de datos, y usa el mismo identificador en cada clave del bloque.

`DATASOURCE_{NAME}_CONFIG_NAME` es la variable que hace existir un bloque. Reporter descubre las fuentes de datos escaneando el entorno en busca de 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. Reporter lee el resto de un bloque solo para un nombre que encontró de esa forma. El valor es el nombre con el que tus plantillas se dirigen a la fuente.

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

| Variable                        | Descripción                                                                            | Valor por defecto | Requerida |
| ------------------------------- | -------------------------------------------------------------------------------------- | ----------------- | --------- |
| `DATASOURCE_{NAME}_CONFIG_NAME` | Nombre con el que las plantillas se dirigen 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_{NAME}_SCHEMAS`     | Esquemas a exponer desde la fuente de datos (CSV)                                      | `public`          | No        |
| `DATASOURCE_{NAME}_SSLMODE`     | Modo SSL para una conexión PostgreSQL                                                  | —                 | No        |
| `DATASOURCE_{NAME}_SSLROOTCERT` | Ruta al certificado raíz SSL de PostgreSQL                                             | —                 | No        |
| `DATASOURCE_{NAME}_SSL`         | Habilita TLS en una conexión 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        |
| `CRYPTO_HASH_SECRET_KEY_CRM`    | Clave de hashing para leer la PII de la fuente de datos CRM. Sensible.                 | —                 | No        |
| `CRYPTO_ENCRYPT_SECRET_KEY_CRM` | Clave de cifrado para leer la PII de la fuente de datos CRM. Sensible.                 | —                 | No        |

Un bloque completo. Te recomendamos definir el valor de `CONFIG_NAME` con la misma cadena del segmento `{NAME}`, como hace cada ejemplo de esta página — un solo nombre en el entorno y en tus plantillas:

```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 se dirige entonces a esa fuente por su config name, como en `{{ onboarding.accounts }}`. Las fuentes de datos se declaran solo en el entorno, así que agregar una es un cambio de configuración y un reinicio.

## Base de configuración compartida

Los siguientes bloques son idénticos en todos los productos de Lerian y están documentados por completo en la [referencia de configuración BYOC](/es/reference/byoc-configuration). Están desactivados por defecto.

* **Autenticación de Access Manager** — `PLUGIN_AUTH_ENABLED`, `PLUGIN_AUTH_ADDRESS`. Habilítala en producción.
* **Multi-tenancy** — `MULTI_TENANT_*`, más `RABBITMQ_MULTI_TENANT_SYNC_INTERVAL` y `RABBITMQ_MULTI_TENANT_DISCOVERY_TIMEOUT`. Desactivado por defecto.
* **Descubrimiento de servicios** — `SD_*` (Consul; Reporter también acepta los alias heredados `SD_ADVERTISE_*` / `CONSUL_ADDR`). Desactivado por defecto.
* **Streaming de eventos** — `STREAMING_ENABLED`, `STREAMING_BROKERS`, `STREAMING_CLOUDEVENTS_SOURCE`, más `RABBITMQ_REPORT_EVENTS_EXCHANGE` para el exchange de eventos. Desactivado por defecto.
* **OpenTelemetry** — `ENABLE_TELEMETRY`, `OTEL_*`, `OTEL_INSECURE_EXPORTER`. La telemetría es push OTLP.
