WebDuck
A self-hosted DuckDB-as-a-Service server with REST API and Web UI.
WebDuck is designed for web hosting providers who want to offer their customers
a ready-to-use administration interface for DuckDB databases and data analytics
— out of the box, just like the database admin tools that come with any hosting package.
Website ·
Issues ·
License
## Features
- **DuckDB storage engine** with file-locking for safe concurrent access
- **REST API** — admin endpoints (project/DB management) + database endpoints (SQL queries)
- **Web UI** (NiceGUI) — dark mode with yellow/amber theme
- **Dashboard** — server status cards, live REST traffic monitor (queries/min, active sessions), storage overview with per-project sizes and trash totals
- **Trash** — soft-delete projects/databases with restore, permanent delete per entry, empty trash
- **JWT authentication** for admin API, optional project-key auth for database access
- **Per-database write protection** — lock a database to read-only, independent of passwords: passwords control *who* may access, write protection controls *what* may be done to the data. It protects the data only — compacting, deleting and managing passwords in the web UI keep working at any time
- **bcrypt password hashing** (never plaintext)
- **SQL editor** — multi-statement support with sequential execution, query history (Alt+Up/Alt+Down, Alt+Enter)
- **SQL upload** — execute multi-statement SQL scripts from files
- **Database compression** — reclaims space DuckDB leaves behind after updates/deletes; a hint highlights databases with high fragmentation
- **Browse view** — tree-based navigation of databases/tables/views with infinite scroll and cell editing
- **Import/Export** — CSV, Parquet and JSON import via drag & drop, export with browser download
- **Project ordering** — drag & drop reordering, persisted in `.projects.json`
- **i18n** — English (default), German, extensible via PO/Gettext
- **Configurable logging** — file rotation + console output, independently configurable
- **Configurable upload size** — max file size for uploads
- **FK dependency hints** — DROP errors include referenced tables and constraint info
- **Docker** support out of the box
- **YAML configuration**
## Web UI