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 "../keys/libsql.pem" -c "iss=admin" -e 31556926

El resultado es el token de autenticación JWT cifrado con tu clave privada, que se utilizará para la autenticación de libSQL. Ten en cuenta que el token será válido durante 1 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.