Kurz gesagt: Supabase lässt sich mit Docker auf einem eigenen Linux-Server betreiben. Supabase nennt als Minimum 4 GB RAM, 2 CPU-Kerne und 40 GB SSD, empfohlen sind 8 GB RAM, 4 Kerne und 80 GB SSD. Unter Debian/Ubuntu installiert ein offizielles Skript alles Nötige und erzeugt die Schlüssel. Vor dem produktiven Einsatz brauchen Sie HTTPS über einen Reverse Proxy, sichere Passwörter und ein Backup-Konzept für die PostgreSQL-Datenbank.
Warum Supabase selbst hosten?
Supabase bündelt PostgreSQL, Authentifizierung, eine REST- und Realtime-API, Dateispeicher und Edge Functions. Die gehostete Variante bei Supabase ist der schnellste Start. Selbst hosten lohnt sich, wenn:
- Ihre Daten auf einem Server Ihrer Wahl liegen sollen, etwa in Deutschland
- Sie volle Kontrolle über Datenbank, Erweiterungen und Backups wollen
- Sie Kosten bei wachsender Datenmenge planbar halten wollen
Der Preis dafür: Sie (oder Ihr Hoster) übernehmen Updates, Sicherheit und Backups. Supabase selbst schreibt, dass die Anleitung Erfahrung mit Linux-Administration, Git, Docker und Netzwerken voraussetzt.
Systemanforderungen
| Ressource | Minimum | Empfohlen |
|---|---|---|
| RAM | 4 GB | 8 GB und mehr |
| CPU | 2 Kerne | 4 Kerne und mehr |
| Speicher | 40 GB SSD | 80 GB SSD und mehr |
Quelle: Supabase Docs – Self-Hosting with Docker. Brauchen Sie einzelne Dienste nicht (zum Beispiel Realtime, Storage oder Edge Functions), können Sie sie aus der docker-compose.yml entfernen und so Ressourcen sparen. Logs & Analytics sind standardmäßig nicht aktiv und brauchen zusätzlich Ressourcen, wenn Sie sie einschalten.
Installation mit dem Quick-Start-Skript (Linux)
Auf Debian, Ubuntu sowie RHEL, CentOS und Fedora genügt ein Befehl:
curl -fsSL https://supabase.link/setup.sh | sh
Das Skript installiert laut Supabase fehlende Voraussetzungen (git, openssl, jq und Docker Engine), holt die Docker-Konfiguration, legt den Projektordner supabase-project an, fragt Ihre URLs ab, erzeugt alle Geheimnisse inklusive Dashboard-Passwort und JWT-Schlüsselpaar und lädt die Images. Sie können das Skript vor dem Ausführen ansehen; mit -y läuft es ohne Rückfragen.
Danach starten Sie Supabase:
cd supabase-project && sh run.sh start
Die erzeugten Zugangsdaten zeigt sh run.sh secrets an.
Manuelle Installation
Wer die Schritte selbst steuern will, klont das Repository mit einem festen Release-Tag, kopiert den docker-Ordner in ein Projektverzeichnis und legt die .env an:
git clone --depth 1 --branch <aktueller-self-hosted-tag> https://github.com/supabase/supabase
mkdir supabase-project
cp -rf supabase/docker/. supabase-project
cd supabase-project && cp .env.example .env
docker compose pull
Den aktuellen Tag finden Sie in der Supabase-Dokumentation. Starten Sie Supabase nie mit den Beispielwerten aus .env.example. Erzeugen Sie zuerst sichere Schlüssel:
sh utils/generate-keys.sh
sh utils/add-new-auth-keys.sh
Danach setzen Sie in der .env die URLs (SUPABASE_PUBLIC_URL, API_EXTERNAL_URL, SITE_URL) und ein eigenes DASHBOARD_PASSWORD. Laut Supabase muss das Passwort mindestens einen Buchstaben enthalten. Gestartet wird mit sh run.sh start, was docker compose up -d --wait entspricht. docker compose ps zeigt, ob alle Dienste „healthy" sind.
Zugriff, HTTPS und Absicherung
- Dashboard (Studio): standardmäßig über das API-Gateway auf Port 8000, geschützt mit HTTP-Basic-Auth.
- HTTPS: Für den produktiven Einsatz, besonders mit OAuth-Anmeldungen, empfiehlt Supabase einen Reverse Proxy, der TLS auf Port 443 übernimmt. Die öffentliche URL wird dann
https://ihre-domain.de. - Schlüssel richtig verwenden: Der Publishable Key gehört in das Frontend, der Secret Key nur auf den Server. Gelangt der Secret Key in den Browser-Code, hat jeder vollen Zugriff.
- Firewall: Öffnen Sie nach außen nur 443 (und 80 für Zertifikate). Die PostgreSQL-Ports bleiben intern.
Updates und Backups
- Supabase bringt für Upgrades ein eigenes Skript mit und merkt sich die installierte Version in
.supabase-version. Lesen Sie vor jedem Upgrade die Release Notes. - Sichern Sie regelmäßig die PostgreSQL-Datenbank (zum Beispiel mit
pg_dump) und den Storage-Ordner mit hochgeladenen Dateien. Ein Snapshot des ganzen Servers ist eine gute zusätzliche Ebene. - Spielen Sie ein Backup mindestens einmal testweise zurück.
Supabase oder PocketBase?
Für kleinere Projekte lohnt ein Blick auf PocketBase: ein quelloffenes Backend in einer einzelnen Datei mit eingebauter SQLite-Datenbank, Authentifizierung, Dateispeicher und Realtime-Funktionen. Es braucht deutlich weniger Ressourcen als Supabase, skaliert aber nicht so weit und bietet kein volles PostgreSQL.
| Supabase (self-hosted) | PocketBase | |
|---|---|---|
| Datenbank | PostgreSQL | SQLite |
| Betrieb | mehrere Docker-Container | eine Binärdatei |
| Ressourcen | ab 4 GB RAM (Minimum laut Supabase) | sehr gering |
| Gut für | Apps mit wachsender Datenmenge, SQL-Abfragen, viele Dienste | Prototypen, interne Tools, kleine Apps |
Welcher Server passt?
Für die Supabase-Mindestanforderungen passt ein VPS mit dedizierten Ressourcen und mindestens 4 GB RAM, für den produktiven Betrieb eher 8 GB oder mehr. Bei GB Hosting entspricht das dem Cloud Pro (8 vCPU, 16 GB RAM, 100 GB NVMe) oder für kleine Projekte dem Cloud Starter (4 vCPU, 6 GB RAM, 50 GB NVMe). Mehr: Managed VPS.
Häufige Fragen
Ist Supabase self-hosted kostenlos?
Die Software ist Open Source. Sie zahlen für den Server, auf dem sie läuft, und für Ihre Zeit für Betrieb und Updates.
Kann ich von der gehosteten Supabase-Cloud auf eine eigene Installation umziehen?
Ja, über einen Export der PostgreSQL-Datenbank und der Storage-Dateien. Planen Sie Auth-Einstellungen und Schlüssel separat, weil diese in der eigenen Installation neu erzeugt werden.
Reicht ein Server mit 2 GB RAM?
Für alle Dienste nicht: Supabase nennt 4 GB als Minimum. Mit weniger Diensten (zum Beispiel ohne Storage und Realtime) kommen Sie mit weniger aus, das sollten Sie aber testen.