Ir al contenido
Q
QuoteNode

Operations

Referencia de variables de entorno

Referencia completa de variables de entorno de QuoteNode para produccion, desarrollo, Docker Compose, backup workers y tooling frontend.

Referencia de variables de entorno

Esta pagina consolida las variables de entorno que el proyecto QuoteNode usa actualmente.

La fuente principal de verdad sigue estando en las plantillas del repositorio de aplicacion:

  • infra/.env.prod.example
  • infra/.env.dev.example
  • infra/.env.dev-sid
  • infra/docker-compose.*.yml

Usa esta pagina como catalogo orientado a operacion. Para una puesta en marcha minima, consulta la Installation Guide. Para topologia de despliegue, consulta Deployment Options.

Como leer esta referencia

  • Prod significa que la variable pertenece a un archivo .env de produccion.
  • Dev significa stacks locales de desarrollo o demo.
  • Compose significa variables de cableado del host Docker Compose, no necesariamente de la aplicacion.
  • Un default vacio suele significar “define este valor explicitamente si necesitas la funcionalidad”.

Variables de Compose y pila local

Estas variables modelan el entorno local Docker Compose y el proxy del frontend en desarrollo.

VariableAmbitoPropositoValor tipico
COMPOSE_PROJECT_NAMEDev / ComposeEvita colisiones de nombres de contenedor entre varias pilas locales.quotenode-dev, quotenode-dev-sid
POSTGRES_PORTDev / ComposePuerto del host asignado a PostgreSQL.5433, 5434
MAILPIT_PORTDev / ComposePuerto del host para la UI de Mailpit.8025, 8026
BACKEND_PORTDev / ComposePuerto del host para la API backend.8091, 8092
FRONTEND_PORTDev / ComposePuerto del host para el frontend.5174, 5175
VITE_PUBLIC_API_BASEDev / FrontendURL base visible por el navegador para la API en pilas locales.http://localhost:8091, http://localhost:8092
APP_VERSIONProd / Dev / ComposeTag de imagen Docker seleccionado por Compose.latest, 1.0.0
PROXY_MODEProd / Dev / ComposeDecide si Caddy corre dentro de la pila (internal) o detras de un proxy externo (external).internal, external
DOMAINProd / ComposeDominio publico usado por Caddy y URLs publicas cuando el modo proxy interno esta activo.quotenode.example.com

Base de datos y runtime principal

VariableAmbitoPropositoValor tipico
DB_URLProd / DevCadena JDBC de PostgreSQL.jdbc:postgresql://postgres:5432/quotenode
DB_USERNAMEProd / DevUsuario de base de datos.quotenode, app
DB_PASSWORDProd / DevContrasena de base de datos.32+ caracteres aleatorios en prod
DB_NAMEProd / Dev / ComposeNombre de la base usado por app y Compose.quotenode, app
SPRING_PROFILES_ACTIVEProd / DevPerfil Spring activo.prod, dev
CORS_ALLOWED_ORIGINSProd / DevOrigenes de navegador permitidos para la API. Evita * en produccion.https://yourdomain.com
LOG_LEVELProd / DevNivel base de logs de la aplicacion.ERROR, INFO, DEBUG

Rotacion de logs Docker y diagnostico de soporte

VariableAmbitoPropositoValor tipico
DOCKER_LOG_MAX_SIZEProd / ComposeTamano maximo de un fichero de log antes de rotarlo.10m
DOCKER_LOG_MAX_FILEProd / ComposeNumero de ficheros rotados que se conservan.5
SUPPORT_LOGS_BUFFER_SIZEProdTamano del buffer de vista previa de logs en soporte.4000
SUPPORT_LOGS_PREVIEW_RATE_LIMIT_PER_MINUTEProdRate limit para peticiones de preview de logs.30
SUPPORT_LOGS_LOG_LEVEL_DEFAULT_TTL_MINUTESProdTiempo de auto-reversion para cambios temporales de nivel de log.15
SUPPORT_LOGS_LOG_LEVEL_MAX_TTL_MINUTESProdVentana maxima permitida para escalado temporal de logs.30
SUPPORT_LOGS_LOG_LEVEL_ALLOWED_SCOPESProdPaquetes a los que se permite escalado temporal de logging.dev.quotenode,...

Seguridad de autenticacion y sesion

VariableAmbitoPropositoValor tipico
DB_ENCRYPTION_KEYProd / DevClave principal de cifrado de capa aplicacion para datos sensibles.64 caracteres hex en prod
TIMING_TOKEN_SECRETProd / DevSecreto HMAC para proteccion antibt basada en timing.32+ caracteres aleatorios
PUBLIC_LINK_PASSWORD_SESSION_SECRETProd / DevSecreto de sesion para enlaces publicos protegidos.32+ caracteres aleatorios
AUTH_PASSWORD_MIN_LENGTHProd / DevLongitud minima de contrasena.12 en prod, 8 en dev
AUTH_PASSWORD_COMPLEXITY_LEVELProd / DevNivel de complejidad exigido por la politica de contrasena.2 en prod, 1 en dev
AUTH_SESSION_IDLE_TIMEOUT_MINProd / DevTimeout de inactividad de sesion.30, 480
SECURITY_SESSION_ABSOLUTE_TIMEOUT_HProd / DevVida maxima absoluta de sesion.12, 24
SECURITY_MAX_FAILED_LOGINS_SOFTProd / DevUmbral de intentos fallidos para advertencia suave.5, 10
SECURITY_MAX_FAILED_LOGINS_TEMP_LOCKProd / DevUmbral de intentos fallidos para bloqueo temporal.10, 20
SECURITY_MAX_FAILED_LOGINS_HARD_LOCKProd / DevUmbral de intentos fallidos para bloqueo duro.20, 50
SECURITY_TEMP_LOCK_MINUTESProd / DevDuracion del bloqueo temporal.30, 5
FEATURE_2FA_ENABLEDProd / DevInterruptor general para 2FA.true, false
SECURITY_REQUIRE_2FA_ROLESProd / DevRoles obligados a enrolarse en 2FA.ADMIN
SECURITY_BOT_DETECTION_ENABLEDProd / DevActiva la capa de deteccion de bots.true, false
SECURITY_BOT_SCORE_WARN_THRESHOLDProd / DevUmbral de score para solo advertir.30
SECURITY_BOT_SCORE_BLOCK_THRESHOLDProd / DevUmbral de score para bloquear.70
SECURITY_IP_WHITELIST_FORCE_DISABLERuntime overrideOverride operativo de emergencia para desactivar la whitelist IP persistida.false

CRM, archivos, importaciones y media de producto

VariableAmbitoPropositoValor tipico
CRM_DEDUP_NAME_SIMILARITY_THRESHOLDProd / DevUmbral pg_trgm para advertencias de empresas duplicadas.0.8
CRM_DEDUP_EMAIL_DOMAIN_WARNProd / DevAdvierte cuando el dominio del email coincide con registros existentes.true
CRM_ATTACHMENT_MAX_SIZE_MBProd / DevTamano maximo de adjuntos CRM.25, 10
CRM_ATTACHMENT_ALLOWED_TYPESProd / DevExtensiones permitidas para adjuntos CRM.pdf,doc,docx,...
CSV_IMPORT_MAX_ROWSProd / DevLimite de filas en importaciones CSV.5000
STORAGE_PATHProd / DevDirectorio raiz para archivos subidos./data/uploads, ./data/uploads
PIM_MEDIA_MAX_SIZE_MBProd / DevTamano maximo de una imagen de producto.5, 10
PIM_MEDIA_MAX_PER_PRODUCTProd / DevNumero maximo de recursos multimedia por producto.5, 10
PIM_MEDIA_THUMBNAIL_WIDTHProd / DevAncho de miniatura usado en procesamiento de imagen.300
PIM_MEDIA_ALLOWED_TYPESProd / DevExtensiones permitidas para media de producto.jpg,jpeg,png,webp,svg
IMPORT_ZIP_MAX_SIZE_MBProd / DevTamano maximo de ZIP para importacion masiva de imagenes.100
IMPORT_ZIP_MAX_IMAGESProd / DevNumero maximo de imagenes dentro del ZIP.1000
IMPORT_IMAGE_MAX_SIZE_MBProd / DevTamano maximo de cada imagen importada.5
IMPORT_IMAGE_FUZZY_THRESHOLDProd / DevUmbral para emparejamiento difuso entre nombre de fichero y producto.0.82

Shipping, FX y valores por defecto de ofertas

VariableAmbitoPropositoValor tipico
SHIPPING_DEFAULT_VOLUMETRIC_DIVISORProd / DevDivisor de peso volumetrico usado por los calculos de envio.4000
SHIPPING_OVERRIDE_REQUIRES_REASONProd / DevExige justificacion cuando se sobrescribe el coste de envio.true
FX_PROVIDERProd / DevFuente del tipo de cambio.NBP, MOCK, ECB, CUSTOM
FX_PROVIDER_URLProd / DevURL de proveedor custom de FX.vacio salvo con CUSTOM
FX_REFRESH_INTERVAL_MINProd / DevCadencia de refresco automatico de FX.60, 0
FX_DEFAULT_MARGIN_PERCENTProd / DevMargen porcentual aplicado sobre la cotizacion del proveedor.0
FX_DEVIATION_WARN_PERCENTProd / DevUmbral de advertencia para ajustes FX manuales.3
FX_DEVIATION_BLOCK_PERCENTProd / DevUmbral de bloqueo para ajustes FX manuales.8
OFFER_NUMBER_PREFIXProd / DevPrefijo usado al numerar ofertas.OF

Email, enlaces publicos y notificaciones

VariableAmbitoPropositoValor tipico
SMTP_HOSTProd / DevHost SMTP usado para envio de ofertas y notificaciones.hostname del proveedor, localhost
SMTP_PORTProd / DevPuerto SMTP.587, 1025, 1026
SMTP_USERNAMEProd / DevUsuario SMTP.cuenta del proveedor
SMTP_PASSWORDProd / DevContrasena SMTP.secreto del proveedor
SMTP_AUTHProd / DevActiva autenticacion SMTP.true, false
SMTP_STARTTLSProd / DevActiva negociacion STARTTLS.true, false
PUBLIC_LINK_TOKEN_BYTESProd / DevEntropia usada para generar tokens de enlace publico.32
PUBLIC_LINK_DEFAULT_EXPIRY_DAYSProd / DevVentana de validez por defecto de los enlaces publicos.0 sin expiracion
PUBLIC_RATE_LIMIT_OPEN_PER_HOURProd / DevLimite horario para abrir endpoints publicos de oferta.60, 999
PUBLIC_RATE_LIMIT_ACTION_PER_HOURProd / DevLimite horario para acciones publicas como aceptar o rechazar.5, 999
TRACKING_IP_ANONYMIZEProd / DevActiva el anonimizado de IP en datos de tracking.false
TRACKING_IP_ANONYMIZE_AFTER_DAYSProd / DevRetardo antes de anonimizar IP de tracking.0
TRACKING_RETENTION_DAYSProd / DevVentana de retencion de datos de tracking de enlaces publicos.365
CLIENT_CONFIRM_EMAIL_ENABLEDProd / DevEnvia un correo de confirmacion al cliente tras aceptar.false
NOTIFICATIONS_ENABLEDProd / DevActiva el subsistema de notificaciones.true
NOTIFICATIONS_EMAIL_ENABLEDProd / DevActiva la entrega por email de notificaciones.true, false
NOTIFICATIONS_PUBLIC_PREFERENCES_URLProdURL publica para gestion de preferencias de notificaciones.https://yourdomain.com/notifications/preferences
NOTIFICATIONS_PREFERENCE_TOKEN_TTL_DAYSProdValidez de los enlaces de preferencias de notificacion.30
NOTIFICATIONS_OFFER_EXPIRY_WARN_DAYSProd / DevDias antes de expiracion en los que se envian recordatorios.7,2
NOTIFICATIONS_LICENSE_EXPIRY_WARN_DAYSProd / DevDias antes de expirar la licencia en los que se avisa.30,14,7,1
REMINDERS_JOB_INTERVAL_MINUTESProd / DevCadencia de polling del job de recordatorios.5

Generacion de PDF

VariableAmbitoPropositoValor tipico
PDF_ENABLEDProd / DevActiva la generacion de PDF.true, false
PDF_GOTENBERG_URLProd / DevURL interna del servicio Gotenberg.http://gotenberg:3000
PDF_SYNC_TIMEOUT_MSProd / DevTimeout para peticiones PDF sincronas.10000, 5000
PDF_SYNC_MAX_ITEMSProd / DevMaximo de lineas de oferta gestionadas en modo sincrono.50
PDF_STORAGE_PATHProd / DevRuta del filesystem donde se guardan PDFs generados./data/pdfs, ./data/pdfs
PDF_RETENTION_DAYSProd / DevRetencion de PDFs generados.365
PDF_RETRY_BACKOFF_SECONDSProd / DevPlan de reintentos para jobs PDF asincronos.30,120,600
PDF_WORKER_CONCURRENCYProd / DevConcurrencia de workers PDF.2
PDF_WORKER_POLL_INTERVAL_MSProd / DevIntervalo de polling para jobs PDF.2000

Licencias, reportes y mantenimiento

VariableAmbitoPropositoValor tipico
LICENSE_SKIP_SIGNATURE_CHECKProd / DevSalta la validacion de firma de licencia. Nunca lo actives en produccion.false, true
LICENSE_EXPIRY_CHECK_INTERVAL_HProd / DevCadencia de comprobacion de expiracion de licencia.24
REPORTS_DEFAULT_PERIOD_DAYSProd / DevPeriodo por defecto en reportes.30
REPORTS_EXPORT_MAX_ROWSProd / DevLimite de filas al exportar reportes.10000

Backups, GeoIP y operaciones de privacidad

VariableAmbitoPropositoValor tipico
BACKUP_ENABLEDProd / DevActiva backups programados.true, false
BACKUP_CRONProd / DevExpresion cron para backups automaticos.0 0 2 * * *
BACKUP_RETENTION_DAILYProd / DevNumero de backups diarios a conservar.7
BACKUP_RETENTION_WEEKLYProd / DevNumero de backups semanales a conservar.4
BACKUP_RETENTION_MONTHLYProd / DevNumero de backups mensuales a conservar.12
BACKUP_LOCAL_DIRRuntime / ComposeDirectorio local usado por scripts y workers de backup./app/data/backups
BACKUP_GPG_RECIPIENTProd / DevDestinatario GPG para cifrado de backups.fingerprint o email
BACKUP_RCLONE_REMOTEProd / DevDestino rclone para offsite backup.s3:bucket/path
BACKUP_ENCRYPTION_ENABLEDRuntime overrideSwitch interno o de smoke-test para comportamiento de cifrado de backup.false
GEOIP_ENABLEDProd / DevActiva controles de acceso basados en GeoIP.false
GEOIP_DB_PATHProd / DevRuta a la base de datos GeoIP de MaxMind./app/data/geoip/...
SECURITY_GEOIP_ALLOWED_COUNTRIESProd / DevAllowlist ISO de paises para validaciones GeoIP.vacio o PL,DE,CZ
MAXMIND_ACCOUNT_IDProdCuenta MaxMind para descargar GeoLite.account ID
MAXMIND_LICENSE_KEYProdClave MaxMind.secreto
GEOIP_EDITION_IDProdEdicion MaxMind.GeoLite2-Country
GDPR_ANONYMIZE_AUTO_AFTER_DAYSProd / DevHorizonte de anonimizado automatico para workflows de privacidad.0

Guia practica

  • Empieza desde la plantilla de produccion en despliegues reales y desde la plantilla de desarrollo para trabajo local.
  • Trata DB_ENCRYPTION_KEY, TIMING_TOKEN_SECRET, PUBLIC_LINK_PASSWORD_SESSION_SECRET y las credenciales SMTP como secretos que deben respaldarse de forma segura.
  • Mantén los puertos solo-Compose y las variables frontend fuera del .env de produccion salvo que tu modelo de despliegue los necesite expresamente.
  • Si solo necesitas el setup minimo viable, la Installation Guide es intencionadamente mas corta que esta referencia.

Recomendaciones operativas

Esta pagina es larga porque separa variables que a menudo terminan mezcladas en despliegues reales. Conviene leerla por bloques:

  • si estas desplegando por primera vez, empieza por database, seguridad y correo
  • si estas afinando operacion, revisa logs, backups y PDF
  • si estas depurando incidentes, compara primero el .env real con las plantillas del repositorio
  • si trabajas con varios stacks locales, valida especialmente puertos, COMPOSE_PROJECT_NAME y VITE_PUBLIC_API_BASE

No todas las variables deben usarse en todos los entornos. La referencia existe para explicar que soporta el sistema y en que capa vive cada ajuste.

Last reviewed: Recently