Skip to content
BotServBotServ
SupabaseFirebase AlternativePostgresBackendSelf-HostingOpen Sourcepgvector

Supabase self-hosted: Open-Source-Firebase-Alternative

Supabase self-hosten: Postgres + Auth + Realtime + Storage als Open-Source-Backend. Docker-Setup, pgvector für KI und API-Nutzung.

S

schutzgeist

4 min read
Supabase self-hosted

Supabase self-hosted: Open-Source-Firebase-Alternative

Was dieser Artikel behandelt

  • Was Supabase ist: Postgres + Auth + Realtime + Storage als fertiges Backend.
  • Self-Hosting mit Docker, was dabei anders ist als die Cloud-Version.
  • Warum pgvector Supabase zum Vektordatenbank-Kandidaten für RAG macht.
  • REST-API (PostgREST), Auth und Realtime in der Praxis.
  • Wann Supabase vs. einfache Postgres vs. Firebase.

Einleitung

Supabase ist die führende Open-Source-Alternative zu Firebase: Du bekommst eine Postgres-Datenbank mit REST-API, Authentifizierung (E-Mail, OAuth, Magic Links), Realtime-Subscriptions (WebSocket), Datei-Storage und Edge Functions, alles aus einem Stack, alles Open Source.

Für KI-Projekte ist Supabase doppelt interessant: Postgres hat pgvector, damit wird Supabase zur Vektordatenbank für Embeddings und RAG, ohne extra System.

Typische Anwendungsszenarien

  • KI-App-Backend: Web-App mit Supabase-Auth + Postgres + pgvector für RAG.
  • Chatbot-Persistenz: Konversationen, User-Profile, Dokumenten-Index in einer DB.
  • Realtime-Dashboards: Live-Updates für Monitoring oder KI-Generierungen.
  • Multi-User-Services: Auth + Row-Level-Security = saubere Mandanten-Trennung.
  • Formular-Backend: NocoDB-Ersatz mit echter Programmierbarkeit.

Installation: Docker

Supabase self-hosted ist ein Multi-Container-Stack (Postgres, PostgREST, GoTrue Auth, Realtime, Storage, Studio-UI):

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

Wichtige .env-Variablen:

POSTGRES_PASSWORD=geheim
JWT_SECRET=langer-zufaelliger-key
ANON_KEY=jwt-mit-anon-role          # mit JWT_SECRET generieren
SERVICE_ROLE_KEY=jwt-mit-service-role  # Admin-Key, nie ins Frontend!
SITE_URL=https://app.deine-domain.de
API_EXTERNAL_URL=https://api.deine-domain.de

Die Keys generierst Du mit supabase gen oder JWT-Tools: ANON_KEY (öffentlich, RLS-geschützt) und SERVICE_ROLE_KEY (Admin, geheim!).

Studio-UI läuft auf http://localhost:8000: Datenbank-Verwaltung, Auth, API-Docs.

Die Kern-Features

REST-API automatisch (PostgREST)

Jede Tabelle bekommt sofort eine REST-API:

# Tabelle "documents" → automatisch:
curl "https://api.deine-domain.de/rest/v1/documents?select=*" \
  -H "apikey: ANON_KEY" \
  -H "Authorization: Bearer USER_JWT"

Keine Backend-Programmierung nötig: CRUD ist automatisch da.

Auth (GoTrue)

E-Mail/Passwort, Magic Links, OAuth (Google, GitHub), JWT-Tokens, fertige Auth inkl. UI-Komponenten für React/Next.js.

Realtime

WebSocket-Subscriptions auf DB-Änderungen: „neue Zeile in Tabelle X” pusht live ins Frontend.

Storage

S3-kompatibler Datei-Storage mit Bucket-Regeln und Zugriffs-RLS.

pgvector: Supabase als Vektordatenbank für KI

Das Killer-Feature für KI: Postgres-Erweiterung pgvector speichert Embeddings direkt in Supabase:

-- In der Supabase SQL-Console:
create extension if not exists vector;

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

-- Ähnlichkeitssuche
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;
$$;
# Aus Deiner App — Embedding von Ollama, Suche in 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)

Damit brauchst Du kein separates Qdrant/Chroma: Supabase ist DB + Vektorsuche in einem. Für große Datenmengen (>1 Mio. Vektoren) ist dediziertes Qdrant schneller, aber für die meisten Projekte reicht pgvector.

Row-Level-Security (RLS)

Das wichtigste Sicherheits-Feature: Regeln direkt in Postgres: „User sieht nur eigene Daten”:

alter table documents enable row level security;

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

Damit ist die REST-API sicher multi-tenant-fähig ohne eigenen Backend-Code.

Self-Hosted vs. Supabase Cloud

AspektSelf-hostedSupabase Cloud
Datenhoheit✅ Eigener ServerUS/EU-Cloud
SetupDocker-Stack, ~7 Container5 Minuten Sign-up
KostenNur ServerFree-Tier, dann $25+
WartungSelbst (Updates, Backups)Managed
FeaturesKern komplettEinige Features Cloud-only

Sicherheit

  • SERVICE_ROLE_KEY geheim: Hat Admin-Rechte, bypassed RLS, nie ins Frontend!
  • ANON_KEY + RLS: Der öffentliche Key ist sicher, weil RLS regelt, wer was sieht.
  • HTTPS: API-Endpoint hinter Reverse Proxy mit TLS.
  • Backups: Postgres-Dump regelmäßig, siehe Backup.
  • JWT_SECRET: Stark und geheim, damit werden alle Auth-Tokens signiert.

Supabase vs. Alternativen

ToolStärkeSchwäche
SupabaseKomplettes Backend (DB+Auth+Realtime+Storage), pgvectorMulti-Container-Stack, komplexer
FirebaseManaged, ausgereiftGoogle-Cloud, proprietär, teuer
NocoDBNo-Code-UI, einfacherWeniger programmierbar
Naked PostgresSchlank, volle KontrolleKein Auth/REST/Realtime out-of-box
PocketbaseEin Binary, superleichtSQLite, weniger mächtig
  • IRC-Coding.de: Vertiefende Programmier-Tutorials: Postgres, REST, Auth, WebSocket.
  • Lokales RAG: Embeddings und Vektorsuche im Detail.
  • Qdrant: Dedizierte Vektordatenbank.
  • NocoDB: No-Code-Alternative.
  • Docker: Deployment-Grundlagen.

Key Takeaways:

  • Supabase = Postgres + Auth + Realtime + Storage + REST-API als Open-Source-Backend.
  • pgvector macht es zur Vektordatenbank für RAG, kein extra System nötig.
  • Self-hosted ist ein ~7-Container-Stack, mehr Setup, aber volle Kontrolle.
  • RLS (Row-Level-Security) = sichere Multi-Tenant-API ohne Backend-Code.
  • Für KI-Apps die beste All-in-One-Basis: Auth + DB + Vektorsuche in einem.

FAQ

Kann Supabase wirklich Vektorsuche?

Ja, die pgvector-Erweiterung speichert Embeddings in Postgres und sucht per Cosinus/L2-Distanz. Für bis ~1 Mio. Vektoren ausreichend; für mehr ist dediziertes Qdrant/Weaviate schneller.

Ist Self-Hosting aufwendig?

Mehr als ein einzelner Container: Postgres, PostgREST, GoTrue, Realtime, Storage, Studio = ~7 Services. Das offizielle Docker-Compose hilft, aber es ist ein richtiger Stack, kein One-Click.

Supabase oder NocoDB?

Supabase ist ein programmierbares Backend (Auth, Realtime, pgvector, RLS). NocoDB ist eine No-Code-Tabellen-UI. Für Apps: Supabase. Für Daten-Verwaltung ohne Code: NocoDB.

Auth ohne eigenen Code?

Ja: GoTrue macht E-Mail/Passwort, Magic Links, OAuth (Google, GitHub). Frontend-SDKs für React/Vue/etc. sind fertig. Kein eigener Auth-Code nötig.

Warum Supabase für KI?

Weil Du damit Auth + Dokumenten-DB + Vektorsuche (pgvector) + API in einem Stack hast. Chatbot-Backend, RAG-Systeme, Multi-User-KI-Apps, alles auf einer Basis.

Grenzen self-hosted?

Edge Functions (Deno) und einige Monitoring-Features sind Cloud-exklusiv oder schwieriger. Der Kern (DB, Auth, REST, Realtime, Storage, pgvector) ist komplett verfügbar.

Quellen und weiterführende Literatur

Zurück zum KI Blog
Share:

Ähnliche Beiträge