{% hint style="info" %} 👉 Trouble installing or deploying Rocket.Chat? Join our Weekly Technical Helpline to get real-time help from our team! {% endhint %}
Rocket.Chat can be hosted on our Cloud, installed from a variety of marketplaces, or manually installed on your own server.
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 choose a deployment method better.
{% hint style="success" %} We offer a variety of Deployment methods, and we recommend you set up using our Docker & Docker Compose guide for several reasons mentioned below. {% endhint %}
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, provide an SLA, answer questions, or 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.
{% hint style="info" %} Rocket.Chat's own cloud uses our official Docker images, which makes this installation method the most tested. {% endhint %}
Docker is widely used for packaging applications in containers and distributing 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 its own dependencies already installed and configured.
{% content-ref url="rapid-deployment-methods/docker-and-docker-compose/docker-containers/" %} docker-containers {% endcontent-ref %}
Scalability
Scaling your Rocket.Chat deployment using Docker with Docker Compose is quite easy as editing the compose file.
An instance of Rocket.Chat can be up and running easily by using our images or making use of the compose yml
file.
Maintaining a docker instance is pretty straightforward. Rocket.Chat 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, 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 virtualized to run multiple OS instances. The containers’ speed, agility, and portability make them offer definite performance advantages for our use case.
{% hint style="info" %} In some cases, it is acceptable to run containers inside a VM, as most PaaS only offer Virtual Private Servers. {% endhint %}
A containerized application usually starts in a couple of seconds. Virtual machines could take a couple of minutes.
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.
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.
{% embed url="https://www.backblaze.com/blog/vm-vs-containers/" %}
The usage of Docker-compatible containers orchestration/management systems such as Kubernetes, Rancher, or OpenShift can facilitate the scaling of containerized Rocket.Chat instances make 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, scaled installations (with more than one instance or more than 2000 users), to be orchestrated and/or managed with one of the following:
- SUSE Rancher
- Red Hat Openshift
- Kubernetes and Helm (Managed by a cloud platform such as AWS, Google Cloud, etc, or self-managed)
- docker-compose
At this time, no other container 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.
{% content-ref url="hardware-requirements.md" %} hardware-requirements.md {% endcontent-ref %}
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.
{% embed url="https://github.com/RocketChat/Rocket.Chat.Metrics" %}
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.
{% content-ref url="../../resources/get-support/" %} get-support {% endcontent-ref %}