Установка Mattermost в Ubuntu 20.04

Mattermost – это открытая платформа для совместной работы и обмена сообщениями, созданная с учетом требований безопасности и конфигурируемости, по функционалу близкая к Discord или Slack. Mattermost предлагает групповой, потоковый и индивидуальный обмен сообщениями, неограниченную историю поиска, совместное использование файлов, двухфакторную авторизацию и уведомления. Mattermost также поддерживает веб-хуки и интеграцию с ботами. Он доступен с любого современного устройства благодаря отзывчивому веб-интерфейсу и специальным мобильным приложениям.

Многие команды по достоинству оценили простоту и возможности открытой платформы Mattermost

В этом мануале мы настроим Mattermost Team Edition на сервере Ubuntu 20.04. Сначала мы установим пакет и разместим его на своем домене, защищенном с помощью бесплатного TLS-сертификата Let’s Encrypt. Затем мы включим уведомления по электронной почте, настроим брендинг и создадим доску сообщений (в Mattermost они называются командами).

Требования

  • Сервер Ubuntu 20.04: как минимум 2 ГБ RAM, root доступ и учетная запись sudo. Вы можете настроить сервер, следуя этому мануалу.
  • Мы как раз хотели предложить Вам VPS с Ubuntu, который подойдёт для Вашего проекта всего от 4 евро в месяц!
  • Сервер MariaDB. Чтобы узнать, как это сделать, читайте мануал Установка MariaDB в Ubuntu 20.04.
  • MTA Postfix в режиме исходящей почты. Вы будете использовать ее, чтобы включить отправку уведомлений Mattermost. Читайте мануал Установка и настройка SMTP-сервера исходящей почты Postfix в Ubuntu 20.04.
  • Вебсервер Nginx (инструкции вы найдете в мануале Установка Nginx в Ubuntu 20.04, разделы 1-4).
  • Зарегистрированное доменное имя для хоста Mattermost, указывающее на ваш сервер (мы используем условный домен mattermost.your-domain). Вы можете приобрести домен на Namecheap, получить его бесплатно на Freenom или воспользоваться услугами другого провайдера.

Примечание: Чтобы SMTP-сервер Postfix работал правильно, записи PTR вашего сервера должны соответствовать your_domain. Вы можете проверить имя хоста сервера, введя hostname в командную строку. Результат покажет имя, которое вы дали своему серверу при его создании.

1: Установка Mattermost

Сначала мы должны установить Mattermost. Это включает в себя загрузку последней версии пакета, настройку взаимодействия с MariaDB и создание сервиса systemd, благодаря которому платформа будет постоянно работать в фоновом режиме.

Читайте также:

Загрузка Mattermost

Все данные Mattermost будут храниться в папке по имени ~/mattermost. Создайте такую папку:

mkdir ~/mattermost

Перейдите в нее:

cd ~/mattermost

Откройте официальный сайт Mattermost и скопируйте ссылку на последнюю версию. На момент написания мануала последней была 5.24.2. Загрузите ее с помощью wget:

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

Затем распакуйте архив:

tar -xvzf mattermost*.gz

Эта команда распакует все архивные файлы в каталоге, чьи имена начинаются с mattermost.

Вы получите папку с двоичными файлами Mattermost, имя которой будет совпадать с исходным файлом, который вы скачали. Скопируйте папку в /opt, чтобы вы могли получить к ней доступ в системе:

sudo cp -r mattermost /opt

Затем создайте папку для Mattermost, в которой будут храниться пользовательские данные:

sudo mkdir /opt/mattermost/data

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

Затем создайте пользователя и группу для Mattermost:

sudo useradd --system --user-group mattermost

Сделайте нового пользователя и его группу владельцами папки данных:

sudo chown -R mattermost:mattermost /opt/mattermost

Это нужно для того, чтобы в случае взлома ограничить злоумышленника каталогом Mattermost: так он не сможет быстро получить доступ к остальной части системы.

Теперь откройте группам право на изменение каталога /opt/mattermost:

sudo chmod -R g+w /opt/mattermost

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

Настройка базы данных MariaDB для Mattermost

Откройте командную строку MariaDB:

sudo mysql

Создайте для базы данных пользователя mmuser, выполнив следующую команду (замените your_mmuser_password сложным паролем):

CREATE USER 'mmuser'@'%' IDENTIFIED BY 'your_mmuser_password';

Затем создайте базу данных для Mattermost:

CREATE DATABASE mattermost;

Чтобы пользователь mmuser мог получить доступ к базе данных mattermost, предоставьте ему права доступа:

GRANT ALL PRIVILEGES ON mattermost.* TO 'mmuser'@'%';

Затем перезагрузите таблицы привилегий, чтобы сразу применить изменения:

FLUSH PRIVILEGES;

Когда вы закончите, закройте командную строку БД:

exit

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

Откройте файл в редакторе:

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

Найдите строки, которые выглядят следующим образом:

. . .
"DriverName": "..."
"DataSource": "..."
. . .

Измените их, как показано ниже, заменив your_mmuser_password паролем, который вы установили для пользователя mmuser:

"DriverName": "mysql"
"DataSource": "mmuser:your_mmuser_password@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"

Сохраните и закройте файл.

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

Создание сервиса systemd для Mattermost

Чтобы Mattermost всегда работал в фоновом режиме, вам нужно запустить его как сервис systemd.

Хранить конфигурацию сервиса мы будем в файле mattermost.service, в каталоге /lib/systemd/system, где systemd хранит все свои сервисы. Создайте его с помощью текстового редактора:

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

Вставьте в файл следующие строки:

[Unit] Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.service
[Service] Type=notify
User=mattermost
Group=mattermost
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
LimitNOFILE=49152
[Install] WantedBy=mysql.service

Файл начинается с описания сервиса. Затем мы объявляем, что сервис mysql должен запускаться перед сервисом Mattermost, поскольку Mattermost для работы требуется база данных. После раздела [Unit] определяется тип сервиса. Здесь благодаря значению notify процесс будет сообщать system о загрузке. Мы указываем команду, которая будет выполняться, и устанавливаем политику перезапуска always. Также здесь определяется рабочий каталог процесса и указывается, от имени какого пользователя и группы он должен работать.

В разделе [Install] в качестве значения параметра WantedBy нужно указать сервис базы данных, чтобы обеспечить перезапуск Mattermost вместе с БД. Пропуск этого параметра может вызвать проблемы при автоматическом обновлении базы данных – Mattermost может перестать работать без перезапуска.

Сохраните и закройте файл, а затем перезагрузите все сервисы, выполнив следующую команду:

sudo systemctl daemon-reload

Убедитесь, что сервис mattermost загружен правильно:

sudo systemctl status mattermost

Вы увидите следующий результат:

mattermost.service - Mattermost
Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; vendor preset: enabled)
Active: inactive (dead)

Если systemd выдает ошибку, проверьте имя файла сервиса, его расположение и содержимое.

Затем включите сервис Mattermost:

sudo systemctl enable mattermost

Мы установили Mattermost, настроили его для поддержки базы данных MariaDB и создали для него сервис systemd. Идем дальше.

2: Размещение Mattermost на домене

Теперь мы настроим Nginx как обратный прокси-сервер для Mattermost.

Перед настройкой Nginx необходимо указать свой домен в главном конфигурационном файле Mattermost. Откройте его для редактирования:

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

Найдите строку, которая выглядит следующим образом:

. . .
"SiteURL": ""
. . .

Вставьте в кавычки имя вашего домена:

...
"SiteURL": "http://mattermost.your_domain"
...

Сохраните и закройте файл.

Как вы уже знаете, конфигурационные файлы сайта Nginx хранит в /etc/nginx/sites-available; позже их нужно связать символической ссылкой с каталогом /etc/nginx/sites-enabled, чтобы активировать.

Хранить конфигурацию размещения Mattermost на вашем домене мы будем в файле mattermost.conf в каталоге /etc/nginx/sites-available. Создайте его в своем редакторе:

sudo nano /etc/nginx/sites-available/mattermost.conf

Добавьте такие строки:

upstream backend {
server localhost:8065;
keepalive 32;
}
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;
server {
listen 80;
server_name mattermost.your_domain;
location ~ /api/v[0-9]+/(users/)?websocket$ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 50M;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
client_body_timeout 60;
send_timeout 300;
lingering_timeout 5;
proxy_connect_timeout 90;
proxy_send_timeout 300;
proxy_read_timeout 90s;
proxy_pass http://backend;
}
location / {
client_max_body_size 50M;
proxy_set_header Connection "";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
proxy_read_timeout 600s;
proxy_cache mattermost_cache;
proxy_cache_revalidate on;
proxy_cache_min_uses 2;
proxy_cache_use_stale timeout;
proxy_cache_lock on;
proxy_http_version 1.1;
proxy_pass http://backend;
}
}

Замените mattermost.your-domain вашим настоящим доменом, а затем сохраните и закройте файл.

В этом файле сказано, что Nginx должен прослушивать HTTP-порт 80. Затем мы указываем server_name, который сообщает Nginx, для какого домена принимать запросы и применять эту конкретную конфигурацию. Следующие два дополнительных блока настраивают прокси-соединения, чтобы Mattermost работал правильно.

Чтобы включить эту конфигурацию сайта, нужно создать симлинк на нее в папке /etc/nginx/sites-enabled, запустив:

sudo ln -s /etc/nginx/sites-available/mattermost.conf /etc/nginx/sites-enabled/mattermost.conf

Чтобы проверить правильность конфигурации, выполните следующую команду:

sudo nginx -t

Если в настройках нет ошибок или опечаток, вы увидите следующий результат:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Чтобы конфигурация вступила в силу, необходимо перезапустить Nginx:

sudo systemctl restart nginx

Затем запустите сервис Mattermost:

sudo systemctl start mattermost

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

Теперь ваша установка Mattermost доступна в сети по вашему домену. Давайте установим бесплатный TLS сертификат Let’s Encrypt.

3: Защита домена

В этом разделе вы защитите свой домен с помощью TLS сертификата Let’s Encrypt, который можно получить с помощью клиента Certbot.

Certbot должен быть уже установлен (если вы выполнили все предварительные требования к мануалу), нам осталось только установить его плагин Nginx:

sudo apt install python3-certbot-nginx

Также в рамках выполнения предварительных требований вы включили ufw (Uncomplicated Firewall) и настроили его для поддержки незашифрованного HTTP-трафика. Чтобы иметь доступ к защищенному сайту, вам необходимо настроить его на прием зашифрованного трафика, выполнив следующую команду:

sudo ufw allow https

Результат будет выглядеть так:

Rule added
Rule added (v6)

Теперь необходимо перезагрузить брандмауэр, чтобы конфигурация вступила в силу:

sudo ufw reload

Команда выведет на экран:

Firewall reloaded

Чтобы запросить сертификаты для вашего домена, выполните следующую команду:

sudo certbot --nginx -d mattermost.your-domain

Эта команда запускает клиент certbot для запроса сертификата; имя домена передается с помощью флага -d. Флаг –nginx позволяет клиенту автоматически изменять конфигурацию сайта Nginx для поддержки HTTPS. Не забудьте заменить условный домен mattermost.your-domain своим настоящим доменом.

Если вы запускаете Certbot впервые, вам будет предложено указать адрес электронной почты для срочных уведомлений и принять условия использования EFF. Certbot запросит сертификаты для вашего домена у Let’s Encrypt, а затем предложит перенаправить весь HTTP-трафик на HTTPS:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Рекомендуем выбрать второй вариант, чтобы сайт был доступен только по зашифрованным соединениям.

Вы получите такой вывод:

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/mattermost.your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/mattermost.your_domain/privkey.pem
Your cert will expire on 2020-09-28. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le

Это означает, что Certbot успешно сгенерировал сертификаты TLS и применил их к конфигурации Nginx вашего домена.

Поскольку теперь к вашему домену можно получить доступ по HTTPS, вам необходимо исправить URL-адрес своего домена в конфигурации Mattermost. Откройте файл для редактирования:

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

Снова найдите строку, которая выглядит так:

. . .
"SiteURL": "http://mattermost.your_domain"
. . .

Измените http на https:

. . .
"SiteURL":
"https://mattermost.your-domain"
. . .

Это все, что вам нужно отредактировать, сохраните и закройте файл.

Теперь вы можете перезагрузить домен Mattermost в браузере: после этого вы должны увидеть зеленый замочек слева от адреса сайта, что означает, что вы защитили ваши соединения.

Теперь, когда ваши сертификаты TLS успешно настроены и домен доступен по зашифрованным соединениям, мы можем приступать к настройке Mattermost.

4: Настройка Mattermost

В этом разделе мы создадим команду в Mattermost, настроим уведомления по электронной почте и изменим брендинг сервера.

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

Чтобы изменить это, выберите Create a team. Вы увидите страницу, которая предложит назвать эту команду (например, bestteam).

Введите любое имя и нажмите Next. Затем Mattermost попросит вас указать веб-адрес для вашей команды на этом домене, он будет точкой доступа для вашей команды в Mattermost (например, https://mattermost.your-domain/bestteam)

Вы можете оставить URL без изменений. Когда вы закончите, нажмите Finish. Mattermost создаст вашу команду. После того, как вы пропустите справку, вы увидите основной интерфейс, в котором вы будете проводить большую часть времени при переписке.

Интерфейс мы рассмотрим подробно чуть позже. Чтобы получить доступ к настройкам, кликните на имя пользователя в верхнем левом углу, а затем нажмите System Console. Вы сможете получить доступ к этой опции, только если вы являетесь администратором.

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

Чтобы подключиться к серверу Postfix, который вы установили заранее, введите localhost в SMTP Server и 25 в SMTP Server Port. Нажмите синюю кнопку Save, а затем нажмите кнопку Test Connection, расположенную ниже. Вы получите сообщение в зеленом поле:

No errors were reported while sending an email. Please check your inbox to make sure.

Теперь вы можете проверить входящие сообщения электронной почты, которую указали ранее. Вы увидите сообщение от Mattermost о том, что почта настроена правильно. Если вы его не получили, проверьте папку со спамом. Если вы получили от Mattermost сообщение об ошибке, еще раз проверьте, какую почту вы ввели (возможно, вам придется вернуться к мануалу по установке SMTP-сервера исходящей почты Postfix)

Теперь, когда вы убедились, что электронные письма приходят, вам нужно включить уведомления по электронной почте, выбрав в меню Site Configuration → Notifications. Установите для параметра Enable Email Notifications значение true, а для Notification From Address – адрес электронной почты (например, mattermost@your_domain).

Введите no-reply в Notification Display Name, это имя отправителя, которое будет отображаться в почтовом клиенте (оно не обязательно должно существовать и не будет отслеживаться). Вы можете дополнительно включить Enable Email Batching, чтобы сжимать несколько непрочитанных сообщений в одно электронное письмо и уменьшить общее количество писем, которые вы отправляете членам своей команды. Когда вы закончите менять настройки, нажмите Save.

Теперь вы можете при желании изменить брендинг сервера, выбрав Site Configuration → Customization. Здесь вы можете установить имя и описание сайта (Site Name и Site Description), а также загрузить лого бренда и текст.

Вы можете выйти из System Console, кликнув на имя пользователя в верхнем левом углу и выбрав первую опцию в раскрывающемся меню.

Вы создали свою команду в Mattermost и настроили уведомления по электронной почте, поэтому вы будете в курсе всех новых обсуждений в вашей команде.

Заключение

Теперь у вас есть собственная масштабируемая платформа для обмена сообщениями, которую вы и ваша команда можете использовать для совместной работы на всех устройствах. Благодаря Mattermost вы сможете общаться, обмениваться файлами и легко выполнять поиск по сообщениям и каналам.

Mattermost не поддерживает видео- и аудиовстреч. Чтобы настроить видеоконференцсвязь, ознакомьтесь с мануалом по установке Jitsi Meet (это приложение с открытым исходным кодом, которое предоставляет зашифрованные конференц-залы для нескольких человек).

Если вы хотите узнать больше о Mattermost, читайте официальную документацию.

Tags: , , , , , ,

Добавить комментарий