Skip to content
BotServBotServ
SupabaseAlternativa FirebasePostgresBackendAuto-hospedadoCódigo Abiertopgvector

Supabase auto-hospedado: Alternativa Firebase de código abierto

Supabase auto-hospedado: Postgres + Auth + Realtime + Storage como backend de código abierto. Setup Docker, pgvector para IA.

S

schutzgeist

5 min read
Supabase auto-hospedado: Alternativa Firebase de código abierto

Supabase auto-hospedado: alternativa Open-Source a Firebase

Qué cubre este artículo

  • Qué es Supabase: Postgres + Auth + Realtime + Storage como backend listo.
  • Auto-hospedaje con Docker y qué diferencia hay respecto a la versión cloud.
  • Por qué pgvector convierte a Supabase en candidato para vector database en RAG.
  • REST-API (PostgREST), Auth y Realtime en la práctica.
  • Cuándo elegir Supabase vs. Postgres simple vs. Firebase.

Introducción

Supabase es la alternativa Open-Source líder a Firebase: obtienes una base de datos Postgres con REST-API, autenticación (correo, OAuth, Magic Links), suscripciones Realtime (WebSocket), almacenamiento de archivos y Edge Functions, todo en un stack, todo Open Source.

Para proyectos de IA, Supabase resulta especialmente interesante: Postgres incluye pgvector, así que Supabase se convierte en vector database para embeddings y RAG sin necesidad de sistemas adicionales.

Casos de uso típicos

  • Backend de app con IA: aplicación web con autenticación Supabase + Postgres + pgvector para RAG.
  • Persistencia de chatbots: conversaciones, perfiles de usuario, índice de documentos en una sola BD.
  • Dashboards en tiempo real: actualizaciones en vivo para monitoreo o generaciones con IA.
  • Servicios multi-usuario: auth + Row-Level-Security = separación de tenants limpia.
  • Backend de formularios: reemplazo de NocoDB con programabilidad real.

Instalación: Docker

Supabase auto-hospedado es un stack multi-contenedor (Postgres, PostgREST, GoTrue Auth, Realtime, Storage, interfaz Studio):

git clone --depth 1 https://github.com/supabase/supabase.git
cd supabase/docker
cp .env.example .env
# Editar .env: POSTGRES_PASSWORD, JWT_SECRET, ANON_KEY, SERVICE_ROLE_KEY, Site-URL
docker compose up -d

Variables .env importantes:

POSTGRES_PASSWORD=geheim
JWT_SECRET=llave-aleatoria-larga
ANON_KEY=jwt-con-anon-role          # generado con JWT_SECRET
SERVICE_ROLE_KEY=jwt-con-service-role  # clave admin, nunca al frontend
SITE_URL=https://app.tu-dominio.com
API_EXTERNAL_URL=https://api.tu-dominio.com

Generas las claves con supabase gen o herramientas JWT: ANON_KEY (pública, protegida por RLS) y SERVICE_ROLE_KEY (admin, secreta).

La interfaz Studio corre en http://localhost:8000: gestión de base de datos, auth, documentación de API.

Características principales

REST-API automática (PostgREST)

Cada tabla obtiene una REST-API de inmediato:

# Tabla "documents" → automáticamente:
curl "https://api.tu-dominio.com/rest/v1/documents?select=*" \
  -H "apikey: ANON_KEY" \
  -H "Authorization: Bearer USER_JWT"

Sin necesidad de programar backend: CRUD está disponible automáticamente.

Auth (GoTrue)

Correo/contraseña, Magic Links, OAuth (Google, GitHub), JWT-Tokens, autenticación lista con componentes UI para React/Next.js.

Realtime

Suscripciones WebSocket a cambios en BD: “nueva fila en tabla X” se transmite en vivo al frontend.

Storage

Almacenamiento de archivos compatible con S3 con reglas de bucket y RLS de acceso.

pgvector: Supabase como vector database para IA

La característica clave para IA: la extensión Postgres pgvector almacena embeddings directamente en Supabase:

-- En la consola SQL de Supabase:
create extension if not exists vector;

create table documents (
  id bigint primary key generated always as identity,
  content text,
  embedding vector(1024)          -- bge-m3 tiene 1024 dimensiones
);

-- Búsqueda de similitud
create function match_documents(query_embedding vector(1024), match_count int)
returns table (id bigint, content text, similarity float)
language sql as $$
  select id, content, 1 - (embedding <=> query_embedding) as similarity
  from documents
  order by embedding <=> query_embedding
  limit match_count;
$$;
# Desde tu aplicación: embedding de Ollama, búsqueda en Supabase
emb = ollama_client.embeddings(model="bge-m3", prompt=query)["embedding"]
result = supabase.rpc("match_documents", {
    "query_embedding": emb,
    "match_count": 5
}).execute()
context = "\n".join(r["content"] for r in result.data)

No necesitas Qdrant o Chroma separados: Supabase es BD + búsqueda vectorial en una. Para volúmenes muy grandes (>1 millón de vectores), Qdrant dedicado es más rápido, pero para la mayoría de proyectos pgvector es suficiente.

Row-Level-Security (RLS)

La característica de seguridad más importante: reglas directamente en Postgres: “el usuario ve solo sus datos”:

alter table documents enable row level security;

create policy "own docs" on documents
  for all using (auth.uid() = user_id);

Así la REST-API es segura y multi-tenant sin código backend adicional.

Auto-hospedado vs. Supabase Cloud

AspectoAuto-hospedadoSupabase Cloud
Soberanía de datos✅ Tu servidorCloud US/EU
InstalaciónStack Docker, ~7 contenedores5 minutos con sign-up
CostosSolo servidorFree-tier, después $25+
MantenimientoTú (actualizaciones, backups)Managed
CaracterísticasNúcleo completoAlgunas solo en cloud

Seguridad

  • SERVICE_ROLE_KEY secreta: tiene permisos admin, evita RLS, nunca al frontend.
  • ANON_KEY + RLS: la clave pública es segura porque RLS controla quién ve qué.
  • HTTPS: endpoint de API detrás de reverse proxy con TLS.
  • Backups: dump de Postgres periódicamente, ver Backup.
  • JWT_SECRET: fuerte y secreto, con él se firman todos los tokens de auth.

Supabase vs. alternativas

HerramientaFortalezaDebilidad
SupabaseBackend completo (DB+Auth+Realtime+Storage), pgvectorStack multi-contenedor, complejo
FirebaseManaged, maduroGoogle Cloud, proprietario, caro
NocoDBUI sin código, simpleMenos programable
Postgres puroligero, control totalsin Auth/REST/Realtime out-of-box
Pocketbaseun binario, muy ligeroSQLite, menos potente

Enlaces de interés

  • IRC-Coding.de: tutoriales de programación avanzada: Postgres, REST, Auth, WebSocket.
  • RAG local: embeddings y búsqueda vectorial en detalle.
  • Qdrant: vector database dedicada.
  • NocoDB: alternativa sin código.
  • Docker: fundamentos de deployment.

Puntos clave:

  • Supabase = Postgres + Auth + Realtime + Storage + REST-API como backend Open-Source.
  • pgvector lo convierte en vector database para RAG, sin sistemas adicionales.
  • Auto-hospedado es un stack de ~7 contenedores, más configuración, pero control total.
  • RLS (Row-Level-Security) = API multi-tenant segura sin código backend.
  • Para apps con IA, la mejor base integrada: auth + BD + búsqueda vectorial en uno.

FAQ

¿Puede Supabase realmente hacer búsqueda vectorial?

Sí, la extensión pgvector almacena embeddings en Postgres y busca por distancia coseno/L2. Suficiente para ~1 millón de vectores; para más, Qdrant/Weaviate dedicados son más rápidos.

¿Es el auto-hospedaje complicado?

Más que un contenedor único: Postgres, PostgREST, GoTrue, Realtime, Storage, Studio = ~7 servicios. Docker Compose oficial ayuda, pero es un stack real, no un click único.

¿Supabase o NocoDB?

Supabase es un backend programable (Auth, Realtime, pgvector, RLS). NocoDB es interfaz de tablas sin código. Para apps: Supabase. Para gestión de datos sin código: NocoDB.

¿Auth sin escribir código?

Sí: GoTrue maneja correo/contraseña, Magic Links, OAuth (Google, GitHub). SDKs para frontend con React/Vue/etc. ya listos. Sin código de auth propio.

¿Por qué Supabase para IA?

Porque tienes auth + BD de documentos + búsqueda vectorial (pgvector) + API en un solo stack. Backend de chatbots, sistemas RAG, apps multi-usuario con IA, todo en una base.

¿Límites en auto-hospedaje?

Edge Functions (Deno) y algunas características de monitoreo son solo cloud o más difíciles. El núcleo (BD, Auth, REST, Realtime, Storage, pgvector) está disponible completamente.

Referencias y lecturas adicionales

Volver al blog
Share:

Entradas relacionadas