Documentación
Configuración de producción
Checklist de entorno e integraciones antes de desplegar Motoko Base a producción.
Usa esta checklist antes de tu primer deploy a producción. Las variables requeridas arrancan la app; las integraciones opcionales se pueden activar de una en una.
Referencia completa de env: Environment Variables.
Requerido
Estas cuatro variables son el mínimo para una app de producción funcional:
| Variable | Valor en producción |
|---|---|
DATABASE_URL | Cadena de conexión Postgres — preferir el transaction pooler de Supabase (puerto 6543) en runtime |
BETTER_AUTH_SECRET | Secreto aleatorio largo — genera con openssl rand -base64 32; nunca reutilices el secreto de desarrollo |
BETTER_AUTH_URL | Origen HTTPS público, p. ej. https://app.example.com |
NEXT_PUBLIC_APP_URL | El mismo origen público — se usa para short links y redirects |
Mantén BETTER_AUTH_URL y NEXT_PUBLIC_APP_URL alineados con la URL que visitan realmente los usuarios.
Ejecuta las migraciones contra producción antes o durante el primer deploy:
pnpm db:migrateSi el DDL falla a través del pooler, usa temporalmente una conexión directa (puerto 5432). Ver Migrations.
Base de datos
| Comprobación | Acción |
|---|---|
| Postgres en marcha | Supabase, Neon, RDS o autoalojado — cualquier Postgres funciona |
| Migraciones aplicadas | pnpm db:migrate contra producción |
| Pooler para runtime | Usa la URL del transaction pooler en DATABASE_URL para hosts serverless/multi-instancia |
| RLS (Supabase) | El starter viene con RLS habilitado — la app se conecta vía el rol del pooler, no con la anon key |
Detalles: Database.
Better Auth y secretos
| Comprobación | Acción |
|---|---|
| Nuevo secreto de producción | Genera un BETTER_AUTH_SECRET fresco — no copies de .env.local |
| Origen HTTPS | BETTER_AUTH_URL debe coincidir con tu dominio en vivo (cookies + callbacks dependen de ello) |
| Trusted origins (opcional) | BETTER_AUTH_TRUSTED_ORIGINS para hosts de preview/staging |
Detalles: Better Auth.
Callbacks de OAuth
Si usas inicio de sesión con Google o GitHub, actualiza tanto la consola del proveedor como .env:
| Proveedor | URL de callback de producción |
|---|---|
{BETTER_AUTH_URL}/api/auth/callback/google | |
| GitHub | {BETTER_AUTH_URL}/api/auth/callback/github |
Configura credenciales de producción GOOGLE_* / GITHUB_* — las apps OAuth de sandbox/dev no funcionarán en tu dominio en vivo.
Detalles: OAuth Setup.
Resend
Requerido para la verificación de registro y el restablecimiento de contraseña en producción.
| Variable | Notas |
|---|---|
RESEND_API_KEY | API key de producción |
EMAIL_FROM | Remitente de dominio verificado, p. ej. My App <noreply@yourdomain.com> |
Verifica tu dominio en Resend (SPF/DKIM) antes del go-live.
Detalles: Email (Resend).
Polar
Pasa de sandbox a production cuando la facturación entre en vivo.
| Variable | Notas |
|---|---|
POLAR_SERVER | production |
POLAR_ACCESS_TOKEN | Token de organización de producción |
POLAR_PRO_MONTHLY_PRODUCT_ID | ID de producto de producción |
POLAR_WEBHOOK_SECRET | De la configuración de webhook de producción |
URL del webhook: {NEXT_PUBLIC_APP_URL}/api/billing/webhooks/polar
Prueba el checkout en sandbox primero. Detalles: Payments (Polar).
Cloudflare R2
| Variable | Notas |
|---|---|
R2_ACCOUNT_ID | Cuenta de Cloudflare |
R2_ACCESS_KEY_ID / R2_SECRET_ACCESS_KEY | Token de API de producción |
R2_BUCKET_NAME | Bucket privado |
Configura CORS del bucket para tu origen de producción si fallan las subidas desde el navegador.
Detalles: Storage (R2).
PostHog
| Variable | Ámbito | Notas |
|---|---|---|
NEXT_PUBLIC_POSTHOG_PROJECT_TOKEN | Cliente | Token de proyecto de producción |
NEXT_PUBLIC_POSTHOG_HOST | Cliente | Coincide con tu región de PostHog (US/EU) |
POSTHOG_PERSONAL_API_KEY | Servidor | Para HogQL en /dashboard/analytics |
POSTHOG_PROJECT_ID | Servidor | ID de proyecto de producción |
POSTHOG_HOST | Servidor | Host de API (no el host de ingest) |
Detalles: Analytics (PostHog).
Sentry
| Variable | Notas |
|---|---|
NEXT_PUBLIC_SENTRY_DSN | DSN del proyecto de producción |
SENTRY_AUTH_TOKEN | CI/build — subida de source maps |
SENTRY_ORG / SENTRY_PROJECT | CI/build — slugs de org y proyecto |
Configura las variables de Sentry en tu entorno de build (CI), no solo en runtime, para que los source maps se suban durante pnpm build.
Sentry está desactivado durante next dev — verifica con pnpm build && pnpm start o en el host desplegado.
Detalles: Monitoring (Sentry).
Checklist previa al lanzamiento
- Variables de entorno de producción definidas en el host (nunca subas secretos)
-
BETTER_AUTH_SECRETfresco generado -
BETTER_AUTH_URLyNEXT_PUBLIC_APP_URLapuntan al dominio HTTPS en vivo - Migraciones aplicadas a la base de datos de producción
- Dominio de Resend verificado; prueba el email de verificación
- URLs de callback de OAuth actualizadas (si usas inicio de sesión social)
- Webhook de Polar apunta a la URL de producción (si usas billing)
-
pnpm buildtiene éxito en local o en CI - Prueba de humo: registro → verificación → dashboard → integraciones clave
Despliegue — Despliega en cualquier plataforma compatible con Next.js + ejemplo con Vercel.