Self-host Rocket.Chat
A feature-packed open-source team chat with channels and omnichannel support built in, plus voice and video through marketplace call apps. The most extensible self-hosted Slack alternative if you want everything in one platform.
Key facts
Pick Rocket.Chat when you want channels, voice/video and omnichannel in one self-hosted product and have a 2-vCPU, 8 GB box to give it: upstream's Starter sizing for up to 500 concurrent users is 4 GiB for Rocket.Chat plus 4 GiB for MongoDB. The core is MIT (Expat) except the `ee/` directories, which carry a separate enterprise licence, and the official stack is Node.js (bundled in the image) plus a MongoDB 8.0+ replica set, NATS, and optional Traefik and monitoring — nine compose files in the repository, up to six chained in the guide's command, not one. If your team is under 1,000 users and 2 GB is what you have, Mattermost is the lighter team-chat entry in the catalog.
Follow the Rocket.Chat deploy guide →What you need
- Any VPS with at least 8192 MB of RAM
- A domain you control — most self-hosted setups need HTTPS in front of them
- About an afternoon — budget time for troubleshooting
Paid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# Rocket.Chat — official compose repo (docs → Deploy with Docker and Docker Compose): app + MongoDB + Traefik + NATS + monitoring
git clone --depth 1 https://github.com/RocketChat/rocketchat-compose.git
cd rocketchat-compose
cp .env.example .env
# edit .env — RELEASE=<exact version, e.g. 8.8.0> (never latest in production); for a public server also:
# DOMAIN=chat.example.com ROOT_URL=https://chat.example.com LETSENCRYPT_ENABLED=true LETSENCRYPT_EMAIL=you@example.com TRAEFIK_PROTOCOL=https
# (LETSENCRYPT_EMAIL is required even for the local defaults, which serve http://SERVER_IP:3000)
docker compose -f compose.monitoring.yml -f compose.traefik.yml -f compose.database.yml -f compose.yml -f compose.nats.yml -f docker.yml up -d
# the app publishes plain-HTTP :3000 and metrics :9458 on all interfaces (BIND_IP defaults to 0.0.0.0): set BIND_IP=127.0.0.1 in .env when Traefik or another proxy fronts it
# → https://chat.example.com (your ROOT_URL)What you take on
Rocket.Chat is the heaviest chat server in the catalog, and its free-tier limits live in the docs rather than the licence: