This repository builds and deploys Drumee, a sovereign data platform (auth, storage, backend, and frontend in one system). It provides two ways to run Drumee from source:
- Container channel (recommended) — a Docker Compose stack rendered from a single config file. Isolated, reproducible, with first-class upgrade/rollback.
- Native Debian channel —
.debpackages (apt install drumee) that configure a dedicated host directly.
Both are generated from one source of truth (config/drumee.yaml), so a single
config produces either a docker-compose.yml or a debconf-preseeded apt install.
With Docker and the component sources checked out alongside this repo
(~/server-team, ~/ui-team, ~/schemas, ~/setup-schemas):
scripts/build-images-local.sh # build the images from local source
scripts/dev-up.sh # render config + start the stackOpen http://localhost/; dev-up prints the admin login. Stop with
scripts/dev-down.sh. Full walkthrough: docs/quickstart.md.
For a real server (domain, TLS, email), follow the first-deploy runbook.
| Guide | What it covers |
|---|---|
| Quickstart | Get running in ~10 minutes (container & native) |
| Configuration | drumee.yaml → .env / compose / Caddyfile / debconf preseed |
| Container channel | Services, images, the compose stack |
| Native channel | apt install drumee, signed repo, unattended install |
| Production | Published images, real domain + TLS, SMTP, day-2 ops |
| First deploy runbook | Step-by-step first real-server deployment |
| Lifecycle | drumee-ctl: status, backup, restore, upgrade, rollback |
| Security | Secrets, TLS, hardening checklist |
| Doc | What it covers |
|---|---|
| Overview | Package map, runtime layout, install order |
| Database schema & init | Per-hub sharding, seeding, schema upgrades |
| infra-init | Rendering Jitsi/mail/DNS configs from setup-infra |
| Roadmap | Status and remaining work |
| Doc | What it covers |
|---|---|
| Build pipeline | Build scripts, flags, GPG signing |
| Reproducible builds | Building without insider access; seeds |
| Release engineering | Versioning, CI/CD, the starter-kit rule |
| Shared utilities | utils/functions.sh and utils/env.sh |
| Version management | Changelog lifecycle, update-changelog.sh |
| Deployment scripts | Legacy .deb update workflow, drumee CLI |
Per-package detail: infra · schemas · server · ui · static · schemas-patch · builder
Runtime components (each built as a package and a container image):
| Component | Role |
|---|---|
drumee-server-pod |
Backend — REST API (service.js) + page/WebSocket server (index.js) |
drumee-ui-pod |
Frontend — LETC rendering engine (built assets) |
drumee-schemas |
MariaDB schema, seed data, and upgrade patches |
drumee-static |
Static assets, fonts, localization |
drumee-infra |
Host infrastructure config (nginx, TLS, DNS, mail, …) |
Container stack (docker compose): mariadb + redis →
schemas-init → ui-build → schemas-populate → server-pod + factory,
fronted by a caddy proxy (TLS, static files, routing). Optional jitsi / mail
/ dns profiles consume configs produced by infra-init.
The .deb build factory clones each component from git@github.com:drumee/,
compiles it, and produces a package via dh_make + dpkg-buildpackage.
./build-all.sh # build infra, schemas, ui, server
server/build.sh --force=yes # build one package
schemas-patch/build.sh --manifest=auto # build an incremental schema patch
meta/build.sh # build the `drumee` metapackageNever run build scripts as root — they abort if
$UIDis 0.
| Directory | Package | Source repo |
|---|---|---|
infra/ |
drumee-infra |
setup-infra |
schemas/ |
drumee-schemas |
setup-schemas, schemas |
server/ |
drumee-server-pod |
server-team |
ui/ |
drumee-ui-pod |
ui-team |
static/ |
drumee-static |
static |
schemas-patch/ |
drumee-patch |
schemas |
builder/ |
drumee-bootstrap |
setup |
meta/ |
drumee |
— (metapackage) |
See docs/build-pipeline.md for flags, signing, and the full package map.
config/ drumee.yaml schema + render.mjs (single source of truth)
deploy/docker/ Dockerfiles, Caddyfile, entrypoints (container channel)
scripts/ build/publish images, get-drumee, dev-up/down, apt repo, version check
bin/ drumee-ctl (lifecycle operator CLI)
meta/ drumee metapackage
tests/ config + container + end-to-end test suites
docs/ documentation (see above)
<component>/ per-package build dir (infra, schemas, server, ui, static, …)