Supabase: Open-Source-Alternative zu Firebase mit PostgreSQL

Backend-as-a-Service (BaaS) hat die Art und Weise, wie Webanwendungen gebaut werden, grundlegend verändert. Anstatt einen eigenen Server aufzusetzen, Datenbanken zu konfigurieren und Authentifizierungssysteme zu schreiben, greifen Entwickler auf fertige Cloud-Dienste zurück. Firebase von Google war lange der unangefochtene Platzhirsch in diesem Bereich. Doch mit Supabase ist eine Open-Source-Alternative entstanden, die in der Entwicklercommunity enormen Zuspruch findet – vor allem weil sie auf dem bewährten PostgreSQL aufbaut und vollständig selbst gehostet werden kann.

Was ist Supabase?

Supabase wurde 2020 von Paul Copplestone und Ant Wilson gegründet und versteht sich als „Open Source Firebase Alternative". Der Dienst bündelt mehrere Technologien zu einer zusammenhängenden Entwicklerplattform: eine vollständige PostgreSQL-Datenbank, ein Authentifizierungssystem, Datei-Storage, serverlose Edge Functions und Echtzeit-Datenbankänderungen (Realtime). All diese Komponenten sind einzeln nutzbar und werden über ein übersichtliches Dashboard sowie SDKs für JavaScript, Python, Swift, Kotlin und weitere Sprachen zugänglich gemacht.

Das Besondere: Supabase ist vollständig Open Source. Der gesamte Code liegt auf GitHub und kann auf eigener Infrastruktur betrieben werden – kein Vendor-Lock-in, volle Datenkontrolle. Gleichzeitig bietet Supabase eine gehostete Cloud-Version an, die den Betrieb ohne Serverkenntnis ermöglicht.

Die PostgreSQL-Datenbank als Herzstück

Während Firebase auf NoSQL-Dokumentendatenbanken (Firestore) setzt, verwendet Supabase eine vollwertige PostgreSQL-Datenbank. Das ist ein entscheidender Unterschied. PostgreSQL ist eine der leistungsfähigsten und meistgenutzten Open-Source-Datenbanken der Welt – mit voller SQL-Unterstützung, komplexen Joins, Transaktionen, gespeicherten Prozeduren und erweiterter Volltextsuche.

Über das Supabase-Dashboard kann man Tabellen per Klick erstellen oder direkt SQL-Befehle ausführen. Der integrierte Table Editor erinnert an eine Tabellenkalkulation. Für erfahrene Entwickler ist der SQL-Editor der schnellste Weg, die Datenbank zu verwalten. Supabase nutzt außerdem Row Level Security (RLS) von PostgreSQL: Sicherheitsregeln, die direkt in der Datenbank definieren, welche Benutzer welche Zeilen lesen oder schreiben dürfen.

Authentifizierung ohne eigenen Code

Das Auth-Modul von Supabase übernimmt die komplette Benutzerverwaltung. Es unterstützt E-Mail/Passwort, Magic Links (passwortlose Anmeldung per E-Mail-Link), OAuth-Provider wie Google, GitHub, Apple und Discord sowie SMS-basierte OTP-Authentifizierung. Nach dem Einrichten in der Supabase-Konsole braucht man clientseitig nur wenige Zeilen Code:

import { createClient } from '@supabase/supabase-js'

const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY)

// Benutzer registrieren
const { data, error } = await supabase.auth.signUp({
  email: '[email protected]',
  password: 'sicheres-passwort'
})

// Daten aus der Datenbank abrufen (RLS beachten)
const { data: posts } = await supabase
  .from('posts')
  .select('*')
  .order('created_at', { ascending: false })

Storage: Dateiverwaltung in der Cloud

Das Storage-Modul ermöglicht das Hochladen, Verwalten und Bereitstellen von Dateien – Bilder, Videos, Dokumente. Dateien werden in sogenannten Buckets organisiert, ähnlich wie Ordner. Auch hier greift Row Level Security: Man kann genau steuern, wer auf welche Bucket-Inhalte zugreifen darf. Öffentliche Buckets liefern Dateien über eine CDN-URL aus, private Buckets erstellen signierte temporäre URLs.

Edge Functions: Serverloser Code am Netzwerkrand

Edge Functions sind serverlose Funktionen, die in Deno (einer modernen JavaScript/TypeScript-Laufzeitumgebung) geschrieben werden und weltweit verteilt auf Servern nahe beim Nutzer laufen. Sie eignen sich für Webhook-Handler, API-Integrationen, Zahlungsabwicklung mit Stripe oder komplexe Datenbankoperationen, die clientseitig nicht sicher ausgeführt werden sollten.

Realtime: Live-Updates ohne Polling

Das Realtime-Modul nutzt PostgreSQL's Logical Replication, um Datenbankänderungen als WebSocket-Ereignisse an verbundene Clients zu senden. Anwendungen wie Chats, kollaborative Editoren oder Live-Dashboards können damit ohne eigene WebSocket-Server gebaut werden. Man abonniert einfach eine Tabelle oder ein bestimmtes Datenbankkanal:

const channel = supabase
  .channel('nachrichten')
  .on('postgres_changes', {
    event: 'INSERT',
    schema: 'public',
    table: 'messages'
  }, (payload) => {
    console.log('Neue Nachricht:', payload.new)
  })
  .subscribe()

Vergleich: Supabase vs. Firebase vs. PocketBase

Merkmal Supabase Firebase PocketBase
Datenbank PostgreSQL (relational) Firestore (NoSQL) SQLite (relational)
Open Source Ja (vollständig) Nein Ja (vollständig)
Self-Hosting Ja Nein Ja (einzelne Binary)
Authentifizierung Ja (OAuth, Magic Link, OTP) Ja (umfangreich) Ja (OAuth, E-Mail)
Realtime Ja (WebSockets) Ja (nativ) Ja (SSE)
Edge Functions Ja (Deno) Ja (Cloud Functions) Nein
Storage Ja Ja (Cloud Storage) Ja
Kostenfreies Tier Ja (2 Projekte) Ja (Spark Plan) Kostenlos (Self-hosted)
Vendor Lock-in Gering (migrierbar) Hoch Keiner

Free-Tier-Limits im Detail

Der kostenlose Plan von Supabase ist für Entwickler und kleine Projekte großzügig. Er umfasst zwei aktive Projekte, 500 MB Datenbankgröße, 1 GB Storage, 50.000 monatliche aktive Nutzer im Auth-System, 500.000 Edge-Function-Aufrufe pro Monat und 2 GB ausgehendes Datenvolumen. Projekte, die 7 Tage lang inaktiv sind, werden pausiert – nach einem Klick in der Konsole aber sofort wieder aktiviert. Für Produktionsprojekte empfiehlt sich der Pro-Plan ab 25 US-Dollar pro Monat, der dauerhaft laufende Projekte und deutlich höhere Limits bietet.

Erste Schritte: Ein Projekt anlegen

Der Einstieg in Supabase ist denkbar einfach. Zunächst registriert man sich kostenlos auf supabase.com. Dann erstellt man ein neues Projekt, wählt eine Region (für europäische Nutzer empfiehlt sich Frankfurt oder Amsterdam) und legt ein Datenbankpasswort fest. Nach etwa zwei Minuten ist das Projekt bereit. Im Dashboard findet man die SUPABASE_URL und den SUPABASE_ANON_KEY, die man für die SDK-Integration benötigt. Anschließend installiert man das JavaScript-SDK mit npm install @supabase/supabase-js und kann sofort mit der Entwicklung beginnen.

Tipp: Aktiviere Row Level Security (RLS) von Anfang an für jede neue Tabelle. Es ist verlockend, RLS zunächst zu deaktivieren, um schnell voranzukommen – aber in Produktionsumgebungen sind offene Tabellen ein erhebliches Sicherheitsrisiko. Die Supabase-Dokumentation zu RLS bietet gute Beispiele für typische Policy-Muster.
Warnung: Verwende den SUPABASE_SERVICE_ROLE_KEY niemals im Frontend-Code oder in öffentlich zugänglichen Dateien. Dieser Schlüssel umgeht alle Row-Level-Security-Regeln und gewährt vollen Datenbankzugriff. Er gehört ausschließlich in serversei­tige Umgebungen wie Edge Functions oder eigene Backend-Server, wo er über Umgebungsvariablen gesichert wird.

Häufig gestellte Fragen

Kann ich meine bestehende Firebase-Anwendung zu Supabase migrieren?
Eine Migration ist möglich, aber erfordert Aufwand. Das Datenbankschema muss von NoSQL (Firestore-Dokumente) in ein relationales PostgreSQL-Schema überführt werden. Auth-Nutzer lassen sich per CSV exportieren und importieren. Supabase bietet dafür Migrationshilfen und Community-Anleitungen. Die Mühe lohnt sich vor allem dann, wenn man langfristig Vendor-Lock-in vermeiden und SQL-Abfragen nutzen möchte.
Ist Supabase DSGVO-konform für europäische Nutzer?
Supabase bietet Rechenzentren in der EU (Frankfurt, Amsterdam) an. Als US-amerikanisches Unternehmen unterzeichnet Supabase Data Processing Agreements (DPAs) und ist im EU-U.S. Data Privacy Framework zertifiziert. Für besonders sensible Daten oder vollständige Datensouveränität empfiehlt sich Self-Hosting auf einem eigenen EU-Server. Die rechtliche Beurteilung sollte im Zweifelsfall durch einen Datenschutzbeauftragten erfolgen.
Wie gut skaliert Supabase für große Anwendungen?
Supabase eignet sich für ein breites Spektrum von Anwendungen – von Hobby-Projekten bis hin zu Produktionen mit Millionen von Nutzern. Große Unternehmen wie Mozilla und 1Password setzen auf Supabase. Ab dem Enterprise-Plan gibt es dedizierte Datenbankinstanzen, Read Replicas für horizontale Skalierung und 24/7-Support. Für extreme Skalierungsanforderungen empfiehlt sich Self-Hosting auf einer dedizierten Infrastruktur.
Welche Programmiersprachen werden unterstützt?
Supabase bietet offizielle Client-Bibliotheken für JavaScript/TypeScript, Python, Swift (iOS/macOS), Kotlin (Android), Dart (Flutter) und C#. Darüber hinaus lässt sich die Supabase-API über Standard-HTTP-Anfragen aus jeder Sprache ansprechen, da sie vollständig REST- und GraphQL-kompatibel ist.