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
| Aspekt | Self-hosted | Supabase Cloud |
|---|---|---|
| Datenhoheit | ✅ Eigener Server | US/EU-Cloud |
| Setup | Docker-Stack, ~7 Container | 5 Minuten Sign-up |
| Kosten | Nur Server | Free-Tier, dann $25+ |
| Wartung | Selbst (Updates, Backups) | Managed |
| Features | Kern komplett | Einige 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
| Tool | Stärke | Schwäche |
|---|---|---|
| Supabase | Komplettes Backend (DB+Auth+Realtime+Storage), pgvector | Multi-Container-Stack, komplexer |
| Firebase | Managed, ausgereift | Google-Cloud, proprietär, teuer |
| NocoDB | No-Code-UI, einfacher | Weniger programmierbar |
| Naked Postgres | Schlank, volle Kontrolle | Kein Auth/REST/Realtime out-of-box |
| Pocketbase | Ein Binary, superleicht | SQLite, weniger mächtig |
Weiterführende Links
- 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?
Ist Self-Hosting aufwendig?
Supabase oder NocoDB?
Auth ohne eigenen Code?
Warum Supabase für KI?
Grenzen self-hosted?
Quellen und weiterführende Literatur
- Supabase: GitHub.
- Supabase Self-Hosting: Dokumentation.
- pgvector: Vektor-Erweiterung.
- IRC-Coding.de: Programmier-Tutorials.


