Self-hosted cloud storage with file sharing, previews, analytics, and a REST API.
Built with SvelteKit, Prisma.
curl -fsSL https://raw.githubusercontent.com/lbirkert/lightdrive/main/setup.sh | bash
Installs Node.js, clones the repo, builds the app, and registers a systemd service.
Works on Debian, Ubuntu, Fedora, Arch, openSUSE, and Raspberry Pi OS.
Run the same command again to update.
git clone https://github.com/lbirkert/lightdrive.git
cd lightdrive
cp .env.example .env
npm install
npm run dev
| |
|---|
| 📁 File management | Folder tree, list/grid views, drag-and-drop uploads |
| 🔗 Share links | Granular permissions (view, edit, insert, structure) |
| 👥 Collaboration | Invite users to folders with role-based access |
| 🖼️ Previews | Images, PDFs, documents (docx/md/txt/csv), audio/video |
| 📊 Analytics | Storage usage, upload/download activity charts |
| 🔒 Security | Argon2 hashing, HTTP-only session cookies |
| 📡 REST API | Full API with Scalar documentation at /api-docs |

| Path | Description |
|---|
/ | Marketing landing page |
/drive/{userId} | Personal drive |
/drive/{shareToken} | Shared drive (via share link) |
/auth | Sign in / Sign up |
/account | Account settings |
/account/preferences | Theme preferences |
/account/shares | Manage share links |
/dashboard | Usage analytics |
/api-docs | REST API reference |
| Variable | Default | Description |
|---|
DATABASE_URL | file:./dev.db | SQLite database path |
ORIGIN | — | Public URL (required for production) |
PORT | 3000 | Server port |
BODY_SIZE_LIMIT | 52428800 | Max upload size (bytes) |
- Runtime: Node.js 24
- Framework: SvelteKit (Svelte 5)
- Database: SQLite via Prisma + libSQL (PostgreSQL optional)
- Auth: Argon2 password hashing, HTTP-only session cookies
- Icons: Lucide
- Previews: Sharp (images), Mammoth (docx), Marked (markdown)
- Transcoding: FFmpeg (audio/video)