Установка 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-сертификат.
- DriverName — по умолчанию стоит postgres (в блоке
SqlSettings). - DataSource — указать пользователя, пароль, хост и имя БД в ссылке подключения (в блоке
SqlSettings).
Остальные конфиги не важны для первого запуска, и их можно будет изменить позднее в административной консоли Mattermost.
Запускаем сервис Mattermost:
sudo systemctl start mattermost
Проверим, что ничего не упало и Mattermost поднялся:
sudo systemctl status mattermost.service
А также, что он доступен на порту 8065.
Если сайт не открывается, проверьте настройки фаервола. Также можно обратиться к порту локально с сервера:
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/.
Можно создать аккаунт и рабочее пространство сразу из браузерной версии.
После установки и при первом входе можно наблюдать проблему с коннектом Web-сокетов.
Рекомендую проверить конфиги, теперь сделать это можно из System Console.
Например, моя ошибка заключалась в URL сервера.
Из коробки будут доступны звонки, playbooks, магазин с плагинами, аутентификация Gitlab. Также сам продукт имеет отличную документацию.