Rocket.Chat’s server architecture defines how the platform is structured and how its components interact to deliver a scalable and reliable messaging system. This overview introduces the core elements of the architecture and explains how they work together.
For a broader perspective, see architecture and components guide.
Core components
Core server: Contains packages responsible for authentication, messaging, and other essential server functionality.
Database: Rocket.Chat uses MongoDB to store application data, including messages, user information, and system configurations.
File storage: Stores assets such as uploaded files, images, and other media.
Services
Rocket.Chat’s architecture includes both internal and external services:
Internal services run within the Meteor instance and are tightly integrated with the main server process.
External services operate independently in separate processes, enabling better scalability and fault isolation.
External services
Rocket.Chat includes the following external services:
Authorization: Manages user permissions and access control. The service is stateless and supports horizontal scaling.
Account: Handles account lifecycle operations such as creation, updates, and deletion, and supports authentication workflows (for example, login and logout). This service is stateless and horizontally scalable.
Presence: Tracks and updates users’ online status. Designed to be stateless and horizontally scalable.
DDPStreamer: Manages DDP (Distributed Data Protocol) connections, including subscriptions, client-server communication, and data delivery. Supports horizontal scaling.
Apps-Engine: Manages Rocket.Chat applications, including installation, execution, updates, and removal. Although designed for horizontal scaling, this service is currently under active development.
Key terms:
Horizontally scalable: Capacity can be increased by adding more servers or instances, distributing workload and improving resilience without introducing a single point of failure.
Stateless: The service does not retain session data between requests. Each request is handled independently, simplifying scaling and improving reliability.
Internal services
Rocket.Chat includes the following internal services:
Banner: Manages banner lifecycle operations, including creation, updates, and deletion.
LDAP: Handles LDAP (Lightweight Directory Access Protocol) integration, establishing connections to LDAP servers and synchronizing user data.
NPS: Works with the Banner service to manage Net Promoter Score (NPS) surveys, generate targeted banners, and process survey responses.
Room: Manages chat room lifecycle operations, including creation, updates, and deletion.
Omnichannel: Supports core omnichannel operations and workflows.
Omnichannel VoIP: Enables VoIP (Voice over Internet Protocol) calling within the omnichannel system.
Team: Manages team lifecycle operations, including creation, updates, and deletion.
UiKitCoreApp: Processes UIKit actions and events, leveraging the Apps-Engine for app-related workflows and Meteor Legacy for core functionality.
Push: Manages push notifications and delivers them to mobile applications.
Upload: Handles file uploads, including storage and file management.
Messaging: Manages message processing within Rocket.Chat.
Settings: Manages system settings, including creation, updates, and deletion.