Upgrade Mattermost Server
Available on all plans
self-hosted deployments
In most cases, you can upgrade Mattermost Server in a few minutes. However, the upgrade can take longer depending on several factors, including the size and complexity of your installation, and the version that you’re upgrading from.
Before you begin
Read these instructions carefully from start to finish.
Make sure that you understand how to prepare for your upgrade, familiarize yourself with all software and hardware requirements, read the important upgrade notes and that you understand each step of the upgrade process documented below before starting a Mattermost upgrade. If you have questions or concerns, you can ask on the Mattermost forum at https://forum.mattermost.com/.
Gather the following information before starting the upgrade:
Existing install directory - {install-path}: If you don’t know where Mattermost Server is installed, use the
whereis mattermost
command to find standard binary places and $PATH.This command won’t won’t return anything if
/opt/mattermost/bin
wasn’t added to the PATH.Alternatively, you can use the
find / -executable -type f -iname mattermost 2> /dev/null
command to find themattermost
binary.The output should be similar to
/opt/mattermost/bin/mattermost
.The install directory is everything before the first occurrence of the string
/mattermost
. In this example, the{install-path}
is/opt
.If that command doesn’t produce any results, it’s likely because your version is older; try
whereis platform
instead.
Location of your local storage directory: The local storage directory contains all the files that users have attached to their messages.
If you don’t know its location, open the System Console and go to Environment > File Storage, then read the value in Local Storage Directory.
Paths are relative to the
mattermost
directory. For example, if the local storage directory is./data/
then the absolute path is{install-path}/mattermost/data
.
Upgrade Mattermost Server
In a terminal window on the server that hosts Mattermost, change to your home directory. Delete any files and directories that might still exist from a previous download.
cd /tmp
Download the latest version of Mattermost Server. In the following command, replace
X.X.X
with the version that you want to download:wget https://releases.mattermost.com/X.X.X/mattermost-X.X.X-linux-amd64.tar.gz
Confirm no other Mattermost zip folders exist in your
/tmp
directory. If another version’s zip file does exist, delete or rename the file.ls -- mattermost*.gz
If anything except the new release is returned above, rename this file or delete it completely.
Extract the Mattermost Server files.
tar -xf mattermost*.gz --transform='s,^[^/]\+,\0-upgrade,'
The
transform
option adds a suffix to the topmost extracted directory so it does not conflict with the usual install directory.Stop your Mattermost server.
sudo systemctl stop mattermost
Back up your data and application. Make sure you’ve properly backed up your database before continuing with the upgrade. In case of an unexpected failure, you should be in a position to load a previous database snapshot.
Back up your database using your organization’s standard procedures for backing up MySQL or PostgreSQL.
Back up your application by copying into an archive folder (e.g.
mattermost-back-YYYY-MM-DD-HH-mm
).cd {install-path} sudo cp -ra mattermost/ mattermost-back-$(date +'%F-%H-%M')/
Remove all files except data and custom directories from within the current
mattermost
directory. We strongly recommend reading the important note below before executing the following command.sudo find mattermost/ mattermost/client/ -mindepth 1 -maxdepth 1 \! \( -type d \( -path mattermost/client -o -path mattermost/client/plugins -o -path mattermost/config -o -path mattermost/logs -o -path mattermost/plugins -o -path mattermost/data \) -prune \) | sort | sudo xargs rm -r
Important
By default, the following subdirectories will be preserved on upgrade:config
, logs
, plugins
, client/plugins
, and data
. Custom directories and ANY other directories that you’ve added to Mattermost are NOT preserved by default. Generally, these are TLS keys or other custom information, but can also include a different directories configured for local storage other than data
, as well as custom directories used to store attachments.
Before continuing with your upgrade, we strongly recommend that you:
Run
ls
on your Mattermost install directory to identify all default folders that exist prior to upgrading.
A default Mattermost installation has the following files and directories:
$ ls /opt/mattermost ENTERPRISE-EDITION-LICENSE.txt README.md client data i18n manifest.txt prepackaged_plugins NOTICE.txt bin config fonts logs plugins templates
Perform a dry run of deleting the contents of the
mattermost
folder and preserving only the specified directories and their contents by running the following command. It’s the same command listed above, but it omitssudo xargs rm -r
:
sudo find mattermost/ mattermost/client/ -mindepth 1 -maxdepth 1 \! \( -type d \( -path mattermost/client -o -path mattermost/client/plugins -o -path mattermost/config -o -path mattermost/logs -o -path mattermost/plugins -o -path mattermost/data \) -prune \) | sort
If you store TLSCert/TLSKey files or other information within your
/opt/mattermost
folder, you need to append-o -path mattermost/yourFolderHere
to the command above to avoid having to manually copy the TLSCert/TLSKey files from the backup into the new install.
sudo find mattermost/ mattermost/client/ -mindepth 1 -maxdepth 1 \! \( -type d \( -path mattermost/client -o -path mattermost/client/plugins -o -path mattermost/config -o -path mattermost/logs -o -path mattermost/plugins -o -path mattermost/data -o -path mattermost/yourFolderHere \) -prune \) | sort
If you’re using Bleve search, and the directory exists within the
mattermost
directory, the index directory path won’t be preserved using the command above.
You can either move the bleve index directory out from the
mattermost
directory before upgrading or, following an upgrade, you can copy the contents of the bleve index directory from thebackup
directory.You can then store that directory or re-index as preferred.
The bleve indexes can be migrated without reindexing between Mattermost versions. See our Configuration Settings documentation for details on configuring the bleve index directory.
Once you’ve completed all of the steps above (where applicable), you’re ready to execute the full command that includes xargs rm -r
to delete the files. Note that the following example includes -o -path mattermost/yourFolderHere
:
sudo find mattermost/ mattermost/client/ -mindepth 1 -maxdepth 1 \! \( -type d \( -path mattermost/client -o -path mattermost/client/plugins -o -path mattermost/config -o -path mattermost/logs -o -path mattermost/plugins -o -path mattermost/data -o -path mattermost/yourFolderHere \) -prune \) | sort | sudo xargs rm -r
Copy the new files to your install directory.
sudo cp -an /tmp/mattermost-upgrade/. mattermost/Note
The
n
(no-clobber) flag and trailing.
on source are very important. Then
(no-clobber) flag preserves existing configurations and logs in your installation path. The trailing.
on source ensures all installation files are copied.
Change ownership of the new files after copying them. For example:
sudo chown -R mattermost:mattermost mattermost
Note
If you didn’t use
mattermost
as the owner and group of the install directory, runsudo chown -hR {owner}:{group} {install-path}/mattermost
.If you’re uncertain what owner or group was defined, use the
ls -l {install-path}/mattermost/bin/mattermost
command to obtain them.
If you want to use port 80 or 443 to serve your server, and/or if you have TLS set up on your Mattermost server, you must activate the
CAP_NET_BIND_SERVICE
capability to allow the new Mattermost binary to bind to ports lower than 1024. For example:
sudo setcap cap_net_bind_service=+ep ./mattermost/bin/mattermost
Start your Mattermost server.
sudo systemctl start mattermost
Remove the temporary files.
sudo rm -r /tmp/mattermost-upgrade/ sudo rm -i /tmp/mattermost*.gz
If you’re using a high availability deployment, you need to apply the steps above on every node in your cluster. Once complete, the Config File MD5 columns in the high availability section of the System Console should be green. If they’re yellow, please ensure that all nodes have the same server version and the same configuration.
If they continue to display as yellow, trigger a configuration propagation across the cluster by opening the System Console, changing a setting, and reverting it. This will enable the Save button for that page. Then, select Save. This will not change any configuration, but sends the existing configuration to all nodes in the cluster.
After the server is upgraded, users might need to refresh their browsers to experience any new features.