Cómo auto-alojar (Self-Host) Supabase en tu propio VPS con Docker
Supabase se ha consolidado como la alternativa de código abierto preferida a Firebase. Su oferta es tentadora: una base de datos PostgreSQL real, autenticación de usuarios, APIs generadas automáticamente (REST y GraphQL), almacenamiento de archivos y funciones en tiempo real.
Aunque Supabase Cloud ofrece una excelente capa gratuita, tiene limitaciones: tus proyectos se pausan tras una semana de inactividad, el almacenamiento de base de datos está limitado a 500 MB y los costes escalan rápidamente si necesitas más recursos.
La solución es auto-alojar (Self-Host) Supabase en tu propio VPS. Por el precio de un servidor de €5 en Hetzner o DigitalOcean, puedes tener una instancia de Supabase completamente funcional y sin límites artificiales de datos. En esta guía te explicamos cómo hacerlo paso a paso usando Docker Compose y cómo SecuryBlack te ayuda a gestionarlo.
Requisitos previos
Para seguir esta guía necesitarás:
- Un servidor VPS limpio (Ubuntu 24.04 recomendado) con al menos 2 GB de RAM (Supabase ejecuta varios servicios en contenedores y 1 GB puede quedarse corto).
- Docker y Docker Compose instalados en el servidor.
- Un dominio o subdominio apuntando a la IP pública de tu servidor (ej.
supabase.tudominio.com).
Paso 1: Clonar el repositorio oficial de Supabase Docker
Supabase proporciona una configuración de Docker optimizada y mantenida oficialmente. Conéctate a tu servidor mediante SSH y clona el repositorio:
# Clonar el repositorio oficial
git clone --depth 1 https://github.com/supabase/supabase.git
# Moverse al directorio de Docker
cd supabase/docker
Paso 2: Configurar las variables de entorno
Copia el archivo de plantilla .env.example a .env para empezar a configurar las contraseñas y claves criptográficas:
cp .env.example .env
Ahora debes generar contraseñas seguras y claves JWT únicas. Supabase incluye un script o puedes usar comandos estándar para crearlas. Es crítico que cambies los siguientes valores en el archivo .env:
POSTGRES_PASSWORD: La contraseña maestra para tu base de datos PostgreSQL.JWT_SECRET: Una cadena aleatoria larga para firmar los tokens de autenticación de tus usuarios.ANON_KEYySERVICE_ROLE_KEY: Claves de API que puedes generar utilizando herramientas online de JWT (usando elJWT_SECRETanterior).
Abre el archivo con tu editor favorito para realizar los cambios:
nano .env
Paso 3: Iniciar Supabase
Una vez configuradas las variables del archivo .env, puedes levantar todo el stack de servicios utilizando Docker Compose:
docker compose up -d
Este comando descargará e iniciará múltiples contenedores:
- Kong: El API Gateway que enruta las peticiones de tus clientes.
- GoTrue: El microservicio de autenticación de usuarios.
- PostgREST: El servidor que convierte tu esquema de base de datos en una API REST instantánea.
- Realtime: Para suscripciones en tiempo real mediante websockets.
- Storage: Para gestionar archivos de medios.
- Studio: El panel de administración visual (dashboard) de tu base de datos (disponible por defecto en el puerto
8000).
Para comprobar que todo está corriendo correctamente:
docker compose ps
Paso 4: Asegurar la instalación con SecuryBlack
Auto-alojar Supabase en un servidor expuesto a internet requiere precauciones importantes de seguridad y fiabilidad que normalmente tendrías que configurar a mano. Al conectar tu VPS a SecuryBlack, esto se soluciona automáticamente:
- Cortafuegos inteligente (FerroSentry): SecuryBlack bloquea el acceso externo a los puertos internos de la base de datos (puerto
5432) y al panel de control Studio (puerto8000), abriendo únicamente el puerto del API Gateway (Kong) para que tu aplicación sea segura frente a escaneos maliciosos. - Monitoreo del servidor (OxiPulse): Supabase consume recursos considerables de RAM y CPU al procesar transacciones pesadas. El agente OxiPulse te avisará de inmediato si el VPS se queda sin memoria o almacenamiento.
- Backups del Postgres verificados: Configura una tarea periódica en SecuryBlack para realizar un volcado (
pg_dump) de tu base de datos Supabase, subirlo a tu almacenamiento en la nube favorito (Cloudflare R2 o S3) y verificar automáticamente que el backup no esté corrupto.
Conclusión
Auto-alojar Supabase te otorga control absoluto sobre tus datos, elimina las limitaciones de la capa gratuita y te permite ahorrar costes significativos. Con Docker Compose, la instalación básica se realiza en menos de 10 minutos, y al complementarlo con SecuryBlack, obtienes la seguridad, observabilidad y tranquilidad que habitualmente solo tendrías en su nube de pago.