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.
sqld
usando su documentación^ Prerrequisitos
Sección titulada «Prerrequisitos»- 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)
Estructura final de archivos
Sección titulada «Estructura final de archivos»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/
- …
Generar claves privadas y públicas
Sección titulada «Generar claves privadas y públicas»Desde dentro del directorio keys
, ejecuta el siguiente comando para crear un nuevo par de claves Ed25519 codificadas en PKCS#8:
openssl genpkey -algorithm Ed25519 -out ./libsql.pem
Luego, extrae la clave pública con:
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
.
Generar tu token JWT
Sección titulada «Generar tu token JWT»Navega a tu directorio del proyecto studiocms y ejecuta el siguiente comando:
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
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:»ASTRO_DB_REMOTE_URL=http://localhost:8080 # Esto debería apuntar a tu servidor docker/sistema localASTRO_DB_APP_TOKEN= # pega tu token JWT codificado en base64 aquí
Configuración del contenedor Docker
Sección titulada «Configuración del contenedor Docker»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
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=paste your JWT token here volumes: - ./data/libsql:/var/lib/sqld
Arrancando todo
Sección titulada «Arrancando todo»-
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 -
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 --remoteVentana de terminal pnpm astro db push --remoteVentana de terminal yarn astro db push --remote -
Sigue la configuración inicial para tu nueva base de datos.
- Ve a Comienza aquí
Pensamientos finales
Sección titulada «Pensamientos finales»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.