# Mattermost. Часть 1. Установка и запуск

Создание удобной и функциональной среды для общения участников внутри команды — важная задача в ходе разработки. Для этого компании используют корпоративный мессенджер.

Mattermost — быстрый и удобный корпоративный мессенджер. Он устанавливается напрямую на ваш сервер и хранит все данные — от истории переписки до пересылаемых файлов — в созданной для него базе данных. Администратор Mattermost может полноценно управлять всеми учётными записями: создавать и удалять, открывать доступ к определённым диалогам, ограничивать доступ и т.д.

В первой части нашей инструкции мы расскажем об установке Mattermost на сервер: установим само приложение, создадим для него базу данных и пользователя, под которым приложение будет подключаться к базе, развернём сервер Mattermost и зарегистрируемся в программе. В качестве СУБД будем использовать MySQL, но Mattermost поддерживает работу и с PostgreSQL.

Для начала работы нам понадобится только подготовленный к работе сервер под управлением Ubuntu.

# Подготовка к установке

Начнём установку мессенджера с подготовки базы данных для него. Обновим пакеты apt и установим MySQL:

sudo apt update
sudo apt upgrade
sudo apt install mysql-server

После завершения установки MySQL запустим встроенный скрипт-настройщик безопасности:

sudo mysql_secure_installation

В ходе работы он предложит задать новый пароль root-пользователя, запретить удалённое подключение root-пользователя к базе, удалить анонимных пользователей и тестовые базы данных, которые могли быть созданы ранее или остаться от предыдущих установок. Рекомендуем согласиться со всеми предложенными действиями.

При первом запуске скрипт также предложит выбрать уровень безопасности задаваемых паролей — рекомендуем внимательно ознакомиться с предложенными уровнями и выбрать тот, с которым вам будет удобнее всего работать.

После завершения работы скрипта зайдём в MySQL, чтобы создать нового пользователя для Mattermost:

sudo mysql

По умолчанию в MySQL выключен режим авторизации, подразумевающий введение пароля, однако при указании sudo в начале командной строки вход root-пользователя будет произведён без пароля.

После входа в консоль MySQL создадим нового пользователя для Mattermost:

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

Запись «@%» означает localhost — Mattermost и MySQL установлены на одной машине. Если они будут установлены на разных серверах, то вместо % нужно указать IP-адрес, с которого будет производиться подключение.

При задании пароля будьте внимательны — его надёжность будет проверяться в зависимости от выбранного при настройке системы уровня. Проверить заданный уровень надёжности пароля и требования к нему можно командой:

show variables like 'validate_password%';

# Output

+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+

В данном случае установлен средний уровень безопасности, требующий длины пароля в 8 символов, с одной цифрой, одной заглавной буквой и одним спецсимволом.

После создания нового пользователя создадим базу данных для него:

create database mattermost

Теперь передадим новому пользователю все права на эту базу:

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

После этого обновим доступные привилегии, и можно будет выходить из MySQL:

flush privileges
exit

Подготовительные работы по предварительной настройке сервера окончены, можно переходить к установке Mattermost.

# Установка Mattermost

Устанавливать будем с официального сайта Mattermost. Для этого выберем необходимую версию из списка доступных и скачаем архив с нужной версией на сервер:

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

Здесь нужно заменить x.x.x на номер версии, который хотите установить.

После скачивания архива распакуем его и переместим полученную папку в новую директорию:

sudo tar -xvzf mattermost-X.X.X-linux-amd64.tar.gz
sudo mv mattermos /opt

# Подготовка к запуску

Сначала создадим директорию, в которой будут размещаться все данные Mattermost — диалоги, пересылаемые файлы и т.д. Позаботьтесь заранее, чтобы эта директория имела доступ к достаточному объёму дискового пространства:

sudo mkdir /opt/mattermost/data

После этого создадим нового пользователя для работы с Mattermost и передадим ему все права на управление папками:

sudo useradd --system --user-group mattermost
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R g+w /opt/mattermost

Когда новый пользователь создан, можно переходить к настройке конфигурационного файла Mattermost. Откроем его в любом текстовом редакторе:

sudo vim /opt/mattermost/config/config.json

Это очень большой текстовый файл, отвечающий за работу сервера Mattermost. Здесь нам нужно изменить всего две строки.

Найдём раздел переменных SqlSettings. В строке DriverName нужно указать используемую СУБД, в нашем случае это будет mysql, а в строке DataSource, отвечающей за подключение к базе данных, укажем следующие параметры:

username:<password>@<host-name-or-IP>:3306/mattermost?charset=utf8mb4,utf8&writeTimeout=30s"

Здесь:

  • username:<password> — имя и пароль mysql-пользователя, созданного для работы с Mattermost.

  • <host-name-or-IP>:3306 — адрес и порт, по которому доступна база данных. Если вы устанавливаете Mattermost на тот же сервер, на котором создана база данных для него, то адресом будет localhost. Проверить номер порта, который слушает MySQL, можно командой sudo netstat -tulpn.

  • mattermost — имя базы данных, созданной для Mattermost.

Сохраняем сделанные изменения и проверяем работу Mattermost. Для этого перейдём в папку, содержащую распакованный архив Mattermost:

cd /opt/mattermost

Запустим исполняемый файл от имени специально созданного для этого пользователя:

sudo -u mattermost ./bin/mattermost

Если всё было сделано правильно, то после старта сервера на экране должно появиться сообщение:

Server is listening on :8065

Сервер запущен и работает! Остановим его ctrl+Cи закончим настройку.

# Запуск веб-интерфейса

Создадим системный файл, который позволит нам запускать Mattermost в качестве сервиса:

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

В общем случае содержимое файла будет следующим:

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

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

[Install]
WantedBy=mysql.service

Если в качестве СУБД вы используете PostgreSQL, то необходимо во всех соответствующих строчках указать его вместо mysql.service.

Если MySQL и Mattermost установлены на одном сервере, то нужно удалить строки After=mysql.service и BindsTo=mysql.service, а в строке WantedBy указать значение multi-user.target.

После завершения редактирования сохраняем новый файл и добавляем новый сервис в систему:

sudo systemctl daemon-reload

Теперь можно запускать Mattermost:

sudo systemctl start mattermost.service

Ваша версия Mattermost активна и доступна для начала работы. Проверить её работоспособность можно, зайдя в браузере по адресу your_server_ip:8065. Вы должны увидеть стартовую страницу Mattermost:

«mmstart»

Здесь 8065 — стандартный порт для работы Mattermost.

Если вы используете VPS на Джино и не подключаете для него выделенный IP, то создайте перенаправление для порта 8065. В разделе УправлениеПеренаправление портов укажите номер порта 8065 и после создания перенаправления в адресной строке браузера указывайте новый номер порта.

О первичной настройке Mattermost — создании новых пользователей, управлении правами доступа и подключении Nginx в качестве обратного прокси — читайте во второй части нашей инструкции.