Regardless of the platform you wish to deploy on or the method of deployment, you may want to make the best choices in either case. See in this section our official recommendations, the necessary requirements to run a Rocket.Chat instance and the various properties we judge on to better choose a deployment method.
We offer a variety of Deployment methods, and we recommend you set up using our Docker & Docker Compose guide for several reasons mentioned below.
In order to obtain official support from our team, we have a minimum set of requirements. These requirements are necessary for us to access essential system information, to provide an SLA, to answer questions, or to provide a solution for the problem.
Only installations matching these minimum requirements can be covered by our SLAs and our paid Support Policy, some requirements may vary depending on the installation size as described in the following sections.
In order to eliminate environmental issues of missing, outdated, or mismatching dependencies, specific operating system issues, or problems during manual installations, we strongly recommend using our official Docker images.
Rocket.Chat's own cloud uses our official Docker images, which makes this installation method the most tested.
Docker is widely used to package applications in containers and distribute them as images, providing abstraction and isolation layers from the OS (operational system). It allows the application to be shipped with a specific version of the OS compatibility layer and his own dependencies already installed and configured.
Scaling your Rocket.Chat deployment using Docker with Docker Compose is quite easy as editing the compose file.
Ease of Deployment
An instance of Rocket.Chat can be up and running easily by using our images or making use of the compose yml file.
Ease of Maintenance and Support
Maintaining a docker instance is pretty straight foward. RocketChat offers both official and community support for all Docker related issues.
We recommend running multiple application processes to maximize the usage of all available cores. Although you can use either Virtual Machines or containers to do so, we recommend and only support the usage of Docker containers.
Virtual machines and containers differ in several ways, but the primary difference is that containers provide a way to virtualize an OS so that multiple workloads can run on a single OS instance. With VMs, the hardware is being virtualized to run multiple OS instances. Containers’ speed, agility, and portability make them offer definite performance advantages for our use case.
In some cases, it is acceptable to run containers inside a VM, as most PaaS only offer Virtual Private Servers.
Performance benefits of containers
Faster startup time
A containerized application usually starts in a couple of seconds. Virtual machines could take a couple of minutes.
Better resource distribution
Containers use up only as many system resources as they need at a given time. Virtual machines usually require some resources to be permanently allocated before the virtual machine starts. For this reason, virtual machines tie up resources on the host, even if they are not actually using them. Containers allow host resources to be distributed in an optimal way.
Direct hardware access
Applications running inside virtual machines generally cannot access hardware like graphics cards on the host in order to speed processing. containerized applications can.
With virtual machines, you have to install an entire guest operating system, which duplicates a lot of the components already running on your host server. Containers don't require this.
Docker Containers vs. VMs: Pros and Cons of Containers and Virtual Machines
Backblaze Blog | Cloud Storage & Cloud Backup
The usage of Docker-compatible containers orchestration/management systems such as Kubernetes, Rancher, or OpenShift can facilitate the scaling of containerized Rocket.Chat instances making it possible to distribute load among different physical bare-metal servers or virtual machines.
Rocket.Chat's own cloud uses this approach to manage cloud-hosted instances with a high level of reliability and flexibility, we leverage the same expertise to provide documentation on how to configure and deploy scaled installations.
We require, for scaled installations (with more than one instance or more than 2000 users), to be orchestrated and/or managed with one of the following:
Red Hat Openshift
Kubernetes and Helm (Managed by a cloud platform such as AWS, Google Cloud, etc, or self-managed)
At this time, no other containers orchestration/management technologies will be supported by our Support team for any issues related to scaled installations.
The minimum hardware requirements are described on the page below.
Production deployments should continually collect metrics regarding the installation's instances and database. Rocket.Chat supports and recommends the industry-standard Prometheus + Grafana monitoring stack. Grafana dashboards are available in the Metrics repository.
GitHub - RocketChat/Rocket.Chat.Metrics: Monitoring setup for Rocket.Chat servers
Rocket.Chat cuts a new release every month, please check the link below for more information about the release cycles and make sure you are running a supported version.