Ir al contenido

Variables de entorno

Se cargan desde .env (Bun lo lee automáticamente). Copia de partida: cp .env.example .env.

Variable Requerida Descripción
DATABASE_URL ✅ postgresql://usuario:clave@host:5432/db
Variable Descripción
BOLETO_HMAC_SECRET Firma HMAC de los QR. Fail-fast: la API no arranca sin él
REFRESH_TOKEN_SECRET Firma de refresh tokens; sin él los logins no traen refreshToken
CRON_SECRET Header x-cron-secret de los jobs; vacío = endpoints abiertos
NOTIFICACION_WEBHOOK_SECRET Header x-webhook-secret del webhook de rebotes; vacío = abierto
Variable Default Descripción
CORREO_PROVEEDOR consola consola (dev, imprime) o smtp
SMTP_HOST / SMTP_PORT — / 587 Servidor SMTP (solo si smtp)
SMTP_SECURE false true TLS directo (465); false STARTTLS (587)
SMTP_USER / SMTP_PASS — Credenciales SMTP
CORREO_FROM — Remitente, p. ej. PISA <no-reply@tudominio.mx>
Variable Default Descripción
PORT 5000 Puerto de escucha (valor inválido = 5000)
APP_URL http://localhost:5000 Base pública para links (verificación de email)
CORS_ORIGIN vacío Orígenes permitidos, coma-separados; vacío = sin CORS
RATE_LIMIT_MAX 300 Requests por IP por minuto (global)
RATE_LIMIT_AUTH_MAX 30 Límite de los endpoints de login
TRUST_PROXY false true tras proxy/LB: confía en X-Forwarded-For
Variable Default Descripción
CRON_ENABLED true false apaga los jobs (réplicas sin cron)
CRON_TZ vacío Zona horaria de los jobs (vacío = local)
RETENCION_SESIONES_DIAS 30 Retención de sesiones
RETENCION_INTENTOS_DIAS 90 Retención de intentos de login
Variable Default Descripción
UPLOADS_DIR ./uploads Disco para los SVGs subidos (Bun.write crea carpetas)
Ventana de terminal
DATABASE_URL="postgresql://pisa:fuerte@db:5432/pisa"
BOLETO_HMAC_SECRET="…32+ caracteres aleatorios…"
REFRESH_TOKEN_SECRET="…otro distinto…"
CRON_SECRET="…otro distinto…"
NOTIFICACION_WEBHOOK_SECRET="…otro distinto…"
CORREO_PROVEEDOR="smtp"
SMTP_HOST="smtp.tudominio.mx"
SMTP_USER="no-reply@tudominio.mx"
SMTP_PASS="…"
CORREO_FROM="PISA <no-reply@tudominio.mx>"
APP_URL="https://pisa.tudominio.mx"
CORS_ORIGIN="https://pisa.tudominio.mx"
TRUST_PROXY="true"
CRON_TZ="America/Mexico_City"

→ Despliegue