Pasos para que un operador con acceso a prod despliegue con seguridad: env,
build del frontend en CI, up del stack, seed + sync de permisos, smoke test y
rollback. Incluye feature-flag SESSION_STORE_ENABLED como mitigación rápida.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Pasa SESSION_STORE_ENABLED/IDLE/MAX al backend vía environment del override
(el contenedor no lee .env). SESSION_STORE_ENABLED=false revierte el patrón.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Frontend construido con Dockerfile.prod (adapter-node, VITE_* horneadas), backend
uvicorn sin reload, puertos solo en 127.0.0.1 (nginx del host hace TLS/proxy),
postgres/minio sin publicar. Para testing.crm.aduanasoft.com con auth real vía Hub.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Corrige la receta de integración según el código del Hub: single-realm (master) +
single-client (aduanasoft), HUB_URL para el sso-exchange del relay, y URLs del
dominio del CRM. Secretos en blanco (los pone el operador en el server).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Para levantar el stack en el servidor de pruebas con acceso por túnel SSH sin
exponer nada a internet: backend/frontend publicados solo en 127.0.0.1 y
postgres/minio sin publicar al host.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- deploy/nginx/testing.crm.aduanasoft.com.conf: reverse proxy TLS, app (:5173) y
API (:8000) en el mismo origen, headers de seguridad, límite 30 MB de subida.
- deploy/env.testing.example: plantilla de entorno SIN secretos, con banderas de
seguridad (ENVIRONMENT=production, DEV_LOCAL_AUTH=false) y URLs del dominio.
- deploy/README.md: runbook (acceso por llave, build de producción, migraciones,
nginx+certbot, smoke test). Los secretos y las migraciones los ejecuta el operador.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>