Blog/Tutorial

Cómo auto-alojar (Self-Host) Supabase en tu propio VPS con Docker

·9 min de lectura
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:

  1. 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).
  2. Docker y Docker Compose instalados en el servidor.
  3. 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:

  1. POSTGRES_PASSWORD: La contraseña maestra para tu base de datos PostgreSQL.
  2. JWT_SECRET: Una cadena aleatoria larga para firmar los tokens de autenticación de tus usuarios.
  3. ANON_KEY y SERVICE_ROLE_KEY: Claves de API que puedes generar utilizando herramientas online de JWT (usando el JWT_SECRET anterior).

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:

  1. 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 (puerto 8000), abriendo únicamente el puerto del API Gateway (Kong) para que tu aplicación sea segura frente a escaneos maliciosos.
  2. 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.
  3. 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.