Run your own Drumee: files, folder-native chat, video meetings and fine-grained permissions, on a server you control.
This repository holds the Docker Compose templates for a self-hosted Drumee instance. Everything runs in a single container.
- Website: drumee.com
- Documentation: docs.drumee.com
- Image:
drumee/stableon Docker Hub
| Minimum | |
|---|---|
| OS | Debian family |
| RAM | 8 GB |
| CPU | 2 GHz, 2 cores |
| Disk | 100 GB for the database volume, plus whatever you plan to store |
| Docker | Engine 20 or newer |
A few constraints that are easy to miss:
- The domain name you give Drumee cannot be shared with another application.
- Drumee runs its own DNS and MTA, so ports
53,80,443,5222and10000/udpmust be free on the host. - Put
/srv/db(database) and/data(content) on separate volumes, and give the database volume the faster disk.
Follow the official documentation, or:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.shDrumee acts as the authoritative DNS server for its own domain, so it needs both the records and the glue records in place before it starts.
In your DNS zone, replacing example.org with your domain — if you have no IPv6
address, fill in the IPv4 rows only:
| Name | Type | Target |
|---|---|---|
example.org |
A | your IPv4 address |
example.org |
AAAA | your IPv6 address |
ns1.example.org |
A | your IPv4 address |
ns1.example.org |
AAAA | your IPv6 address |
ns2.example.org |
A | your IPv4 address |
ns2.example.org |
AAAA | your IPv6 address |
Then, at your registrar, set the domain's name servers to ns1.example.org and
ns2.example.org, and add both as glue records. Propagation can take a while.
Check it before continuing:
nslookup example.orggit clone https://github.com/drumee/docker-hosted
cd docker-hosted
cp public-public.yml drumee.ymlEdit drumee.yml and set, at minimum:
| Variable | What it is |
|---|---|
DRUMEE_DOMAIN_NAME |
Your domain — must match the DNS records above |
hostname |
The same domain |
PUBLIC_IP4 / PUBLIC_IP6 |
The public addresses bound to that domain |
ADMIN_EMAIL |
Becomes the admin account, and receives the setup link |
ACME_EMAIL_ACCOUNT |
Used for the ZeroSSL certificate; defaults to ADMIN_EMAIL |
DRUMEE_DESCRIPTION |
Free text shown on the login page |
volumes |
Host paths for /srv/db, /data and /exchangearea |
Leave DRUMEE_REPO and INFRA_COMPONENTS alone, and do not change the
right-hand side of any port or volume mapping.
sudo docker compose -f drumee.yml up -d
sudo docker logs --follow drumeeFirst boot provisions the database, requests certificates and brings up the
services, so give it time. When it finishes, a setup link is emailed to
ADMIN_EMAIL — open it, set the admin password, and you are running Drumee.
| Mount | Purpose |
|---|---|
/srv/db |
Database. Dedicated volume, 100 GB or more, fastest disk you have. |
/data |
Content storage — the data lake. Size it to your needs. |
/exchangearea |
Exchange area between the Drumee filesystem and the host. |
/var/mail |
Postfix data, if you mount it. |
Set STORAGE_BACKUP and DB_BACKUP to enable the rsync backup daemon. Both take
the form [user@host:]/path/to/backup; for a remote destination, set up the SSH
keys first.
Ports already in use is the most common failure — Drumee needs 53, 80, 443,
5222 and 10000/udp, and a host running systemd-resolved or an existing web
server will be holding some of them.
To inspect the container instead of booting the stack, comment the entrypoint
line in drumee.yml and uncomment the /bin/bash one below it.
| Path | Repository |
|---|---|
| Bare-metal Debian | drumee/debian-hosted |
| Synology NAS | drumee/synology-hosted |
| Local development environment | drumee/starter-kit |
See the org CONTRIBUTING guide. Questions and self-hosting help: Discussions.