selfhostedworld.com logoselfhostedworld.com

Try describing what you need:

Rocket.Chat logo

Rocket.Chat

★ 46.3k

A self-hosted alternative to Discord, Microsoft Teams, Slack, Zoom

MIT LicenseOpen Source — No Paywall14 Containers — 14 containers — heavy hosting footprintDocker · K8s · Snap +2No external DB5 documented maintainers

About

Rocket.Chat is an open-source communications platform aimed at organizations that need secure, customizable collaboration tools. It supports team messaging and real-time conversations for internal...

Community Ratings

No ratings yet

Features

  • real-time conversations
  • messaging
  • voice calls
  • federation
  • apps marketplace
  • Apps-Engine integration
  • identity management
  • end-to-end encryption
  • role-based access control
  • air-gapped deployment

Details

Last Updated
Oct 15, 2026
Created
May 19, 2015
Install Methods
dockerkubernetessnappackage-managersource
Requirements
DockerPodmanKubernetes
API
REST
Runtime / Stack
NodejsDockerK8S
Privacy & Independence
Cloud: OptionalOffline Capable
User Model
Multi-UserMulti-Tenant
Deployment

Deployment: Docker Compose ✓14 Containers — heavy hosting footprintRuns as 14 containers

Run Rocket.Chat with Docker Compose

Compose file from the Rocket.Chat project repository.

14 services · infra: nats, traefik · 4 unclassified (all-in-one, grafana, prometheus, cadvisor)

no resource limits declared

needs persistent storage (8 volumes)

apps/meteor/ee/server/services/docker-compose.yml · @ 70c4d9e · scanned Jun 6, 2026

version: '3.1'

services:
  authorization-service:
    container_name: authorization-service
    build:
      context: .
      args:
        SERVICE: authorization
    image: rocketchat/authorization-service:latest
    env_file: .config/services/service.env
    depends_on:
      - nats

  account-service:
    container_name: account-service
    build:
      context: .
      args:
        SERVICE: account
    image: rocketchat/account-service:latest
    env_file: .config/services/service.env
    depends_on:
      - nats

  presence-service:
    container_name: presence-service
    build:
      context: .
      args:
        SERVICE: presence
    image: rocketchat/presence-service:latest
    env_file: .config/services/service.env
    depends_on:
      - nats

  ddp-streamer-service:
    container_name: ddp-streamer-service
    build:
      context: .
      args:
        SERVICE: ddp-streamer
    image: rocketchat/ddp-streamer-service:latest
    env_file: .config/services/service.env
    depends_on:
      - nats
      - traefik
    labels:
      traefik.enable: true
      traefik.http.services.ddp-streamer-service.loadbalancer.server.port: 3000
      traefik.http.routers.ddp-streamer-service.service: ddp-streamer-service

  ecdh-proxy-socket-service:
    container_name: ecdh-proxy-socket-service
    build:
      context: .
      args:
        SERVICE: ecdh-proxy
    image: rocketchat/ecdh-proxy-service:latest
    env_file: .config/services/service.env
    environment:
      PROXY_HOST: ddp-streamer-service
      STATIC_SEED: my seed
    depends_on:
      - nats
      - traefik
      - ddp-streamer-service
    labels:
      traefik.enable: true
      traefik.http.services.ecdh-proxy-socket-service.loadbalancer.server.port: 3000
      traefik.http.routers.ecdh-proxy-socket-service.service: ecdh-proxy-socket-service

  ecdh-proxy-http-service:
    container_name: ecdh-proxy-http-service
    build:
      context: .
      args:
        SERVICE: ecdh-proxy
    image: rocketchat/ecdh-proxy-service:latest
    env_file: .config/services/service.env
    environment:
      PROXY_HOST: host.docker.internal
      STATIC_SEED: my seed
    depends_on:
      - nats
      - traefik
    labels:
      traefik.enable: true
      traefik.http.services.ecdh-proxy-http-service.loadbalancer.server.port: 3000
      traefik.http.routers.ecdh-proxy-http-service.service: ecdh-proxy-http-service

  queue-worker-service:
    container_name: queue-worker-service
    build:
      context: .
      args:
        SERVICE: queue-worker
    image: rocketchat/queue-worker-service:latest
    env_file: .config/services/service.env
    depends_on:
      - nats

  omnichannel-transcript-service:
    container_name: omnichannel-transcript-service
    build:
      context: .
      args:
        SERVICE: omnichannel-transcript
    image: rocketchat/omnichannel-transcript-service:latest
    env_file: .config/services/service.env
    depends_on:
      - nats

  nats:
    image: nats
    ports:
      - '4222:4222'

  # tracing container for all tracing reporting
  jaeger:
    image: jaegertracing/all-in-one:latest
    container_name: jaeger
    ports:
      - '16686:16686'
      - '5775:5775/udp'
      - '6831:6831/udp'
      - '6832:6832/udp'
      - '5778:5778'
      - '14268:14268'
      - '9411:9411'
    depends_on:
      - traefik
    # environment:
    #   - QUERY_BASE_PATH=/jaeger
    labels:
      traefik.enable: true
      traefik.http.routers.jaeger.rule: Host(`jaeger.${HOST_NAME}`)
      traefik.http.routers.jaeger.entrypoints: web
      traefik.http.services.jaeger.loadbalancer.server.port: 16686
      # traefik.http.routers.jaeger.service: jaeger

  grafana:
    image: grafana/grafana
    container_name: grafana
    restart: unless-stopped
    volumes:
      - ./.config/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources:ro
      - ./.config/grafana/provisioning/dashboards/provider:/etc/grafana/provisioning/dashboards:ro
      - ./.config/grafana/provisioning/dashboards/json-exports:/var/lib/grafana/dashboards:ro
    depends_on:
      - prometheus
      - traefik
    labels:
      traefik.enable: true
      traefik.http.routers.grafana.rule: Host(`grafana.${HOST_NAME}`)
      traefik.http.routers.grafana.entrypoints: web
      traefik.http.services.grafana.loadbalancer.server.port: 3000

  prometheus:
    image: quay.io/prometheus/prometheus
    container_name: prometheus
    restart: unless-stopped
    command:
      - --config.file=/etc/prometheus/prometheus.yml
      - '--storage.tsdb.retention.time=12w'
      - '--storage.tsdb.path=/prometheus'
    volumes:
      - ./.config/data/prometheus:/prometheus
      - ./.config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
    depends_on:
      - traefik
    ports:
      - 9090:9090
    labels:
      traefik.enable: true
      traefik.http.routers.prometheus.rule: Host(`prometheus.${HOST_NAME}`)
      traefik.http.routers.prometheus.entrypoints: web
      traefik.http.services.prometheus.loadbalancer.server.port: 9090

  traefik:
    image: traefik
    container_name: traefik
    command:
      - --entrypoints.web.address=:80
      # - --entrypoints.websecure.address=:443
      - --api=true
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --providers.file.directory=/servers/
    ports:
      - 80:80
      # - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./.config/traefik/servers/:/servers/
      # - ./.config/traefik/acme.json:/acme.json
    labels:
      traefik.enable: true
      # Dashboard
      traefik.http.routers.traefik.rule: Host(`traefik.${HOST_NAME}`)
      traefik.http.routers.traefik.service: api@internal
      traefik.http.routers.traefik.entrypoints: web

  cadvisor:
    image: google/cadvisor
    container_name: cadvisor
    volumes:
      # -/:/rootfs:ro
      # -/var/run:/var/run:ro
      # -/sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
      # -/dev/disk/:/dev/disk:ro
    ports:
      - 8080:8080
    # --privileged \
    # --device=/dev/kmsg \

This file may be out of date. Check the Rocket.Chat documentation for current setup steps.

Open-source health

FOSS with issues

open-washingpoisoned-sourceopen-corelimited-corevc-fundingunclear-foss-offering

Source: isitreallyfoss.com · reviewed Jun 2025

Track your self-hosted stack

Bookmark software to try, rate tools you've used, and keep your collection in one place.

Metadata extracted from README on Jul 9, 2026

Related Software

LiveKit logo

LiveKit

21.5k
LiveKit is an open source, scalable WebRTC media server for building real-time video, audio, and data experiences.
Self Hosting SolutionsVideo ConferencingMedia Servers+1
Details
Mattermost logo

Mattermost

39.3k
Mattermost is a self-hosted collaboration platform for chat, workflow automation, voice calling, screen sharing, and AI integration.
Custom CommunicationsSelf Hosting SolutionsAutomation Tools+4
15 ContainersOpen CoreFOSS with Issues
Details
Tinode logo

Tinode

13.5k
Tinode is a full-stack instant messaging server with native clients for web, Android, iOS, and command-line use.
Custom CommunicationsVideo ConferencingSelf Hosting Solutions+1
Details
Screego logo

Screego

10.7k
screego/server is a screen-sharing server for developers that provides high-quality, low-latency screen sharing.
Custom CommunicationsCopyleft LicenseSelf Hosting Solutions+1
Details
SimpleX Chat logo

SimpleX Chat

19.6k
A private messaging platform with no user identifiers, offering encrypted chat, groups, and calls across mobile and terminal apps.
Custom CommunicationsVideo ConferencingSelf Hosting Solutions+1
Cloud Required
Details
Live Helper Chat logo

Live Helper Chat

2.3k
Live Helper Chat is an open-source live support and customer chat application for websites.
Custom CommunicationsTicketing SystemsVideo Conferencing+4
Details
chatto logo

chatto

2.8k
Chatto is a self-hostable chat application for teams and communities, with a bundled web frontend, server, CLI, and related identity/workflow components.
Custom CommunicationsVideo ConferencingSelf Hosting Solutions+1
4 Containers
Details
Databag logo

Databag

1.5k
Databag is a federated messenger for self-hosting.
Custom CommunicationsVideo ConferencingSelf Hosting Solutions+2
Single Container
Details
FusionPBX logo

FusionPBX

1.1k
FusionPBX is a web-based multi-tenant PBX and VoIP server platform built on FreeSWITCH for business telephony, call center, voicemail, fax, and conferencing use cases.
SIP CommunicationCustom CommunicationsVideo Conferencing+2
Open Core
Details
WorkAdventure logo

WorkAdventure

5.9k
WorkAdventure is an open-source platform for creating customizable collaborative virtual worlds and virtual offices with avatar-based interaction and video chat.
Custom CommunicationsVideo ConferencingSelf Hosting Solutions+1
12 ContainersOpen Core
Details
TrueConf logo

TrueConf

Platform for your corporate communications, based on the advanced architecture, with support for UltraHD video conferencing, built-in messenger with personal and group chats, and a free version for up to 1,000 users.
Video ConferencingCustom CommunicationsSelf Hosting Solutions
Details
Virola Messenger logo

Virola Messenger

Instant messaging and collaboration tool with private and group chat rooms, continuous voice and video meetings, files sharing, issue tracking with integrated task board (alternative to Slack).
Custom CommunicationsVideo ConferencingTask Management+2
Details