Zum Inhalt springen

Selbstgehosteter libSQL-Server

Das Projekt sqld („SQL daemon“) ist ein Servermodus für libSQL, der von Turso entwickelt wurde. In diesem Leitfaden wird beschrieben, wie du sqld für dein StudioCMS-Projekt einrichtest und konfigurierst, damit es in einem Docker-Container funktioniert.

Mehr über sqld erfährst du in deren Dokumentation^
  • Docker und Docker Compose^ (entweder auf einem Server oder lokal ausgeführt)
  • OpenSSL^ installiert
  • StudioCMS CLI (verfügbar im Stammverzeichnis deines StudioCMS-Projekts)

Die endgültige Dateistruktur wird etwa so aussehen, wenn du lokal testest:

  • docker-compose.yml
  • Directorydata/
  • Directorykeys/
  • Directorymein-studiocms-project/
    • astro.config.mjs
    • studiocms.config.mjs
    • package.json
    • Directorysrc/

Führe im Verzeichnis keys den folgenden Befehl aus, um ein neues PKCS#8-kodiertes Ed25519-Schlüsselpaar zu erstellen:

Terminal-Fenster
openssl genpkey -algorithm Ed25519 -out ./libsql.pem

Dann extrahiere den öffentlichen Schlüssel mit:

Terminal-Fenster
openssl pkey -in ./libsql.pem -pubout -out ./libsql.pub

Dadurch wird ein neues PKCS#8-Schlüsselpaar erzeugt, das für den sqld-Server verwendet wird.

Navigiere zu deinem studiocms-Projektverzeichnis und führe den folgenden Befehl aus:

Terminal-Fenster
npm run studiocms crypto gen-jwt "../keys/libsql.pem" -c "iss=admin" -e 31556926

Die Ausgabe ist das mit deinem privaten Schlüssel verschlüsselte JWT-Auth-Token, das für die libSQL-Authentifizierung verwendet wird. Beachte, dass das Token 1 Jahr lang gültig ist!

Aktualisiere deine StudioCMS .env mit den folgenden Angaben:

Abschnitt betitelt „Aktualisiere deine StudioCMS .env mit den folgenden Angaben:“
Terminal-Fenster
ASTRO_DB_REMOTE_URL=http://localhost:8080 # Dies sollte auf deinen Docker-Server/dein lokales System zeigen
ASTRO_DB_APP_TOKEN= # füge hier dein base64URL kodiertes JWT Auth-Token ein

Erstelle eine neue Datei docker-compose.yml außerhalb des StudioCMS-Projektverzeichnisses für die libSQL-Instanz. An dieser Stelle hast du zwei Möglichkeiten, die libSQL-Authentifizierung zu konfigurieren:

  • Verwendung der öffentlichen Schlüsseldatei selbst
  • Verwendung des JWT-Tokens als Umgebungsvariable (derselbe ASTRO_DB_APP_TOKEN-Wert, den du in deiner .env-Datei verwendet hast)
services:
libsql:
image: ghcr.io/tursodatabase/libsql-server:latest
platform: linux/amd64
ports:
- "8080:8080"
- "5001:5001"
environment:
- SQLD_NODE=primary
- SQLD_AUTH_JWT_KEY_FILE=/home/.ssh/libsql.pub
volumes:
- ./data/libsql:/var/lib/sqld
- ./keys/libsql.pub:/home/.ssh/libsql.pub
  1. Starte den Docker Container

    Führen Sie im Basisverzeichnis (oder auf dem Server, wenn Sie diesen Weg gewählt haben) den folgenden Befehl aus, um den libSQL Server Container zu starten:

    Terminal-Fenster
    docker compose up -d
  2. Synchronisiere dein StudioCMS-Datenbankschema:

    Wechsle in dein StudioCMS-Projektverzeichnis und führe den folgenden Befehl aus:

    Terminal-Fenster
    npx astro db push --remote
  3. Folge der Ersteinrichtung für deine neue Datenbank.

Wenn du nach einer Möglichkeit suchst, deine eigene libSQL-Datenbank mit StudioCMS zu hosten, ist sqld eine praktikable Option und nicht sehr kompliziert, wenn du es richtig machst. Wenn du diese Anleitung befolgst, erhältst du einen sicheren libSQL-Server, den du neben deinem StudioCMS-Projekt verwenden kannst