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.
sqld
erfährst du in deren Dokumentation^ Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- 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/
- …
Private und öffentliche Schlüssel generieren
Abschnitt betitelt „Private und öffentliche Schlüssel generieren“Führe im Verzeichnis keys
den folgenden Befehl aus, um ein neues PKCS#8-kodiertes Ed25519-Schlüsselpaar zu erstellen:
openssl genpkey -algorithm Ed25519 -out ./libsql.pem
Dann extrahiere den öffentlichen Schlüssel mit:
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.
Erstelle dein JWT-Token
Abschnitt betitelt „Erstelle dein JWT-Token“Navigiere zu deinem studiocms-Projektverzeichnis und führe den folgenden Befehl aus:
npm run studiocms crypto gen-jwt "../keys/libsql.pem" -c "iss=admin" -e 31556926
pnpm run studiocms crypto gen-jwt "../keys/libsql.pem" -c "iss=admin" -e 31556926
yarn 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:“ASTRO_DB_REMOTE_URL=http://localhost:8080 # Dies sollte auf deinen Docker-Server/dein lokales System zeigenASTRO_DB_APP_TOKEN= # füge hier dein base64URL kodiertes JWT Auth-Token ein
Einrichten des Docker-Containers
Abschnitt betitelt „Einrichten des Docker-Containers“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
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=füge dein JWT-Token hier ein volumes: - ./data/libsql:/var/lib/sqld
Alles in Gang setzen
Abschnitt betitelt „Alles in Gang setzen“-
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 -
Synchronisiere dein StudioCMS-Datenbankschema:
Wechsle in dein StudioCMS-Projektverzeichnis und führe den folgenden Befehl aus:
Terminal-Fenster npx astro db push --remoteTerminal-Fenster pnpm astro db push --remoteTerminal-Fenster yarn astro db push --remote -
Folge der Ersteinrichtung für deine neue Datenbank.
- Siehe Erste Schritte
Abschließende Überlegungen
Abschnitt betitelt „Abschließende Überlegungen“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