Deploy with Docker & Docker Compose
Deploying Rocket.Chat with Docker and Docker Compose is a straightforward and highly recommended deployment method due to its simplicity and flexibility. This guide will walk you through the essential steps, whether you're a seasoned Docker expert or new to containerization, ensuring a smooth deployment for your Rocket.Chat workspace.
In this guide, you'll learn how to:
Preparation Steps
Installing Docker and Docker Compose
Ensure you have Docker and Docker-compose (v2 is required) installed and operational. If you don't have them installed, you can conveniently set them up using Docker's official helper script:
curl -L https://get.docker.com | shTo run Docker commands without using sudo, add the current user to the Docker group and then reboot using the following commands:
sudo usermod -aG docker $USER
sudo rebootDeploy Rocket.Chat on Docker
Fetching Compose file
Navigate to your preferred directory and create a
compose.ymlfile following our example. Alternatively, you can use thecurlcommand to download the examplecompose.ymlfile by executing this command:
curl -L https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/compose.yml -OEditing Environment Variables
Modifying the configurations in the compose file directly is strongly discouraged. Instead, use environment variables. You can set environment variables using a .env file.
Remember to uncomment the variables you are updating in the .env file.
In your project directory, create a
.envfile with this command and paste the contents of this example file
sudo nano .envSet the
RELEASEvariable in the.envto your desired Rocket.Chat version.
Edit
ROOT_URLfrom the defaulthttp://localhost:3000to match your domain name or IP address.If you have a registration token to register the workspace automatically, you can add it to the
.envfile like this:
REG_TOKEN={your token here}If you are using MongoDB Atlas as the database provider, edit the value of the
MONGO_URLvariable to be your connection string in this format:
MONGO_URL=mongodb://<user>:<pass>@host1:27017,host2:27017,host3:27017/<databaseName>?replicaSet=<replicaSet>&ssl=true&authSource=adminSave the
.envfile and start up the container by executing this command:
docker compose up -dThis command will:
Start a MongoDB service named
mongodb.Start a service
rocketchat, which will also wait formongodbto be ready.
Once the container is running, visit http://localhost:3000 on your browser. You can now explore your Rocket.Chat workspace and invite other users.
Start & Stop Docker Compose
To stop your workspace from running, execute this command:
docker compose downTo start your docker-compose container, run this command:
docker compose up -dTo see the log/status of your Rocket.Chat container, execute this command:
docker compose logs -f rocketchatRocket.Chat Docker Images
Official image (stable and tested)
The Official Docker Images Repository is responsible for maintaining and controlling Rocket.Chat's official stable image through Docker. It is also reviewed by the Docker committee.
docker pull registry.rocket.chat/rocketchat/rocket.chatLatest Release Image
This is an image that holds the latest stable Rocket.Chat updates on the docker repository. The release may be from the develop or master branch.
docker pull registry.rocket.chat/rocketchat/rocket.chat:latestPreview Image
The Rocket.Chat preview image deploys a container with a database inside. It's useful for quickly trying or running tests, not requiring a dedicated database installation.
Specific Release Image
You can set up your Rocket.Chat workspace with a specific release image. Select the release you need from the docker hub tags and use it to run the following command:
docker pull registry.rocket.chat/rocketchat/rocket.chat:<release-tag>Bleeding-edge untested develop build image
This is an image maintained at Rocket.Chat's docker repository was updated from the develop (untested) branch, containing the latest updates for those who want to work with the newest features.
docker pull registry.rocket.chat/rocketchat/rocket.chat:developUpdating Rocket.Chat on Docker
Updating the Rocket.Chat image doesn't affect your data since it exists in the Mongo image. Ensure that the version of your MongoDB is compatible with the intended release before proceeding with the update.
Using Docker & Docker compose, you can update your rocketchat docker image to the latest or preferred version of Rocket.Chat.
To update your Rocket.Chat version,
For a specific version, modify the
RELEASEvariable in the.envfile to point to the docker image tag of that version. Alternatively, you can edit thecompose.ymlfile to point to the desired Rocket.Chat version.
For the latest version, use
latestas theRELEASEvariable in the.envfile. Alternatively, you can pull the Rocket.Chat image directly with thelatesttag with this command:
docker pull registry.rocket.chat/rocketchat/rocket.chat:latestNow, stop, remove and restart the existing container with these commands:
docker compose stop rocketchat
docker compose rm rocketchat
docker compose up -d rocketchatEnable HTTPs
You can secure your Rocket.Chat docker instance with TLS certificates from Let's Encrypt. Using Traefik as a reverse proxy, the certificates are automatically generated, enabling safe access to your Rocket.Chat instance via HTTPS on your specified domain.
To get HTTPS, ensure the correct A record (optionally CNAME) is set for your domain going to your server IP.
Update the following variables in your
.envfile. If you don't have one, create a .env file following our example.LETSENCRYPT_EMAIL: Your required email for the TLS certificates.DOMAIN: Your domain or subdomain name only. Avoid adding https:// or any trailing slashes. Confirm that this domain resolves to the server IP address.RELEASE: Your preferred Rocket.Chat release. See the releases page to know more about our releases.DOMAIN: Set the value to "https://your-domain.com," replacing "your-domain.com" with the domain name you want to use.BIND_IP: Set to127.0.0.1.
LETSENCRYPT_EMAIL= # your email, required for the tls certificates
# set this to your domain name or subdomain, not trailing slashes or https://, just the domain
# make sure it actually resolves to your droplet ip
DOMAIN=
RELEASE= # pin the rocketchat version, at the time of writing, prefer 6.0.0
ROOT_URL= # set this to https://${DOMAIN} replace ${DOMAIN} with the actual domain
BIND_IP=127.0.0.1Download the traefik template by running the following command:
curl -LO \
https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/traefik.ymlRecreate the existing Rocket.Chat container
docker compose up -d rocketchat --force-recreateStar traefik
docker compose -f traefik.yml up -dWait for the TLS certificates to generate and Rocket.Chat to restart. Then, access your Rocket.Chat instance securely at https://your-domain.com, using the actual domain name you configured.
Docker Mongo Backup and Restore
To back up your MongoDB database in docker,
Run the following command on your terminal to list out all running containers:
docker ps -aTake note of your mongo container name.
Run this command to dump the database into a binary file
db.dump
docker exec <container_name> sh -c 'mongodump --archive' > db.dumpWhen successful, you should see db.dump file in the current directory.
To restore the backup, run the following command:
docker exec -i <container_name> sh -c 'mongorestore --archive' < db.dumpCongratulations on successfully deploying Rocket.Chat using Docker! You can now communicate effortlessly with your team members on your workspace. Visit the accessing your workspace guide to configure your workspace and onboard other team members.
Last updated