跳转到内容

自托管 libSQL 服务器

sqld(SQL 守护进程)是由 Turso 开发的 libSQL 服务器模式。本指南将介绍如何通过 Docker 容器设置和配置 sqld 以用于 StudioCMS 项目。

通过官方文档^了解更多关于 sqld 的信息

本地测试时的最终文件结构示例:

  • docker-compose.yml
  • 文件夹data/
  • 文件夹keys/
  • 文件夹my-studiocms-project/
    • astro.config.mjs
    • studiocms.config.mjs
    • package.json
    • 文件夹src/

keys 目录中执行以下命令创建 PKCS#8 编码的 Ed25519 密钥对:

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

提取公钥:

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

这将生成用于 sqld 服务器的 PKCS#8 密钥对。

进入 StudioCMS 项目目录并执行:

Terminal window
npm run studiocms crypto gen-jwt "../keys/libsql.pem" -e 31556926

输出包含标准格式和 Base64URL 编码的 JWT 认证令牌,用于 libSQL 身份验证。该令牌有效期为 1 年!

Terminal window
ASTRO_DB_REMOTE_URL=http://localhost:8080 # 指向 Docker 服务器/本地系统
ASTRO_DB_APP_TOKEN= # 粘贴您的标准 JWT 认证令牌

在 StudioCMS 项目目录外创建 docker-compose.yml 文件。您有两种配置 libSQL 认证的方式:

services:
libsql:
image: ghcr.io/tursodatabase/libsql-server:latest
platform: linux/amd64
ports:
- "8080:8080" # HTTP API 端口
- "5001:5001" # gRPC 端口
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. 启动 Docker 容器: 在基础目录(或服务器目录)执行:

    Terminal window
    docker compose up -d
  2. 同步数据库架构: 进入 StudioCMS 项目目录执行:

    Terminal window
    npx astro db push --remote
  3. 完成首次设置: 遵循新数据库的首次设置流程:

    :::note 注意 若非首次设置 StudioCMS 项目,需在 studiocms.config.mjs 中启用 dbStartPage 选项 :::

如果你想为 StudioCMS 自托管 libSQL 数据库,sqld 是一个可行的选择。只要采用正确方法,部署和运行过程并不复杂。遵循本指南操作,你将为 StudioCMS 项目获得一个安全的 libSQL 服务器。