← Volver al Generador Principal

Configuración de Docker Compose para Supabase Local Development Stack

Cuándo usar esta combinación

Utiliza este stack para desarrollo local desacoplado de la nube, prototipado rápido y ejecución de pruebas de integración automatizadas en pipelines de CI/CD. Es ideal cuando el equipo necesita paridad de entorno estricta, depurar lógica de base de datos (PostgreSQL, Row Level Security, Triggers) sin incurrir en costos de infraestructura cloud, o trabajar en entornos sin conexión a internet manteniendo todas las APIs de Supabase (Auth, Storage, Realtime, PostgREST).


Variables de entorno críticas para producción

  1. POSTGRES_PASSWORD: Contraseña maestra de la base de datos PostgreSQL. En desarrollo viene con valores por defecto débiles (postgres); en producción debe ser una cadena aleatoria de alta entropía (mínimo 32 caracteres).
  2. JWT_SECRET: Clave criptográfica utilizada por GoTrue (Auth), PostgREST y Kong para firmar y validar tokens de sesión. Si se ve comprometida, cualquiera puede falsificar identidades y permisos.
  3. SERVICE_ROLE_KEY (y su contraparte ANON_KEY): Tokens de acceso a la API derivados del JWT_SECRET. La clave SERVICE_ROLE omite las políticas de seguridad a nivel de fila (RLS), otorgando control total sobre los datos. Deben regenerarse obligatoriamente al cambiar el JWT_SECRET.

Consejo de Arquitectura y Rendimiento

Implementa un Connection Pooler (PgBouncer o Supavisor) y restringe la exposición de red:

Por defecto, el stack local expone PostgreSQL directamente en el puerto 5432 y las APIs en el 8000. En producción, nunca expongas el puerto de la base de datos a internet pública; mantén PostgreSQL dentro de una red interna de Docker (internal: true) accesible únicamente por Kong y los servicios del stack.

Además, PostgreSQL crea un proceso pesado por cada conexión cliente. Si tu aplicación usa entornos serverless o microservicios que abren conexiones concurrentes cortas, agotarás el límite de max_connections rápidamente. Activa y ajusta PgBouncer o Supavisor para limitar las conexiones reales hacia la base de datos, y dimensiona la variable shared_buffers de PostgreSQL al 25% de la RAM total asignada al contenedor.

Checklist de Seguridad antes de desplegar