Skip to main content

How to Self-Host Rocket.Chat: Enterprise Messaging Platform 2026

·OSSAlt Team
rocketchatteam-messagingomnichannelslackself-hostingdocker2026

TL;DR

Rocket.Chat (MIT, ~39K GitHub stars, Node.js/Meteor) is a comprehensive self-hosted messaging platform that goes beyond Slack-style team chat. Its standout feature is omnichannel — a single inbox for customer communications via live chat widget, WhatsApp, email, SMS, Telegram, and more. For pure team messaging: Mattermost is simpler. For teams that also run customer support: Rocket.Chat is unmatched. Community Edition is free; Enterprise Edition adds compliance and advanced omnichannel features.

Key Takeaways

  • Rocket.Chat: MIT, ~39K stars, Node.js — team chat + omnichannel customer support
  • Omnichannel: Live chat widget, WhatsApp, email, SMS, Telegram — all in one inbox
  • Marketplace: 100+ apps and integrations (Jira, GitHub, Trello, Zapier, etc.)
  • Federation: Connect with Matrix homeservers (experimental) and other Rocket.Chat instances
  • Mobile apps: iOS and Android (free)
  • RAM: ~1–2GB — heavier than Mattermost

Rocket.Chat vs Mattermost vs Matrix

FeatureRocket.Chat CEMattermost CEMatrix + Synapse
LicenseMITMITApache 2.0
GitHub Stars~39K~30K~12K
OmnichannelYes (live chat, email, WA)NoNo
Marketplace/Apps100+LimitedNo
FederationMatrix (beta)NoYes
Video callsJitsi integrationCalls pluginElement Call
E2EEYesBetaYes
RAM (idle)~1–2GB~500MB~500MB–1GB

Part 1: Docker Setup

# docker-compose.yml
services:
  rocketchat:
    image: rocketchat/rocket.chat:latest
    container_name: rocketchat
    restart: unless-stopped
    ports:
      - "3000:3000"
    depends_on:
      - mongodb
    environment:
      MONGO_URL: "mongodb://mongodb:27017/rocketchat"
      MONGO_OPLOG_URL: "mongodb://mongodb:27017/local"
      ROOT_URL: "https://chat.yourdomain.com"
      PORT: "3000"
      DEPLOY_PLATFORM: docker

  mongodb:
    image: mongo:6.0
    container_name: rocketchat-mongo
    restart: unless-stopped
    volumes:
      - mongodb_data:/data/db
    command: mongod --oplogSize 128 --replSet rs0
    healthcheck:
      test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
      interval: 10s

  # Initialize MongoDB replica set (required for Rocket.Chat):
  mongo-init-replica:
    image: mongo:6.0
    restart: on-failure
    command: >
      mongosh --host mongodb:27017 --eval
      "rs.initiate({_id: 'rs0', members: [{_id: 0, host: 'mongodb:27017'}]})"
    depends_on:
      - mongodb

volumes:
  mongodb_data:
docker compose up -d

# Wait for MongoDB replica set to initialize (~30 seconds), then:
docker compose restart rocketchat

Visit https://chat.yourdomain.com → setup wizard.


Part 2: HTTPS with Caddy

chat.yourdomain.com {
    reverse_proxy localhost:3000
}

Part 3: Setup Wizard

  1. Admin Info: Create admin username and email
  2. Organization Info: Company name, size, industry
  3. Site Info: Site name, default language
  4. Server Registration: Skip (or register for push notifications)

Part 4: Channels and Rooms

Room Types

  • Channel (#general, #engineering): Public group chat
  • Private Group: Invite-only team channel
  • Direct Message: 1:1 private chat
  • Omnichannel Room: Customer-facing live chat
#general — Company-wide announcements
#engineering — Engineering team
#random — Off-topic
#ops — DevOps and infrastructure
#customer-support — Via omnichannel inbox

Part 5: Omnichannel — Live Chat on Your Website

Add a live chat widget to your website:

  1. Admin → Omnichannel → Installation
  2. Toggle Enable Omnichannel: On
  3. Livechat → Widget Appearance → customize colors and greeting
  4. Get the embed code:
<script type="text/javascript">
(function(w, d, s, u) {
    w.RocketChat = function(c) { w.RocketChat._.push(c) };
    w.RocketChat._ = [];
    w.RocketChat.url = u;
    var h = d.getElementsByTagName(s)[0],
        j = d.createElement(s);
    j.async = true;
    j.src = u + '/livechat/rocketchat-livechat.min.js?_=201903240000';
    h.parentNode.insertBefore(j, h);
})(window, document, 'script', 'https://chat.yourdomain.com');
</script>
  1. Paste into your website's <body>
  2. Customer messages appear in the Omnichannel → Chats queue

Route Chats to Agents

  1. Omnichannel → Departments → Create department: Sales, Support
  2. Omnichannel → Agents → Assign agents to departments
  3. New chats are automatically routed to available agents

Part 6: Integrations

GitHub Notifications

  1. Admin → Integrations → New → Incoming WebHook
  2. Channel: #engineering
  3. Copy webhook URL
  4. In GitHub → Settings → Webhooks → Add → paste URL
  5. Select events: push, pull requests, issues
# Webhook payload format configured in Rocket.Chat script field:
# Maps GitHub events to Rocket.Chat message format

Jira

Admin → Marketplace → Install Jira Integration (from marketplace):

  • Connect Jira Cloud or Server
  • /jira slash commands: /jira create, /jira search, /jira assign

Zapier / n8n

Use Incoming Webhooks to connect Rocket.Chat to any automation:

curl -X POST https://chat.yourdomain.com/hooks/YOUR_HOOK_ID/YOUR_TOKEN \
  -H 'Content-Type: application/json' \
  -d '{"text": "New lead from Typeform: John Smith", "channel": "#sales"}'

Part 7: Video Calls via Jitsi

  1. Admin → Video Conference → Default Provider: Jitsi
  2. Jitsi Domain: meet.jit.si (public) or your self-hosted Jitsi instance
  3. Start a call: Click the camera icon in any channel

For self-hosted Jitsi:

services:
  jitsi-web:
    image: jitsi/web:stable
    # ... (Jitsi has its own full Docker Compose setup)

Part 8: LDAP / OIDC SSO

LDAP (Admin → Workspace → LDAP):

LDAP Host: ldap.yourdomain.com
Port: 636 (LDAPS)
Bind DN: cn=readonly,dc=yourdomain,dc=com
Base DN: dc=yourdomain,dc=com

OIDC/OAuth2 via Authentik: Admin → Workspace → OAuth → Add Custom OAuth:

  • URL: https://auth.yourdomain.com/application/o/rocketchat/
  • Client ID + Secret from Authentik
  • Token endpoint, userinfo endpoint, scope: openid profile email

Maintenance

# Update Rocket.Chat:
docker compose pull
docker compose up -d

# Backup MongoDB:
docker exec rocketchat-mongo mongodump --archive | gzip \
  > rocketchat-backup-$(date +%Y%m%d).gz

# Restore:
cat rocketchat-backup-20260309.gz | docker exec -i rocketchat-mongo mongorestore --archive

# Logs:
docker compose logs -f rocketchat

# Rocket.Chat CLI (admin tasks):
docker exec rocketchat node /app/bundle/programs/server/app.js --help

When to Choose Rocket.Chat vs Mattermost

Choose Rocket.Chat if:

  • You run a customer support team (omnichannel is unique to Rocket.Chat)
  • You need a live chat widget for your website
  • You need WhatsApp/email integration in the same platform as internal chat
  • You want a large app marketplace
  • You're running an enterprise with complex compliance requirements

Choose Mattermost if:

  • Pure internal team messaging (no customer communication)
  • Simpler setup and lower RAM footprint
  • You prefer PostgreSQL over MongoDB
  • You want a more Slack-identical UX

See all open source team communication tools at OSSAlt.com/alternatives/slack.

Comments