Deploy Mattermost via Docker#
Available on all plans
self-hosted deployments
Install Docker#
If you don’t have Docker installed, follow the instructions below based on your operating system:
Install Docker for Mac.
Install Docker for Windows.
Follow the Install Docker Engine on Ubuntu documentation, or you can use the Docker package from the Ubuntu repositories:
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
Follow the Install Docker Engine on Fedora documentation, or you can use the Moby package (Moby is the FOSS upstream project to Docker) from the Fedora repositories:
sudo dnf install moby-engine
sudo systemctl start docker
Deploy Mattermost on Docker for production use#
You’ll need Docker Engine and Docker Compose (release 1.28 or later).
Important
The production configuration results in two separate containers: one for the database and one for the application. An optional third container results when using NGINX for reverse proxy.
Encountering issues with your Docker deployment? See the Docker deployment troubleshooting documentation for details.
To deploy Mattermost on Docker:
In a terminal window, clone the repository and enter the directory.
git clone https://github.com/mattermost/docker cd docker
Create your
.env
file by copying and adjusting theenv.example
file.cp env.example .env
Important
At a minimum, you must edit the DOMAIN
value in the .env
file to correspond to the domain for your Mattermost server.
Create the required directories and set their permissions.
mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes} sudo chown -R 2000:2000 ./volumes/app/mattermost
Configure TLS for NGINX (optional). If you’re not using the included NGINX reverse proxy, you can skip this step.
If creating a new certificate and key:
bash scripts/issue-certificate.sh -d <YOUR_MM_DOMAIN> -o ${PWD}/certs
To include the certificate and key, uncomment the following lines in your
.env
file and ensure they point to the appropriate files.#CERT_PATH=./certs/etc/letsencrypt/live/${DOMAIN}/fullchain.pem #KEY_PATH=./certs/etc/letsencrypt/live/${DOMAIN}/privkey.pem
If using a pre-existing certificate and key:
mkdir -p ./volumes/web/cert cp <PATH-TO-PRE-EXISTING-CERT>.pem ./volumes/web/cert/cert.pem cp <PATH-TO-PRE-EXISTING-KEY>.pem ./volumes/web/cert/key-no-password.pem
To include the certificate and key, ensure the following lines in your
.env
file points to the appropriate files.CERT_PATH=./volumes/web/cert/cert.pem KEY_PATH=./volumes/web/cert/key-no-password.pem
Configure SSO with GitLab (optional). If you want to use SSO with GitLab, and you’re using a self-signed certificate, you have to add the PKI chain for your authority. This is required to avoid the
Token request failed: certificate signed by unknown authority
error.To add the PKI chain, uncomment this line in your
.env
file, and ensure it points to yourpki_chain.pem
file:#GITLAB_PKI_CHAIN_PATH=<path_to_your_gitlab_pki>/pki_chain.pem
Then uncomment this line in your
docker-compose.yml
file, and ensure it points to the samepki_chain.pem
file:# - ${GITLAB_PKI_CHAIN_PATH}:/etc/ssl/certs/pki_chain.pem:ro
Deploy Mattermost.
Without using the included NGINX:
sudo docker compose -f docker-compose.yml -f docker-compose.without-nginx.yml up -d
To access your new Mattermost deployment, navigate to
http://<YOUR_MM_DOMAIN>:8065/
in your browser.To shut down your deployment:
sudo docker compose -f docker-compose.yml -f docker-compose.without-nginx.yml down
Using the included NGINX:
sudo docker compose -f docker-compose.yml -f docker-compose.nginx.yml up -d
To access your new Mattermost deployment via HTTPS, navigate to
https://<YOUR_MM_DOMAIN>/
in your browser.To shut down your deployment:
sudo docker compose -f docker-compose.yml -f docker-compose.nginx.yml down
Create your first Mattermost system admin user, invite more users, and explore the Mattermost platform.
Upgrade from mattermost-docker
#
The mattermost-docker GitHub repository is deprecated. Visit the mattermost/docker GitHub repository to access the official Docker deployment solution for Mattermost.
To migrate from an existing mattermost/mattermost-prod-app
image, we recommend migrating to either mattermost/mattermost-enterprise-edition
or mattermost/mattermost-team-edition
images, which are the official images supported by Mattermost. These images support PostgreSQL 11+ databases, which we know has been a long-running challenge for the community, and you will not lose any features or functionality by moving to these new images.
For additional help or questions, please refer to this issue.
Installing a different version of Mattermost#
Shut down your deployment.
Run
git pull
to fetch any recent changes to the repository, paying attention to any potentialenv.example
changes.Adjust the
MATTERMOST_IMAGE_TAG
in the.env
file to point your desired enterprise or team image version.Redeploy Mattermost.
Troubleshooting your production deployment#
Docker#
If deploying on an M1 Mac and encountering permission issues in the Docker container, redo the third step and skip this command:
sudo chown -R 2000:2000 ./volumes/app/mattermost
If having issues deploying on Docker generally, ensure the docker daemon is enabled and running:
sudo systemctl enable --now docker
To remove all data and settings for your Mattermost deployment:
sudo rm -rf ./volumes
PostgreSQL#
You can change the Postgres username and/or password (recommended) in the .env
file.
TLS & NGINX#
For an in-depth guide to configuring the TLS certificate and key for Nginx, please refer to this document in the repository.
Further help#
If you encounter other problems while installing Mattermost, please refer to our troubleshooting guide.
Trial Mattermost using Docker Preview#
Looking to a way to evaluate Mattermost in a non-production environment using Docker? We recommend using the Mattermost Docker Preview Image to install Mattermost in Preview Mode.
See the trial Mattermost using Docker documentation for details.