Checklist de despliegue y seguridad
Despliega web y admin con migraciones explícitas, cron, readiness, red fiable y controles de producción.
Sincronizado con el commit
e632762del starter.
Usa esta lista final cuando la aplicación ya funcione en local. El objetivo no es solo un despliegue verde: es una versión que puedas autenticar, cobrar, operar, restaurar y administrar sin atajos de desarrollo.
Elige la forma del despliegue
- Web y consola admin son builds separados y deben usar orígenes separados; pueden compartir repositorio, base, secreto de autenticación y etiqueta de versión.
- Se documenta Vercel porque
vercel.jsontrae cron, pero sirve cualquier host Node con PostgreSQL, Redis, HTTPS, secretos y un programador autenticado. - Usa una URL PostgreSQL con pool para tráfico serverless y, si hace falta, una directa para migraciones. Migra antes de promover código; no se ejecuta desde el build.
- Empieza CSP en modo report-only, observa los hosts usados por analítica, Turnstile, Stripe y almacenamiento, y prueba la política antes de imponerla.
Está listo para producción cuando: ambos builds parten de la misma versión, migraciones verificadas, /api/ready sano, backup restaurable, el ejecutor de cola elegido y el webhook Stripe probados, sin flags demo y roles admin de lectura/escritura correctos.
Despliega web y apps/admin como servicios con orígenes separados. Usa Node >=24.22.1 <25 y pnpm 10.22.0; ejecuta pnpm lint, pnpm test:cov, pnpm build y después pnpm db:migrate:prod y pnpm db:check:prod. Las migraciones nunca son automáticas.
Controles obligatorios
BETTER_AUTH_SECRETfuerte, URL públicas y de autenticación correctas, PostgreSQL productivo y copias con pruebas de restauración.- Límites distribuidos en Redis y una fuente de IP explícitamente fiable.
- Claves de producción de Turnstile si captcha está activado; demos y registro de enlaces de autenticación desactivados.
CRON_SECRETy un ejecutor predeterminado:/api/cron/jobsautenticado cada cinco minutos,pnpm jobs:run --productionprogramado, opnpm jobs:work --productioncontinuo.vercel.jsonconfigura el horario HTTP.- Claves live de Stripe, webhook verificado, Billing Portal seguro y los cuatro Price ID principales exigidos por el validador actual.
- Credenciales de almacenamiento S3 compatible privado, mínimo privilegio, CORS correcto y URL firmadas breves.
- Un dominio remitente verificado y políticas de retención y legales revisadas para tus mercados.
Usa /api/health para vida y /api/ready para entorno, base, migraciones, Redis y cola. Una cola degradada requiere alerta aunque sirva tráfico.
Hay HSTS en producción y ruta CSP report-only. Observa reportes antes de aplicar una política compatible. Tras desplegar prueba auth, aislamiento, checkout/webhooks, ejecución de cola, exportación/borrado y MFA admin. Lee DEPLOYMENT.md, docs/security-headers.md y .env.example.
La versión actual también incluye imágenes reforzadas para web, admin, worker y Content Studio, y pnpm launch:check para unir configuración, contenedores, migraciones, integridad, retención, tests y builds. Sigue Contenedores y lanzamiento y demuestra recuperación con Copias y restore.
Valida la configuración real de producción
Ejecuta pnpm env:setup:prod para preparar .env.production.local y después pnpm env:check:prod. Web y Admin necesitan PostgreSQL, Redis, secretos de auth/cron, orígenes públicos y de auth, Resend y remitente, claves privada/webhook de Stripe, Portal y cuatro Prices, y credenciales de almacenamiento privado. El validador compartido exige estos valores aunque una pantalla no use el proveedor. Dejar claves vacías no desactiva facturación o almacenamiento; retirar una capacidad requiere cambiar explícitamente validación y ejecución.
BETTER_AUTH_URL y NEXT_PUBLIC_AUTH_BASE_URL de Admin apuntan a Admin; NEXT_PUBLIC_WEB_URL sigue siendo la app de clientes. Inyecta variables de producción en el worker y los comandos de publicación desde el gestor de secretos del host. Consulta las reglas de entorno. Aplica 0037_neat_excalibur.sql antes de actualizar auth y la migración independiente de Payload antes de Studio.
Contenedores y preparación de lanzamiento
Construye web, admin, worker y Content Studio, separa migraciones y ejecuta la auditoría completa de producción.
Flujo de generación de imagen por cinco créditos
Sigue una tarea asíncrona de pago por autenticación, permisos, créditos idempotentes, worker durable, almacenamiento privado y compensación.