Blog / Tutoriales / Cómo autoalojar Supabase en un VPS: lo que necesitas saber

Cómo autoalojar Supabase en un VPS: lo que necesitas saber

Supabase autoalojado te da un backend completo con Postgres en tu propio servidor via Docker Compose. Esta guía cubre los 11 contenedores del stack, los requisitos mínimos, el despliegue y cuándo un VPS de Contabo es mejor opción que Supabase Cloud.

Lectura de 10 min
Self-Hosting Supabase on a VPS: What You Need to Know (head image)

En resumen.

  • Supabase autoalojado es Supabase Cloud en versión open-source corriendo en tu propio servidor via Docker Compose.
  • Requisitos mínimos: 4 GB RAM, 2 núcleos de CPU. Recomendado: 8 GB RAM, 4 núcleos.
  • El stack de Docker corre 11 contenedores: Postgres, Auth, PostgREST, Realtime, Storage, Studio y más.
  • Contabo provee el VPS. El stack lo operas, actualizas y respaldas tú.
Supabase Logo

Supabase autoalojado te da un backend completo respaldado por Postgres sin necesidad de una suscripción administrada. Obtienes el mismo Auth, Storage, Realtime y REST API que en Supabase Cloud, pero el servidor es tuyo, los datos se quedan donde los pones y la renta mensual es fija. El proyecto open-source tiene licencia Apache 2.0, así que no hay costo por proyecto ni por usuario: solo pagas el VPS.

Esta guía cubre qué incluye el stack, cómo desplegarlo con Docker Compose, cómo mantenerlo actualizado y qué considerar antes de elegir autoalojarlo en un VPS de Contabo en lugar de usar Supabase Cloud.

Qué incluye Supabase autoalojado

La configuración de Docker Compose de Supabase levanta 11 contenedores. Saber qué hace cada uno hace legible cualquier problema que aparezca después:

  • PostgreSQL: la base de datos central. Todo lo demás la envuelve.
  • Auth: autenticación basada en JWT para registros, inicios de sesión, magic links y OAuth.
  • PostgREST: convierte tu esquema de PostgreSQL en una RESTful API de forma automática.
  • Realtime: un servidor en Elixir que escucha cambios en PostgreSQL y los transmite vía WebSockets.
  • Storage: una API para subir y recuperar archivos; Postgres maneja los permisos de acceso, el disco local o S3 almacena los archivos.
  • Studio: el dashboard en el navegador. El contenedor más pesado en reposo.
  • API gateway: Envoy por defecto (Kong disponible como override opcional). Enruta /auth, /rest y /storage al servicio correcto y gestiona la autenticación con API keys.
  • Supavisor: el connection pooler. Administra las conexiones a Postgres para que tu app no sature la base de datos.
  • imgproxy: redimensionamiento de imágenes en tiempo real para archivos en Storage.
  • postgres-meta: una REST API para administrar Postgres (obtener tablas, agregar roles, ejecutar consultas).
  • Edge Functions: un runtime de Deno para funciones serverless que corren cerca de la base de datos.

Puedes recortar el stack. Si no necesitas Realtime, Storage, imgproxy, Edge Functions ni Analytics, elimina las secciones correspondientes del docker-compose.yml y el uso de RAM en reposo baja en consecuencia. Los servicios mínimos para tener un backend funcional son PostgreSQL, Auth, PostgREST y el API gateway.

Requisitos del sistema

Los requisitos oficiales de Supabase para correr el stack completo:

RecursoMínimoRecomendado
RAM4 GB8 GB+
CPU2 núcleos4 núcleos+
Almacenamiento40 GB SSD80 GB SSD+

La RAM es el recurso que se agota primero, porque Studio solo es el contenedor más pesado. La mayoría de los usuarios que corren el stack completo de 11 contenedores en un servidor de 4 GB reportan tocar el techo de memoria bajo carga moderada. Con 8 GB tienes margen real.

Desplegar el stack Docker de Supabase

La configuración oficial de Docker tiene dos rutas de instalación. Ambas llegan al mismo lugar: un stack de Supabase funcionando con todos los secrets configurados y los servicios saludables. La diferencia está en cuánto de ese trabajo se automatiza.

Quick start (Linux)

Para la mayoría de los despliegues en un VPS de Contabo con Ubuntu o Debian, el script de quick start es la opción correcta. Un solo comando instala Docker si es necesario, descarga la configuración de Docker Compose, genera todos los secrets y te pregunta por tus URLs:

curl -fsSL https://supabase.link/setup.sh | sh

El script es compatible con Debian/Ubuntu y RHEL/CentOS/Fedora. Se encarga de todo lo que la ruta manual requiere que hagas tú: instalar los prerequisitos, generar un DASHBOARD_PASSWORD seguro, crear el par de llaves JWT asimétricas y escribir tus URLs en el .env. Puedes revisar el script antes de ejecutarlo en raw.githubusercontent.com/supabase/supabase/refs/heads/master/docker/setup.sh.

Una vez que el script termina, levanta el stack:

cd supabase-project && \
sh run.sh start

Consulta tus credenciales generadas en cualquier momento con:

sh run.sh secrets

Instalación manual

Si no estás en una distribución Linux compatible, o quieres control explícito sobre cada paso, clona el repositorio directamente. Los comandos de abajo apuntan a un tag de release específico; sustituye self-hosted/v0.8.1 por el tag más reciente en la página de releases de Supabase cuando lo ejecutes.

git clone --depth 1 --branch self-hosted/v0.8.1 https://github.com/supabase/supabase

mkdir supabase-project

cp -rf supabase/docker/. supabase-project

cd supabase-project && cp .env.example .env

printf 'ref=self-hosted/v0.8.1\n' > .supabase-version

docker compose pull

Nunca arranques el stack con los secrets de ejemplo. Antes de tu primer run.sh start, genera todos los secrets con los scripts incluidos:

sh utils/generate-keys.sh

sh utils/add-new-auth-keys.sh

Luego configura tus URLs externas en el .env:

SUPABASE_PUBLIC_URL=https://your-domain.com:8000
API_EXTERNAL_URL=https://your-domain.com:8000/auth/v1
SITE_URL=https://your-domain.com

Arrancar con los secrets por defecto y rotarlos después hace que el connection pooler se cuelgue sin mostrar un error útil. Configúralos una vez antes del primer arranque.

Levanta el stack:

sh run.sh start

Todos los servicios deberían alcanzar un estado saludable en uno o dos minutos. Verifica con:

docker compose ps

Studio y todas las APIs están disponibles a través del API gateway en el puerto 8000 por defecto: http://your-server-ip:8000. Para producción, coloca un reverse proxy delante y termina TLS ahí. La documentación de Supabase tiene una guía de configuración HTTPS dedicada con la instalación completa para Caddy y Nginx.

¿Por qué autoalojar Supabase en Contabo en lugar de Supabase Cloud?

Autoalojar en un VPS de Contabo tiene sentido para tres tipos de proyecto: los que tienen requisitos de residencia de datos, los que corren cargas de trabajo predecibles donde una renta mensual fija sale más barato que la facturación por consumo, y los que necesitan control total sobre la versión de la base de datos y el stack.

Residencia de datos. Contabo ofrece Hub Europe, nuestro datacenter en la UE, con procesamiento de datos bajo la legislación europea. Si tu proyecto almacena datos personales sujetos al RGPD, mantener todo en un datacenter de Contabo en la UE y correr tu propia instancia de Postgres significa que tú controlas dónde viven los datos y quién puede acceder a ellos, sin dependencia de un backend de terceros.

Costos predecibles. El tier gratuito de Supabase Cloud es generoso para desarrollo, pero los workloads de producción se cobran por tamaño de base de datos, egress y usuarios activos. Un Core VPS de Contabo te da una renta mensual fija sin importar cuántas llamadas a la API haga tu app. Para aplicaciones con tráfico constante, un servidor de precio fijo suele salir más barato que la facturación por consumo una vez que superas los límites del tier gratuito.

Control del stack. En una instancia autoalojada, tú eliges la versión de Postgres, corres tus propias extensiones y controlas el calendario de actualizaciones. También puedes correr múltiples proyectos en un solo servidor, algo que Supabase Cloud cobra por proyecto.

Contabo provee el VPS y la red. Tú operas el stack de Supabase, aplicas actualizaciones, configuras respaldos y respondes a fallas. Supabase no ofrece soporte para instancias autoalojadas. Si no te sientes cómodo administrando un servidor Linux y despliegues con Docker Compose, Supabase Cloud puede ser el mejor punto de partida.

Mantener el stack actualizado

Supabase publica snapshots estables de Docker Compose aproximadamente una vez al mes. El script update.sh maneja las actualizaciones in-place: descarga la configuración más reciente de self-hosted/v* y la fusiona sobre tus archivos con un three-way merge, preservando los cambios locales en docker-compose.yml donde sea posible.

sh update.sh

Antes de aplicar una actualización, revisa el self-hosted changelog para detectar breaking changes. Después de actualizar, reinicia el stack:

sh run.sh start

Para actualizar o revertir un solo servicio sin tocar el resto, actualiza el image tag de ese servicio en docker-compose.yml y ejecuta:

sh run.sh pull

sh run.sh recreate studio

Sustituye studio por el nombre del servicio que quieras actualizar. El resto del stack permanece activo durante la operación.

Elegir el plan de Core VPS adecuado para Supabase

Para una instancia de desarrollo o staging con un stack reducido (sin Analytics, Edge Functions opcionales), un Core VPS con 8 GB RAM maneja la carga sin problemas. Para una instancia de producción corriendo el stack completo de 11 contenedores bajo tráfico real, 12 GB o más es el punto de partida seguro.

Los planes de Core VPS de Contabo comienzan con 4 vCPU y 8 GB RAM, con opciones de 12 GB y 24 GB. Todos los planes incluyen tráfico ilimitado (política de uso justo) y el Firewall de Contabo sin costo adicional. Consulta precios y disponibilidad actuales en la página de VPS de Contabo.

Activa Auto Backup desde el Customer Control Panel para proteger tus datos de Postgres con respaldos incrementales diarios fuera del servidor. Para una base de datos que administras tú mismo, los respaldos no son opcionales.

FAQ: Autoalojar Supabase

Pregunta: ¿Autoalojar Supabase es gratuito?

El proyecto open-source de Supabase tiene licencia Apache 2.0 y es de uso gratuito. Solo pagas el VPS donde lo corres. No hay cobro por usuario, no hay cargo por egress y no hay costo de licencia. El tier gratuito administrado de Supabase Cloud es una alternativa para proyectos más pequeños, pero en despliegues autoalojados el único costo recurrente es el servidor mismo.

Pregunta: ¿Contabo administra mi instancia autoalojada de Supabase?

No. Contabo administra el hardware del VPS, la red y el hipervisor. Todo lo que corre dentro del servidor, incluyendo el stack de Docker Compose, la base de datos de Postgres y todos los servicios de Supabase, es responsabilidad tuya. Eso significa: aplicar actualizaciones, rotar secrets, configurar respaldos y responder a fallas de contenedores. Supabase no ofrece soporte para instancias autoalojadas.

Pregunta: ¿Cuál es el tamaño mínimo de VPS para autoalojar Supabase?

El mínimo oficial de Supabase para el stack completo es 4 GB RAM, 2 núcleos de CPU y 40 GB SSD. En la práctica, muchos usuarios encuentran que el stack completo de 11 contenedores funciona justo en 4 GB bajo carga real, ya que Studio solo es el contenedor más pesado. El spec recomendado para Supabase autoalojado es 8 GB RAM, 4 núcleos y 80 GB SSD.

Pregunta: ¿Puedo correr varios proyectos de Supabase en un VPS?

Sí, con condiciones. Cada proyecto necesita su propia base de datos de Postgres y sus propios servicios de Supabase, es decir, stacks de Docker Compose separados en puertos distintos. Un servidor con 24 GB RAM puede correr dos o tres stacks completos en paralelo dependiendo del tráfico. La mayoría de los equipos mantienen un proyecto por servidor en producción y comparten un solo servidor para entornos de desarrollo.

Pregunta: ¿Cómo hago respaldos de mi base de datos de Supabase autoalojada?

Dos enfoques cubren la mayoría de los casos. Usa pg_dump con un schedule para exportar Postgres a un archivo comprimido y enviarlo fuera del servidor. Además, activa Contabo Auto Backup desde el Customer Control Panel para snapshots incrementales diarios del VPS. Combinar ambos es práctico para producción: los exports de la base de datos permiten restauraciones a un punto en el tiempo, los snapshots del VPS permiten un rollback completo del servidor.

Compartir 𝕏 in