Saltearse al contenido

Servidor libSQL auto-alojado

El proyecto sqld (“SQL daemon”) es un modo de servidor para libSQL creado por Turso. Esta guía explicará cómo configurar y ejecutar sqld para trabajar desde un contenedor de Docker para tu proyecto StudioCMS.

Aprende más sobre sqld usando su documentación^
  • Docker y Docker Compose^ (ya sea ejecutándose en un servidor o localmente)
  • OpenSSL^ instalado
  • CLI de StudioCMS (disponible desde la raíz de tu proyecto StudioCMS)

La estructura final de archivos se verá algo así si se prueba localmente:

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

Desde dentro del directorio keys, ejecuta el siguiente comando para crear un nuevo par de claves Ed25519 codificadas en PKCS#8:

Ventana de terminal
openssl genpkey -algorithm Ed25519 -out ./libsql.pem

Luego, extrae la clave pública con:

Ventana de terminal
openssl pkey -in ./libsql.pem -pubout -out ./libsql.pub

Esto generará un nuevo par de claves PKCS#8 que se utilizarán para el servidor sqld.

Navega a tu directorio del proyecto studiocms y ejecuta el siguiente comando:

Ventana de terminal
npm run studiocms crypto gen-jwt -e 31556926 "../keys/libsql.pem"

El resultado es el token de autenticación JWT encriptado con tu llave privada en formato estándar y base64URLEncoded, el cual será utilizado para la autenticación en libSQL. ¡Toma en cuenta que el token será válido durante un año!

Actualiza tu .env de StudioCMS con lo siguiente:

Sección titulada «Actualiza tu .env de StudioCMS con lo siguiente:»
Ventana de terminal
ASTRO_DB_REMOTE_URL=http://localhost:8080 # Esto debería apuntar a tu servidor docker/sistema local
ASTRO_DB_APP_TOKEN= # pega tu token JWT codificado en base64 aquí

Crea un nuevo archivo docker-compose.yml fuera del directorio del proyecto StudioCMS, para la instancia de libSQL. En este punto tienes dos opciones para configurar la autenticación de libSQL:

  • Usando el archivo de clave pública
  • Usando el token JWT como variable de entorno (el mismo valor ASTRO_DB_APP_TOKEN que usaste en tu archivo .env)
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. Arranca el contenedor Docker:

    Desde el directorio base (o el servidor si elegiste esa ruta) ejecuta el siguiente comando para iniciar el contenedor del servidor libSQL

    Ventana de terminal
    docker compose up -d
  2. Sincroniza el esquema de tu base de datos StudioCMS:

    Mueve a tu directorio del proyecto StudioCMS y ejecuta el siguiente comando:

    Ventana de terminal
    npx astro db push --remote
  3. Sigue la configuración inicial para tu nueva base de datos.

Si buscas una opción para auto-alojar tu propia base de datos libSQL con StudioCMS, sqld es una opción viable y no es muy complicado de poner en marcha si lo haces de la manera correcta. Seguir esta guía te proporciona un servidor libSQL seguro para usar junto a tu proyecto StudioCMS.