Rocket.Chat
Rocket.Chat is a free, open-source team chat platform you run on your own server instead of handing every conversation to Slack, Microsoft Teams, or Discord. Channels, direct messages, threads, voice and video calls, and a marketplace of extensions all ship in one self-hosted stack, with messages staying on hardware you control rather than a vendor’s cloud.
License: Rocket.Chat’s core is MIT licensed, confirmed directly from the LICENSE file in the RocketChat/Rocket.Chat GitHub repo. That same file carves out two exceptions: everything under the apps/meteor/ee/ and ee/ directories is licensed separately as Rocket.Chat Enterprise Edition, a paid tier covering things like advanced auditing and extra SSO options, and any bundled third-party components keep their own original licenses. Every feature this fiche covers, messaging, channels, calls, the Apps-Engine marketplace, lives in the free, MIT-licensed core.
Quick facts: Official site rocket.chat · GitHub RocketChat/Rocket.Chat, 45,400+ stars · Docker image registry.rocket.chat/rocketchat/rocket.chat, mirrored on Docker Hub as rocketchat/rocket.chat · current stable release 8.5.0 (June 2026) · requires MongoDB 8.0 running as a replica set, even for a single node · default port 3000.
What Rocket.Chat actually does
Underneath the Slack-like interface, channels, DMs, private groups, threads, emoji reactions, Rocket.Chat runs on a Meteor/Node.js server backed by MongoDB, with WebRTC-based voice and video calls built in rather than bolted on through a third-party integration. Federation over the Matrix protocol lets a Rocket.Chat workspace talk to other Matrix-compatible servers, and the Omnichannel module turns the same server into a livechat widget for a website, routing customer conversations to agents alongside internal team chat.
Authentication covers LDAP, SAML, and OAuth2/OIDC out of the box, so it slots into an existing identity provider like Authentik instead of managing its own separate user database. The Apps-Engine marketplace adds bots, integrations, and custom slash commands without touching the core server, and a full REST and realtime API means most of what the web client does is scriptable.
Installing Rocket.Chat with Docker
Rocket.Chat’s own documentation points to Docker Compose as the recommended install path, via the official rocketchat-compose repository. The one detail that trips up a first install: MongoDB has to run as a replica set, even a single-node one, because Rocket.Chat relies on MongoDB’s oplog for realtime change streams. Skip that step and the server logs connection errors instead of starting.
services:
rocketchat:
image: registry.rocket.chat/rocketchat/rocket.chat:8.5.0
restart: unless-stopped
environment:
MONGO_URL: "mongodb://mongodb:27017/rocketchat?replicaSet=rs0"
MONGO_OPLOG_URL: "mongodb://mongodb:27017/local?replicaSet=rs0"
ROOT_URL: "http://localhost:3000"
PORT: 3000
DEPLOY_METHOD: docker
depends_on:
- mongodb
ports:
- "3000:3000"
mongodb:
image: docker.io/mongodb/mongodb-community-server:8.0-ubi8
restart: unless-stopped
volumes:
- mongodb_data:/data/db
command: ["--replSet", "rs0", "--oplogSize", "128"]
mongodb-init-replica:
image: docker.io/mongodb/mongodb-community-server:8.0-ubi8
restart: "no"
depends_on:
- mongodb
command: >
mongosh mongodb://mongodb:27017 --eval
'rs.initiate({ _id: "rs0", members: [ { _id: 0, host: "mongodb:27017" } ] })'
volumes:
mongodb_data:
- Save the file as
docker-compose.ymlin its own directory, then rundocker compose up -d. - The
mongodb-init-replicaservice runs once, initializes the single-node replica set, and exits; that’s expected, not a crash. - Open
http://your-server-ip:3000and complete the setup wizard to create the first admin account and name the workspace. - For anything beyond a handful of testers, put a reverse proxy with a real TLS certificate in front of port 3000, the same way you would for Vaultwarden.
docker compose up -d
Hardware: Rocket.Chat’s own system requirements page lists 2 vCPU and 4 GB RAM for the app server as the floor for a “Starter” workspace of up to 500 concurrent users, plus a separate 2 vCPU / 4 GB box for MongoDB. That’s the documented target for production; a single-node homelab install on more modest hardware works for a small team but skips the 3-member MongoDB replica set the docs recommend for high availability. File uploads default to GridFS inside MongoDB, which the docs explicitly discourage past small scale, plan on S3, GCS, or MinIO for anything more than a handful of users.
Locking down a first install
Security notes: the setup wizard registers the workspace with Rocket.Chat Cloud by default, useful for push notifications on mobile, but worth reviewing if the workspace needs to stay fully air-gapped, Rocket.Chat documents a separate air-gapped deployment path for that case. Set a strong password for the first admin account immediately; it has full control over every other user and integration. Keep MongoDB off any exposed port, the compose file above never publishes 27017 to the host, and put the app itself behind a reverse proxy like Nginx Proxy Manager or Traefik rather than exposing port 3000 directly to the internet.
Rocket.Chat vs Mattermost, Zulip, and Matrix/Element
Mattermost is the closest comparison: also open source at its core, also Slack-shaped, also gates advanced features (extra SSO variety, compliance exports) behind a paid Enterprise edition. Zulip leans on threaded topics inside channels as its main organizing idea rather than flat channel history, which some teams prefer for high-volume discussion. Matrix, through clients like Element, is a federation-first protocol rather than a single platform, better suited to talking across organizations than replacing one company’s internal Slack.
| Rocket.Chat | Mattermost | Zulip | Matrix/Element | |
|---|---|---|---|---|
| License | MIT (core), separate EE tier | MIT (core), separate EE tier | Apache-2.0 | Apache-2.0 (Element), AGPL (Synapse) |
| Model | Single self-hosted platform | Single self-hosted platform | Single self-hosted platform | Federated protocol + clients |
| Voice/video | Built-in WebRTC | Plugin-based (Calls plugin) | Jitsi integration | Built-in via Matrix VoIP |
| Livechat/Omnichannel | Built-in | Not built-in | Not built-in | Not built-in |
| Database | MongoDB (replica set required) | PostgreSQL or MySQL | PostgreSQL | PostgreSQL (Synapse) |
Rocket.Chat: pros and cons
- Built-in voice/video calls and Omnichannel livechat, no third-party plugin needed for either
- LDAP, SAML, and OAuth2/OIDC support out of the box for slotting into an existing identity provider
- Active project with a six-month support window per release and frequent security patches
- Apps-Engine marketplace and full REST/realtime API for bots and integrations
- MongoDB replica-set requirement adds real setup friction compared to a single Postgres container
- Some enterprise features, advanced auditing, some SSO variants, sit behind the paid EE tier, not the free core
- Heavier resource footprint than a lightweight chat tool; the documented floor is 2 vCPU/4 GB for the app alone, before MongoDB
- Default GridFS file storage isn’t recommended past small scale, so object storage becomes a near-mandatory extra piece
Rocket.Chat earns its keep once a team outgrows a single Discord server or wants Slack’s interface without Slack’s per-seat pricing or data residency questions. Pair it with Authentik for centralized login, and keep an eye on the containers with Uptime Kuma once real conversations depend on it staying up.
FAQ
Is Rocket.Chat really free?
Yes. The core is MIT licensed and covers messaging, channels, calls, Omnichannel, and the Apps-Engine marketplace. Rocket.Chat Enterprise Edition is a separate paid tier for advanced administration and compliance features, layered on top of, not required by, the free core.
Why does MongoDB need to be a replica set?
Rocket.Chat watches MongoDB’s oplog to push realtime updates to connected clients, and the oplog only exists when MongoDB runs in replica-set mode. A single-node replica set satisfies the requirement for testing and small deployments; production setups should use the 3-member replica set Rocket.Chat’s own docs recommend for high availability.
Can Rocket.Chat replace Slack for a small team?
For most day-to-day use, yes, channels, threads, DMs, and calls cover the same ground. The gaps show up around polish in some mobile edge cases and marketplace breadth, where Slack’s larger third-party ecosystem still leads.
Does Rocket.Chat support end-to-end encryption?
Yes, for direct messages and private channels, opt-in per room rather than on by default. It’s separate from the transport-level HTTPS a reverse proxy provides in front of the server.
Is Rocket.Chat actively maintained?
Yes. The project shipped release 8.5.0 in June 2026, has logged nearly 30,000 commits, and sits at over 45,000 GitHub stars with a steady release cadence and a documented six-month support window per version.