컨텐츠로 건너뛰기

자체 호스팅 libSQL 서버

sqld (“SQL daemon”) 프로젝트는 Turso에서 만든 libSQL의 서버 모드입니다. 이 가이드에서는 StudioCMS 프로젝트를 위해 Docker 컨테이너에서 sqld를 설정하고 구성하는 방법을 설명합니다.

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" -c "iss=admin" -e 31556926

출력된 내용은 개인 키로 암호화된 JWT 인증 토큰이며, 이는 libSQL 인증에 사용됩니다. 이 토큰은 1년 동안 유효하다는 점을 유념하세요!

StudioCMS의 .env 파일을 다음과 같이 업데이트하세요.

Section titled “StudioCMS의 .env 파일을 다음과 같이 업데이트하세요.”
Terminal window
ASTRO_DB_REMOTE_URL=http://localhost:8080 # 도커 서버/로컬 시스템을 가리켜야 합니다.
ASTRO_DB_APP_TOKEN= # base64URL 형식으로 인코딩된 JWT 인증 토큰을 붙여넣으세요.

StudioCMS 프로젝트 디렉터리 외부에 libSQL 인스턴스를 위한 새로운 docker-compose.yml 파일을 생성합니다. 이 시점에서 libSQL 인증을 구성하는 두 가지 옵션이 있습니다.

  • 공개 키 파일 자체 사용
  • JWT 토큰을 환경 변수로 사용 (.env 파일에서 사용한 것과 동일한 ASTRO_DB_APP_TOKEN 값)
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. Docker 컨테이너를 시작합니다.

    기본 디렉터리 (또는 해당 라우트로 이동한 경우에는 서버)에서 다음 명령을 실행하여 libSQL 서버 컨테이너를 시작합니다.

    Terminal window
    docker compose up -d
  2. StudioCMS 데이터베이스 스키마를 동기화합니다.

    StudioCMS 프로젝트 디렉터리로 이동하여 다음 명령을 실행합니다.

    Terminal window
    npx astro db push --remote
  3. 새로운 데이터베이스의 초기 설정을 진행합니다.

StudioCMS와 함께 자체 libSQL 데이터베이스를 자체 호스팅할 방법을 찾고 있다면, sqld는 실행 가능한 선택 사항이며 올바른 방법으로 진행한다면 구축 및 실행이 그리 복잡하지 않습니다. 이 가이드는 StudioCMS 프로젝트와 함께 사용할 수 있는 안전한 libSQL 서버를 제공합니다.