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​