So installierst du Supabase (Firebase-Alternative) mit Docker auf Ubuntu 24.04
Supabase ist eine Open-Source-Alternative zu Firebase, die auf der PostgreSQL-Datenbank aufbaut, der zuverlässigsten relationalen Datenbank der Welt. Sie ermöglicht es Entwicklern, komplette Web-, Mobile- und KI-Anwendungen zu erstellen. Supabase bietet PostgreSQL-Datenbank, Authentifizierung, APIs, Storage, Echtzeit-Abonnements und Vector Embeddings. Dank der einfachen Einrichtung und Benutzeroberfläche können Entwickler/innen schnell Anwendungen auf der Grundlage von Supabase erstellen.
In diesem Tutorial lernst du, wie du Supabase auf einem Ubuntu 24.04 Server installierst. Du wirst Supabase als Container mit Docker betreiben und Supabase mit Passwortauthentifizierung und JWT-Tokens sichern. Schließlich erfährst du, wie du Nginx als Reverse Proxy für Supabase einrichtest.
Voraussetzungen
Um mit diesem Leitfaden zu beginnen, musst du Folgendes haben:
- Einen Ubuntu 24.04-Server
- Einen Nicht-Root-Benutzer mit Administrator-Rechten
- Einen Domainnamen, der auf die IP-Adresse des Servers zeigt
Installation der Docker-Engine
Um Supabase auf deinem Server einzusetzen, musst du die Docker Engine auf deinem Rechner installieren. Die Supabase-Anwendungen werden dann als Container auf deinem Server ausgeführt.
In diesem Abschnitt wirst du die Docker Engine über das offizielle Docker-Repository installieren.
Führe zunächst den folgenden Befehl aus, um deinen Ubuntu-Paketindex zu aktualisieren und Pakete wie„ca-certificates„,„curl“ und„git“ zu installieren.
sudo apt update sudo apt install -y ca-certificates curl git
Führe nun den folgenden Befehl aus, um den GPG-Schlüssel für das Docker Engine Repository hinzuzufügen.
sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc
Füge das Docker Engine Repository für deinen Ubuntu Server hinzu, indem du den folgenden Befehl ausführst.
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Wenn du den Docker-GPG-Schlüssel und das Repository hinzugefügt hast, führe den Befehl„apt“ aus, um den Paketindex zu aktualisieren und Docker Engine zu installieren. Mit diesem Befehl installierst du auch die Plugins Docker Compose und buildx.
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Gib„Y“ ein, um die Installation zu bestätigen.
Benutzer zur Docker-Gruppe hinzufügen
In dieser Anleitung führst du Supabase als Nicht-Root-Benutzer aus, also stellst du sicher, dass ein eigener Benutzer angelegt wird. Dann musst du deinen Benutzer zur Gruppe „docker“ hinzufügen, damit er Container ausführen kann.
Füge deinen Benutzer mit dem unten stehenden Befehl zur Gruppe„docker“ hinzu. Dadurch kann dein Benutzer Container ausführen und starten.
sudo usermod -aG sudo username
Melde dich mit dem unten stehenden Befehl„su“ bei deinem Benutzer an.
su - username
Führe abschließend den Befehl„docker“ aus, um den Container„hello-world“ zu starten.
docker run hello-world
Wenn alles gut geht, siehst du die„Hello World„-Nachricht von Docker.
Herunterladen und Installieren von Supabase
Nachdem du Docker installiert hast, musst du im nächsten Schritt Supabase herunterladen und als Container starten. In diesem Abschnitt erfährst du, wie du Supabase zum Laufen bringst und wie du es später sichern kannst.
Lade den„supabase„-Quellcode mit dem unten stehenden„git„-Befehl herunter.
git clone --depth 1 https://github.com/supabase/supabase
Wechsle in das Verzeichnis ’supabase/docker‘ und kopiere die Datei ‚.env.example‚ in das Verzeichnis ‚.env‚. Diese Datei wird für die Konfiguration deiner Supabase-Installation verwendet.
cd supbase/docker cp .env.example .env
Als Nächstes führst du den Befehl„docker compose“ aus, um Supase-Images aus dem Docker-Repository herunterzuladen. Dabei werden mehrere Images für Supabase heruntergeladen.
docker compose pull
Den Download-Prozess für die Supabase-Docker-Images kannst du unten sehen.
Sobald der Prozess abgeschlossen ist, führst du den folgenden Befehl aus, um die Supabase-Container zu starten. Mit der Option„-d“ führst du die Container im Hintergrund aus, sodass die Logs für die Supbase-Container nicht angezeigt werden.
docker compose up -d
Führe abschließend den Befehl„docker compose“ aus, um den Status der Supbase-Container zu überprüfen.
docker compose ps
In der Ausgabe unten siehst du, dass Supbase-Container wie„supabase-auth„,„supabase-kong„,„supabase-rest“ und„supabase-studio“ laufen.
Supabase absichern
Zurzeit läuft Supabase auf deinem System, aber ohne richtiges Passwort und Authentifizierung. Deshalb musst du die Supabase-Installation absichern, indem du die Anmeldedaten in der Datei „.env“ änderst.
Bevor du beginnst, musst du Passwörter für den PostgreSQL-Server und das Supabase-Dashboard sowie das JWT-Geheimnis und das Token generieren.
Führe den unten stehenden Befehl zweimal aus, um ein sicheres Passwort für das Supabase-Dashboard und den PostgreSQL-Server zu erzeugen.
openssl rand -hex 16
Gehe jetzt auf die Supabase-Website, um zwei JWT-Tokens für Supabase zu generieren. Achte darauf, dass du die folgenden Angaben notierst:
- JWT-Geheimnis
- Schlüssel für ANON_KEY und SERVICE_KEY
- Generierte JWT-Tokens für beide
Nachdem du die Passwörter und Token für Supabase generiert hast, kannst du sie in der Datei ‚.env‘ anwenden.
Öffne die „.env„-Datei mit dem Editor„vim„.
vim .env
Füge dein generiertes OpenSSL-Passwort in die Option„POSTGRES_PASSWORD“ ein.
POSTGRES_PASSWORD=f489d6f61514eb90fbf57fb574c3d367
Gib deinen geheimen JWT-Schlüssel in die Option„JWT_SECRET“ ein.
JWT_SECRET=PUaiJLm1PKAebJJRIdXylVJrfgGbRWdWvzN0EUgh
Ersetze den Wert„ANON_KEY“ durch dein generiertes JWT-Token für den Benutzer„anon„.
ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzM2MzU1NjAwLAogICJleHAiOiAxODk0MTIyMDAwCn0.f8_wST3WX1bmvsHttRokJPCz7-rpyjU8HMNnYH7kSd4
Ersetze den Wert„SERVICE_ROLE_KEY“ durch dein generiertes JWT-Token für den Benutzer„service_role„.
SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogInNlcnZpY2Vfcm9sZSIsCiAgImlzcyI6ICJzdXBhYmFzZSIsCiAgImlhdCI6IDE3MzYzNTU2MDAsCiAgImV4cCI6IDE4OTQxMjIwMDAKfQ.DOo1lqH76AR_jCx0N9QDZBEdrQ8T_JBQqc7CagD1mWM
Wenn du auf einem öffentlichen Server bereitstellst, gib die Daten deines SMTP-Servers ein.
Email auth ENABLE_EMAIL_SIGNUP=true ENABLE_EMAIL_AUTOCONFIRM=false SMTP_ADMIN_EMAIL=admin@example.com SMTP_HOST=smtp.server.address SMTP_PORT=2500 SMTP_USER=username SMTP_PASS=password SMTP_SENDER_NAME=sender_name ENABLE_ANONYMOUS_USERS=false
Gib deinen Benutzernamen und dein Passwort in die beiden Optionen„DASHBOARD_USERNAME“ und„DASHBOARD_PASSWORD“ ein. Dieser Benutzer wird für die Anmeldung bei der Supabase verwendet.
DASHBOARD_USERNAME=supabase DASHBOARD_PASSWORD=91521851a4e1375145959eecddfaff45
Gib deinen Domainnamen in die Optionen„SITE_URL„,„API_EXTERNAL_URL“ und„SUPABASE_PUBLIC_URL“ ein. In diesem Beispiel verwenden wir die Domain „https://supabase.howtoforge.local“.
SITE_URL=https://supabase.howtoforge.local API_EXTERNAL_URL=https://supabase.howtoforge.local SUPABASE_PUBLIC_URL=https://supabase.howtoforge.local
Speichere die Datei und beende den Editor, wenn du fertig bist.
Führe nun den unten stehenden„docker„-Befehl aus, um die Supabase-Container zu stoppen und zu entfernen.
docker compose down
Anschließend erstellst du die Container für Supabase mit dem folgenden Befehl neu.
docker compose up -d
Sobald alles läuft, überprüfe jeden Containerdienst mit dem unten stehenden Befehl.
docker compose ps
Du kannst unten sehen, dass jeder Container für Supabase läuft.
Nginx als Reverse Proxy für Supabase einrichten
Jetzt, wo Supabase gesichert ist, installieren wir den Nginx Webserver und konfigurieren ihn als Reverse Proxy für Supabase. Vergewissere dich, dass dein Domainname fertig ist und auf die IP-Adresse des Servers zeigt.
Installiere Nginx mit dem folgenden„apt„-Befehl.
sudo apt install nginx -y
Erstelle nun mit dem Editor „vim“ eine neue Nginx-Serverblockkonfiguration„/etc/nginx/sites-available/supabase„.
sudo vim /etc/nginx/sites-available/supabase
Füge die folgende Konfiguration ein und achte darauf, dass du den Domainnamen in der Option„server_name“ änderst.
map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream kong { server localhost:8000; } server { listen 80; server_name supabase.howtoforge.local; # REST location ~ ^/rest/v1/(.*)$ { proxy_set_header Host $host; proxy_pass http://kong; proxy_redirect off; } # AUTH location ~ ^/auth/v1/(.*)$ { proxy_set_header Host $host; proxy_pass http://kong; proxy_redirect off; } # REALTIME location ~ ^/realtime/v1/(.*)$ { proxy_redirect off; proxy_pass http://kong; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; } # STUDIO location / { proxy_set_header Host $host; proxy_pass http://kong; proxy_redirect off; proxy_set_header Upgrade $http_upgrade; } }
Speichere die Datei und beende den Editor, wenn du fertig bist.
Als Nächstes führst du den folgenden Befehl aus, um den Supabase-Serverblock zu aktivieren und deine Nginx-Syntax zu überprüfen. Wenn kein Fehler auftritt, erhältst du die Ausgabe„syntax is ok – test is successful„.
sudo ln -s /etc/nginx/sites-available/supabase /etc/nginx/sites-enabled/ sudo nginx -t
Führe nun den Befehl„systemctl“ aus, um den Nginx-Webserver neu zu starten und deine Änderungen zu übernehmen. Damit sollte deine Supabase-Installation unter dem Nginx Reverse Proxy laufen.
sudo systemctl restart nginx
Zum Schluss führst du den Befehl „systemctl“ aus, um den Nginx-Dienst zu überprüfen und sicherzustellen, dass der Dienst läuft.
sudo systemctl status nginx
Wenn alles gut läuft, siehst du eine Ausgabe wie die folgende.
Sicherung der Supabase mit HTTPS
Nachdem Nginx als Reverse Proxy läuft, erstellen wir SSL-Zertifikate und aktivieren HTTPS, um die Supabase-Installation zu sichern.
Wenn du dich im Entwicklungsmodus befindest, kannst du diesen Teil überspringen und Supabase mit HTTPS belassen. Für die Produktion musst du HTTPS implementieren, um deinen Supabase-Server zu sichern.
Installiere Certbot und das Nginx Certbot Plugin mit dem unten stehenden Befehl„apt„. Gib „Y“ ein, um die Installation zu bestätigen.
sudo apt install certbot python3-certbot-nginx
Nachdem die Installation abgeschlossen ist, führe den Befehl „certbot“ aus, um SSL-Zertifikate für deinen Domainnamen zu erstellen. Achte darauf, dass du den Domainnamen und die E-Mail-Adresse in dem Befehl änderst.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email admin@howtoforge.local -d supabase.howtoforge.local
Sobald die Installation abgeschlossen ist, sind deine SSL-Zertifikate im Verzeichnis„/etc/letsencrypt/live/domain.com“ verfügbar und Supabase wird automatisch über das Nginx Certbot Plugin mit HTTPS gesichert.
Zugriff auf Supabase Studio
Um auf Supabase zuzugreifen, öffne deinen Webbrowser und besuche https://supabase.howtoforge.local. Wenn die Installation erfolgreich war, wirst du aufgefordert, dich mit einem einfachen Passwort zu authentifizieren.
Gib den Benutzernamen und das Passwort in die Optionen„DASHBOARD_USERNAME“ und„DASHBOARD_PASSWORD“ ein und klicke auf„Anmelden„.
Wenn die Anmeldung erfolgreich war, siehst du das folgende Supabase Dashboard.
Fazit
Herzlichen Glückwunsch! Du hast die Installation von Supabase auf dem Ubuntu 24.04 Server über Docker abgeschlossen. Du hast Supabase mit dem JWT-Token für die Passwortauthentifizierung eingerichtet und gesichert und anschließend Nginx als Reverse Proxy installiert und konfiguriert. Schließlich hast du Supabase auch mit HTTPS über Certbot und Letsencrypt gesichert. Von hier aus kannst du nun versuchen, eine neue Datenbank zu erstellen, Daten in die Supabase einzufügen und dann einfache Anwendungen mit dem Supabase-Modul zu erstellen, um über die REST-API zu kommunizieren.