Tired of using Slack on Linux? Wanting to host your own Team-based message service on a server? You can set up Mattermost on Linux and use it instead. It’s an open-source alternative to Slack with similar features!

Before we begin

In this tutorial, we’ll be focusing on setting up the Mattermost server software on Ubuntu server 18.04 LTS (long-term support). Therefore, if you have a Linux server (or desktop computer that can stay on for long periods of time), it is imperative that you go to the official website, download Ubuntu Server and install it before we begin.

Why Ubuntu server? The reason we are focusing on Ubuntu is simple: it’s one of the easiest Linux server operating systems to get going. Furthermore, it’s LTS releases ensure that users will have support for their Mattermost setup for at least five years.

Note: If you’re interested in setting up the server component of Mattermost on Linux and don’t use Ubuntu Server, you’ll be able to find help on the official website.

Set up the Database

Mattermost needs a MySQL database software set up on Ubuntu server to function correctly. To install it open up a terminal and log into the server with SSH.

Once you’ve got a working terminal session open, use the Apt package manager to install MySQL to the system (if you don’t already have it).

‘);
if (navigator.appVersion.indexOf(“Mac”)!=-1) document.write(”);

RECOMMENDED FOR YOU

sudo apt install mysql-server

MySQL will take a bit of time to set up on your Ubuntu machine. When it’s done, run the secure installation command to complete the installation.

sudo mysql_secure_installation

MySQL is done installing on Ubuntu server. The next step in the database creation process is to log in to the command-line interface as root.

Note: Be sure to use the root password set during the secure installation part of the guide.

sudo mysql

Make a new user for the SQL database. The username is mmuser.

create user 'mmuser'@'%' identified by 'mmuser-password';

Create the user mattermost database in MySQL.

create database mattermost;

Grant the mmuser user account the ability to access the mattermost database.

grant all privileges on mattermost.* to 'mmuser'@'%';

Finally, exit the MySQL command-line interface and return to Bash.

exit

Install Mattermost server software

Mattermost server is hosted on the official website. It is possible to download it directly to your server with the wget program. To get the latest release of the server software, open up a terminal and run the following command.

Note: Mattermost has several versions available. If you need a newer version than what is covered in this guide, head over to the official download page and replace the link we used below with your desired release.

wget https://releases.mattermost.com/5.5.0/mattermost-5.5.0-linux-amd64.tar.gz

The server software is done downloading on your Ubuntu server. It’s now time to extract it from the TarGZ archive.

tar -xvzf mattermost*.gz

sudo mv mattermost /opt

sudo mkdir /opt/mattermost/data

Configure Mattermost server

The server software is set up on Ubuntu, but it won’t run until we configure it correctly. Configuration starts by creating the mattermost user.

sudo useradd --system --user-group mattermost

Give the new mattermost user full access to the Mattermost server software.

sudo chown -R mattermost:mattermost /opt/mattermost

sudo chmod -R g+w /opt/mattermost

The user is set up. Now you must tell Mattermost what database the server should use. In the terminal window, open the following file with Nano.

sudo nano /opt/mattermost/config/config.json

Find this code in the file:

"mmuser:mostest@tcp(dockerhost:3306)/mattermost_test?charset=utf8mb4,utf8readTimeout=30swriteTimeout=30s"

Delete the code above from the configuration file and replace it with the code listed below.

Note: you must change mmuser-password with the mmuser SQL password you set earlier. You must also add in your servers hostname or IP address in host-name-or-IP.

"mmuser:mmuser-password@tcp(host-name-or-IP:3306)/mattermost?charset=utf8mb4,utf8readTimeout=30swriteTimeout=30s"

With all the edits made, it’s time to start up Mattermost to test it and make sure it runs correctly.

cd /opt/mattermost

sudo -u mattermost ./bin/mattermost

If the server runs correctly, close it by pressing Ctrl + C.

Create Mattermost systemd service

For Mattermost to run without any interaction with the user, a systemd service file is necessary. In the terminal, use the touch command and make a new systemd service.

sudo touch /lib/systemd/system/mattermost.service

Open up the new service file in Nano.

sudo nano /lib/systemd/system/mattermost.service

Paste the code below into Nano.

[Unit]
Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.service

[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=mysql.service

Save the edits by pressing Ctrl + O, and exit by pressing Ctrl + X. Then, load up the new Mattermost systemd service.

sudo systemctl daemon-reload

sudo systemctl start mattermost.service

sudo systemctl enable mattermost.service

Access Mattermost

The Mattermost server is up and running. Access it and start using the service by visiting the following URL.

http://localhost:8065

Alternatively, follow our guide to get Snap packages working. Then, install Mattermost desktop with the command below.

sudo snap install mattermost-desktop