Secretos y variables de entorno
La plataforma (apolo-app-platcom-platform) utiliza Seki para gestionar secretos y variables de entorno de forma centralizada y tipada.
Resumen
- Archivo principal de definición:
config/.secretsrc.json. - Para cada proyecto se genera un archivo
src/config/secrets.ts. - Los secretos se generan automáticamente al ejecutar targets como
serve,build,lintotest. - También pueden generarse de forma manual por proyecto.
Plantilla central (.secretsrc.json)
En config/.secretsrc.json se definen todos los secretos con:
name: nombre de la variable.type: tipo (string,number, etc.).default: valor por defecto (opcional).description: descripción funcional (opcional).
Ejemplo simplificado:
{
"secrets": [
{
"name": "PRODUCT_NAME",
"type": "string",
"default": "apolo-app-platcom-platform",
"description": "Seki product name"
},
{
"name": "BFF_API_PORT",
"type": "number",
"default": 8080
}
]
}
Aca te mostraremos las variables de entorno que usamos en el proyecto organizados por categorias.
Generales
| Variable | Descripción | Ejemplo |
|---|---|---|
PRODUCT_NAME | Nombre del producto configurado en Seki | apolo-app-platcom-platform |
ENVIRONMENT | Entorno de ejecución | development, staging, production |
APP_LOG_LEVEL | Nivel de logging de la aplicación | trace, debug, info, warn, error |
APP_LOG_FORMAT | Formato de salida de logs | text, json |
Puertos de Servicios
| Variable | Descripción | Ejemplo |
|---|---|---|
BFF_API_PORT | Puerto del BFF (Backend for Frontend) | 8080 |
TENANTS_API_PORT | Puerto del servicio de tenants | 8081 |
AUTH_API_PORT | Puerto del servicio de autenticación | 8082 |
PROVIDERS_API_PORT | Puerto del servicio de providers | 8083 |
APPLICATIONS_API_PORT | Puerto del servicio de aplicaciones | 8084 |
REPORTS_API_PORT | Puerto del servicio de reportes | 8086 |
ENCRYPTION_API_PORT | Puerto del servicio de encriptación | 8087 |
EXTERNAL_SUPPLIER_API_PORT | Puerto del proveedor externo | 8088 |
CORE_API_PORT | Puerto del servicio core | 8089 |
TRACKING_API_PORT | Puerto del servicio de tracking | 8091 |
URLs de Servicios Internos
| Variable | Descripción | Ejemplo |
|---|---|---|
BFF_API_URL | URL base del BFF | http://localhost:8080 |
AUTH_API_URL | URL del servicio de autenticación | http://localhost:8082 |
APPLICATIONS_API_URL | URL del servicio de aplicaciones | http://localhost:8084 |
TENANTS_API_URL | URL del servicio de tenants | http://localhost:8081 |
REPORTS_API_URL | URL del servicio de reportes | http://localhost:8086 |
ENCRYPTION_API_URL | URL del servicio de encriptación | http://localhost:8087 |
EXTERNAL_SUPPLIER_API_URL | URL del proveedor externo | http://localhost:8088 |
CORE_API_URL | URL del servicio core | http://localhost:8089 |
TRACKING_API_URL | URL del servicio de tracking | http://localhost:8091 |
Autenticación y Seguridad
| Variable | Descripción | Ejemplo |
|---|---|---|
JWT | Clave pública RSA para JWT (base64) | <base64> |
JWT_PRIVATE | Clave privada RSA para JWT (base64) | <base64> |
TOKEN_EXPIRATION_MINUTES | Tiempo de expiración del token JWT (minutos) | 240 |
ENCRYPTION_KEY | Clave de encriptación simétrica | <secret> |
Gestión de Accesos (apolo-rm-access-management)
| Variable | Descripción | Ejemplo |
|---|---|---|
RM_ACCESS_URL | URL del API de Access Management | http://localhost:8090 |
RM_ACCESS_CLIENT_ID | Client ID para Access Management | 66b645272cc2c37fca1331ba |
RM_ACCESS_CLIENT_KEY | API Key para Access Management | <secret> |
Integración IAM / Microsoft
| Variable | Descripción | Ejemplo |
|---|---|---|
IAM_BASE_API_URL | URL base del IAM | https://login.microsoftonline.com |
IAM_API_PATH | Path/version del API IAM | /v1.0 |
IAM_CLIENT_ID | Client ID de la aplicación IAM | <client-id> |
IAM_API_KEY | API Key del servicio IAM | <secret> |
Envio de Correos (SendGrid / Microsoft Graph)
| Variable | Descripción | Ejemplo |
|---|---|---|
SENDGRID_API_KEY | API Key de SendGrid | <secret> |
SENDGRID_EMAIL | Email remitente | easyventaempresa@cencosud.cl |
EMAIL_SENDER | Email configurado para Microsoft Graph | no-reply@cencosud.cl |
TENANT_ID_KEY | Tenant ID de Microsoft Graph | <tenant-id> |
OAUTH_CLIENT_ID_KEY | Client ID OAuth Microsoft Graph | <client-id> |
CLIENT_SECRET_KEY | Client Secret OAuth Microsoft Graph | <secret> |
Archivos y Storage
| Variable | Descripción | Ejemplo |
|---|---|---|
S3_BUCKET_NAME | Nombre del bucket S3 | files |
S3_REGION | Región del bucket S3 | us-east-1 |
CLOUDFRONT_URL | URL de CloudFront | datasharing-pe-files.test.smdigital.pe |
Reportes y Analítica
| Variable | Descripción | Ejemplo |
|---|---|---|
REPORT_POWER_BI_URL | URL del servicio Power BI | https://api.staging.cencox.xyz/... |
REPORT_POWER_BI_API_KEY_ID | API Key ID para Power BI | <key-id> |
Sesión e Inactividad
| Variable | Descripción | Ejemplo |
|---|---|---|
INACTIVITY_TIMEOUT_SECONDS | Tiempo antes de advertencia por inactividad (segundos) | 300 |
LOGOUT_AFTER_INACTIVITY_SECONDS | Tiempo para logout automático tras inactividad | 30 |
Eventos y Kafka
| Variable | Descripción | Ejemplo |
|---|---|---|
ABM_LOGIN_TOPIC | Tópico Kafka de eventos de login | apolo.login.events |
Generar Secretos Manualmente
Los secretos se gestionan mediante Seki y pueden generarse manualmente por proyecto cuando sea necesario.
# Para un proyecto específico
npx nx run bff-api:secrets
npx nx run auth-api:secrets
npx nx run applications-api:secrets
npx nx run reports-api:secrets
npx nx run tenants-api:secrets
npx nx run core-api:secrets
npx nx run portal-web:secrets
Ver Secretos del Proyecto
Cada proyecto tiene un .configrc.json en src/config/ que lista sus secretos:
cat apps/bff-api/src/config/.configrc.json