Configuración

La API lee la configuración del entorno (un .env opcional cubre los huecos; el entorno real siempre gana). Lo esencial:

Obligatorio

  • SVITRIO_JWT_SECRET — clave de firma HS256. El arranque falla si no está definida o tiene menos de 32 bytes.

Núcleo

  • SVITRIO_ADDR — dirección de escucha (por defecto :8080).

  • SVITRIO_SCHEMA — ruta a schema.gate (incrustado en la imagen en /schema.gate).

  • SVITRIO_ADMIN_URL — origen del administrador; destino de redirección del enlace mágico y allow-origin de CORS.

  • SVITRIO_JWT_ISSUER — claim iss del JWT.

Base de datos

  • SVITRIO_DB — ruta/DSN de la BD (por defecto ./svitrio.db).

  • SVITRIO_DB_PROVIDERsqlite | turso | postgres | neon, con el SVITRIO_DB_HOST/TOKEN/USER/PASSWORD/NAME/PORT/SSLMODE correspondiente.

  • SVITRIO_CONTENT_DSN — almacén de contenido separado opcional.

Secretos y autenticación

  • SVITRIO_SECRETS_KEY — clave AES-256 de 32 bytes en base64 que sella en reposo las claves de facturación/IA/licencia. Sin definir ⇒ texto plano + un aviso de arranque.

  • SVITRIO_ACCESS_TTL (15m), SVITRIO_REFRESH_TTL (7d), SVITRIO_MAGIC_TTL (15m).

  • SVITRIO_WEBAUTHN_RP_ID / SVITRIO_WEBAUTHN_ORIGINS / SVITRIO_WEBAUTHN_RP_NAME — passkeys (opcional).

  • SVITRIO_RATELIMIT_DISABLED / _BURST(8) / _EVERY(20s) — la limitación del endpoint de autenticación.

Correo

  • SVITRIO_EMAIL_PROVIDERconsole | brevo | smtp.

  • SVITRIO_BREVO_API_KEY, o SVITRIO_SMTP_HOST/PORT/USER/PASS.

  • SVITRIO_EMAIL_FROM / SVITRIO_EMAIL_FROM_NAME.

Webhooks y portal

  • SVITRIO_CONTENT_WEBHOOK_URL / SVITRIO_CONTENT_WEBHOOK_SECRET — ping de contenido saliente.

  • SVITRIO_TICKETS_INBOUND_SECRET / SVITRIO_TICKETS_BREVO_SECRET — webhooks de tickets entrantes.

  • SVITRIO_PORTAL_ADDR (:8081), SVITRIO_PORTAL_URL, SVITRIO_PORTAL_BASE_DOMAIN, SVITRIO_RESERVED_SUBDOMAINS.