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

deps installieren

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

Repo hinzufügen

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.

Docker installieren

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.

Docker Hallo Welt

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.

Bilder herunterladen

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

Startcontainer

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.

Prüfcontainer

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

Schlüssel erzeugen

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

JWT-Token

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.

Prüfbehälter

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

nginx-Einrichtung

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.

nginx prüfen

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„.

Anmeldung

Wenn die Anmeldung erfolgreich war, siehst du das folgende Supabase Dashboard.

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.

Das könnte dich auch interessieren …