Skip to main content

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

Mattermost — это платформа для обмена сообщениями и совместной работы, которую можно установить на собственных серверах или в облаке. Mattermost является альтернативой таким мессенджерам как Slack и RocketChat.

В этом гайде мы рассмотрим тарифный план Free, который включает в себя безлимитную историю сообщений и групповые звонки (подробнее о тарифах). Клиенты Mattemost доступны на мобильных платформах (IOS, Android), в десктоп-версиях (Windows, Linux, Mac), также поддерживается браузерная версия. 

Для тарифа Free доступна только Self Hosted версия; далее будет разбираться установка на Ubuntu. Ознакомиться с другими способами установки (в том числе и Docker-образ) можно на официальном сайте.


Технические требования

На 1000 пользователей минимально потребуется 1 CPU, 2GB RAM и  PostgreSQL v11+ (необязательно использовать именно Postgres).


Установка Mattermost

Теперь можно переходить к самой установке. Для установки подключим репозиторий deb.packages.mattermost.com/repo-setup.sh.

curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost

Здесь в sudo bash -s mattermost передается аргумент mattermost для добавления репозитория только Mattermost. Аргументом по умолчанию в данном скрипте является all, тогда будут также добавлены репозитории Ngnix, PostgreSQL и Certbot.

Установим сервис. Он будет установлен по пути /opt/mattermost. Пользователь mattermost и группа mattermost будут созданы автоматически. 

sudo apt update
sudo apt install mattermost -y

После установки понадобится создать config.json с необходимыми правами (он создается на основе config.defaults.json). Чтение и запись в файл будут доступны только для пользователя владельца (в нашем случае это mattermost).

sudo install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json

В конфиге необходимо заполнить параметры:

sudo nano /opt/mattermost/config/config.json
  • SiteUrl — сюда необходимо прописать созданный домен с протоколом https (в блоке ServiceSettings). Позже мы подключим SSL-сертификат.
7b483263-249e-4b7b-9621-61cddbc1fcd6?width=730&height=500
  • DriverName — по умолчанию стоит postgres (в блоке SqlSettings).
  • DataSource — указать пользователя, пароль, хост и имя БД в ссылке подключения (в блоке SqlSettings).
367a08a5-0b32-424e-9399-9f63923513da?width=799&height=402

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

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

sudo systemctl start mattermost

Проверим, что ничего не упало и Mattermost поднялся:

sudo systemctl status mattermost.service
8627ec6b-d788-4bf9-a99b-b17d36b1a65f?width=854&height=133

А также, что он доступен на порту 8065.

e328427a-7bef-4a62-90d7-bd2c3abccc9d?width=1574&height=980

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

curl -v localhost:8065

Дополнительно добавим автозапуск сервиса:

sudo systemctl enable mattermost.service

Nginx

Мы не будем напрямую использовать порт 8065 — он будет позже закрыт фаерволом. Для проксирования запросов установим Nginx.

sudo apt install nginx

Теперь добавим конфигурацию:

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

В строке server_name необходимо указать свой домен, в нашем случае mattermost.twc1.net.

Обратите внимание, что проксируется как HTTP, так и websocket-протоколы.

upstream backend {
  server 127.0.0.1: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.twc1.net;
  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;
 }
}

Добавим линк конфигурационного файла в sites-enabled:

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

Уберем дефолтный конфиг:

sudo rm -f /etc/nginx/sites-enabled/default

Делаем рестарт сервиса Nginx:

sudo service nginx restart

Теперь выпустим сертификат от Let’s Encrypt для домена через certbot:

sudo apt install python3-certbot-nginx && certbot

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

После установки сертификата certbot допишет конфигурацию nginx mattermost. Будет добавлена директива listen для обработки запросов с 443 порта, директивы с ключами и конфигами для SSL, а также редирект с HTTP на HTTPS.

Firewall

Я ограничил входящие TCP запросы портами 22 для работы с SSH, 80 и 443 для TCP. Для сбора метрик на дашборд сервера необходимо открыть также порт 10050; список IP-адресов, для которых необходимо открывать порт, будет в /etc/zabbix/zabbix_agentd.conf.


Первый запуск

Теперь Mattermost будет доступен по адресу https://mattermost.twc1.net/.

ede5fd09-3a8e-4df2-8d8a-f492274b77ee?width=1536&height=878

Можно создать аккаунт и рабочее пространство сразу из браузерной версии.

b2cdbe85-89b3-4bb7-afe5-135083778005?width=1900&height=861

После установки и при первом входе можно наблюдать проблему с коннектом Web-сокетов. 

b6fede2d-5c62-4764-9027-2d8276740233?width=1910&height=542

Рекомендую проверить конфиги, теперь сделать это можно из System Console.

15d932e0-2130-4506-ad10-b8f9b57d2d14?width=1464&height=608

 Например, моя ошибка заключалась в URL сервера.

572e9b59-c47d-4610-bba3-2df59ad0a2d5?width=1912&height=911

Из коробки будут доступны звонки, playbooks, магазин с плагинами, аутентификация Gitlab. Также сам продукт имеет отличную документацию.


Источник