The self-hosted, Turso-like control plane for SQLite & libSQL.
LibSQLite brings the modern developer experience of serverless databases to your own infrastructure. It is a powerful, 100% self-hosted open-source alternative to Turso, designed to orchestrate, manage, and scale SQLite and libSQL databases at the edge.
Instead of paying for managed cloud services or struggling with monolithic setups, LibSQLite provides a zero-configuration control plane that dynamically spins up isolated libsql-server containers, automatically routes traffic via Traefik, and exposes them securely through Cloudflare Tunnels using single-level wildcard subdomains.
- Dynamic Docker Orchestration: Automatically provisions isolated
libsql-servercontainers for every database you create or import. - Zero-Config Edge Routing: Native integration with Traefik and Cloudflare Tunnels. Expose databases instantly to the public internet securely (e.g.,
https://my-db.yourdomain.com). - Unified Management Panel: Govern multiple SQLite databases from an intuitive, unified dark-mode dashboard.
- Built-in Studio: Powerful schema browsing, data visualization, and raw query execution built right into the interface (synchronizes perfectly with your active
libsql-serverinstances). - Migration Engine: Apply, track, and execute safe migrations directly from code, CI/CD, or the API.
- Enterprise-Grade Security: Full RBAC, encrypted token storage via ED25519 JWT keys, comprehensive audit logging, and
HttpOnlysession hardening. - Deploy Anywhere: First-class support for local servers, VPS, and zero-config deployment on Coolify.
Get up and running with LibSQLite in seconds using Docker Compose or Node.js.
LibSQLite ships with a robust docker-compose.yml for effortless production or local deployment.
# Start the entire stack (Backend on port 5000, Frontend on 5001)
docker-compose up -d --buildThe backend automatically generates and persists a secure
MASTER_KEYif none is supplied.
# 1. Install backend dependencies and configure env
cd backend
npm install
cp .env.example .env
# 2. Build and start the backend service
npm run build
npm run start
# 3. In a new terminal, start the Next.js frontend
cd ../frontend
npm install
npm run devAt its core, LibSQLite enforces a strict separation between the Control Plane (Backend metadata and management) and the Data Plane (Actual SQLite/libSQL files and orchestrated containers).
graph TD;
A[Cloudflare Tunnel / Edge] -->|Wildcard Subdomains| B(Traefik Proxy);
B -->|Dynamic HTTP Routing| C((Isolated libsql-server Containers));
B -->|Panel Traffic| D[LibSQLite Control Plane];
D -->|Manages| C;
D -->|Reads/Writes| E[(Shared sqlite data volume)];
C -->|Serves| E;
Storage Layout (Optimized for libsql-server)
Managed SQLite files are securely structured so that the built-in Studio and the orchestrated Docker containers remain in perfect sync:
data/sqlite/projects/<projectId>/databases/<databaseId>/dbs/default/data
Deep-dive into our extensive guides to master your self-hosted infrastructure:
| Getting Started | Operations | Architecture |
|---|---|---|
| Usage Guide | Production Guide | Architecture |
| Development Guide | Security Guide | API Reference |
| Deployment Guide | Coolify Guide | Public Database Guide |
| Deploy Checklist | Troubleshooting |
- Frontend: Next.js 14+ (App Router), React, Tailwind CSS, Lucide Icons.
- Backend: Node.js, Fastify, TypeORM,
@libsql/client. - Security: Argon2 Encryption, Helmet, Rate-Limiting.
- Infrastructure: Docker, Coolify.
Created by Joshua Chávez Lau
Report Bug • Request Feature