Skip to main content

Architecture

A Drumee deployment is built around a mandatory core plus a set of optional add-on services you enable only when you need them. Every service — core and optional — runs on an internal network; only the reverse proxy and the ports that external clients actually dial are exposed.

Drumee Core (mandatory)

These services are always present. They make up the Drumee platform itself.

ServiceRole
server-podBackend — REST API, WebSocket, and page server (Node.js, two processes: index.js + service.js)
ui-podFrontend — the Drumee web OS UI (static assets served by the reverse proxy after the build step)
MariaDBRelational database — accounts, content metadata, ACL state, chat history, and all schema classes
RedisSession cache and pub/sub event bus
Reverse proxyTLS termination, static-file serving, and request routing to the backend (Caddy on Docker, nginx on Debian)

One-shot initialisation containers run in order before the core starts:

ContainerWhenWhat it does
schemas-initFirst startCreates all MariaDB database classes and loads the schema
ui-buildFirst startCompiles and publishes UI assets into the shared volume
schemas-populateFirst startSeeds the admin account, entity pool, and system keys

Optional services

Optional services are disabled by default and can be enabled independently of each other. On Docker Compose they are activated through Compose profiles; on Debian/Ubuntu they are installed as additional packages or controlled via INFRA_COMPONENTS in the host configuration.

DNS server

PurposeAuthoritative DNS — lets Drumee host the domain's DNS records itself, without a third-party registrar nameserver
Based onBIND 9
Ports53/tcp, 53/udp
When to enableWhen your registrar delegates the zone to the Drumee host, or when running in an isolated / air-gapped network that needs internal DNS resolution
When to skipYou already manage DNS elsewhere (Cloudflare, your registrar's panel, Route 53, …) — this is the common case for most deployments

Conference server (Jitsi)

PurposeIn-platform video conferencing and screen sharing
Based onJitsi Meet (Jitsi Videobridge + Jicofo) with Prosody as the XMPP signaling layer
Ports10000/udp (WebRTC media), 5222/tcp (XMPP signaling — Prosody)
When to enableYou want integrated video calls without relying on a third-party conferencing service
When to skipYou'll embed an external meeting URL, or you don't need in-platform video calls
Firewall requirement

Port 10000/udp must be reachable from clients for WebRTC media to flow. If your host is behind NAT or a strict firewall, open that port before enabling Jitsi.

Document server (Euro Office)

PurposeCollaborative document editing — opens and saves Office documents (.docx, .xlsx, .pptx, …) directly in the browser
Based onEuro Office
When to enableUsers need to co-edit Office documents without leaving Drumee
When to skipYou only need file storage and sharing, not in-browser editing of Office formats

Port summary

PortProtocolServiceRequired
80TCPReverse proxy (HTTP → HTTPS redirect)Yes
443TCPReverse proxy (HTTPS)Yes
53TCP + UDPDNS serverOnly if DNS add-on is enabled
10000UDPJitsi media (WebRTC)Only if conferencing is enabled
5222TCPProsody XMPP (Jitsi signaling)Only if conferencing is enabled

See also