Гид по технологиям

Установка Mattermost на CentOS 8

• 6 min read • DevOps • Обновлено 27 Nov 2025
Установка Mattermost на CentOS 8
Установка Mattermost на CentOS 8

TL;DR

Mattermost — локальный и бесплатный мессенджер для команд, совместимый с MySQL/MariaDB/PostgreSQL. В статье приведены пошаговые команды для установки на CentOS 8: установка MariaDB, разворачивание Mattermost в /opt, создание systemd-сервиса, настройка Nginx как обратного прокси, базовые рекомендации по SELinux и firewalld. В конце — чек-листы, сценарии тестирования и рекомендации по безопасности и резервному копированию.

Введение

Логотип Mattermost и панель управления

Mattermost — свободное, с открытым исходным кодом и самохостящееся решение для командного общения. Сервер написан на Go, фронтенд — на React. В качестве бэкенда для данных поддерживаются MySQL, MariaDB и PostgreSQL. Есть десктоп-клиенты для Windows, macOS и Linux, а также мобильные приложения для iOS и Android. Функции: личные и групповые сообщения, обмен файлами, видеозвонки, кастомные эмодзи, webhooks и slash-команды.

Кому подходит этот гайд

  • Администраторам серверов с CentOS 8.
  • Командам, которым нужна приватная альтернатива Slack.
  • Тем, кто хочет полный контроль над данными и интеграциями.

Требования

  • Сервер с CentOS 8.
  • Доступ root или пользователь с sudo.
  • Открытые порты 80/443 (для nginx) и 8065 (по умолчанию для Mattermost, локально).
  • Рекомендуемая оперативная память: минимум 2 ГБ для небольших команд; 4+ ГБ для продакшена.

Проверка системы перед началом

Выполните быстрые проверки:

  • Проверить версию ОС:
cat /etc/os-release
  • Убедиться, что у вас достаточно места на /opt и /var:
df -h /opt /var
  • Убедиться, что у вас установлены базовые утилиты wget, tar, nano:
dnf install -y wget tar nano

Установка и настройка MariaDB

Mattermost может использовать MariaDB или MySQL. Ниже — установка MariaDB.

dnf install mariadb-server -y

Запустите и включите сервис:

systemctl start mariadb
systemctl enable mariadb

Настройте безопасность MariaDB (установите root-пароль и удалите тестовые учётные записи):

mysql_secure_installation

Ответьте на вопросы так, как требуется — обычно рекомендуется подтверждать все предлагаемые изменения (Y).

Создайте базу данных и пользователя для Mattermost:

mysql -u root -p
MariaDB [(none)]> CREATE DATABASE mattermostdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mattermostdb.* TO mattermost@localhost IDENTIFIED BY 'password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Важно: замените ‘password’ на сложный пароль и храните его в защищённом месте.

Создание системного пользователя для Mattermost

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

useradd -d /opt/mattermost -U -M mattermost

Скачивание и разворачивание Mattermost

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

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

Распакуйте и переместите в /opt:

tar -xvzf mattermost-5.21.0-linux-amd64.tar.gz
mv mattermost /opt/

Создайте директорию данных и выставьте права:

mkdir /opt/mattermost/data
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost

Настройка подключения к базе данных

Откройте конфигурационный файл:

nano /opt/mattermost/config/config.json

Найдите и отредактируйте блок SqlSettings, указав ваш драйвер и строку подключения:

  "SqlSettings": {
    "DriverName": "mysql",
    "DataSource": "mattermost:password@tcp(localhost:3306)/mattermostdb?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",

Замените mattermost:password и имя базы на ваши реальные значения.

Тестовый запуск Mattermost

Перейдите в директорию и запустите сервер под пользователем mattermost:

cd /opt/mattermost
sudo -u mattermost bin/mattermost

При успешном старте вы увидите информационные логи, а система будет жаловаться, если, например, не задан SiteURL. Для корректной работы веб-функций SiteURL следует указать в config.json.

Нажмите Ctrl+C, чтобы остановить тестовый запуск и перейти к созданию сервиса.

Создание systemd-сервиса

Создайте файл /etc/systemd/system/mattermost.service:

nano /etc/systemd/system/mattermost.service

Вставьте:

[Unit]
Description=Mattermost
After=syslog.target network.target mariadb.service

[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
ExecStart=/opt/mattermost/bin/mattermost
PIDFile=/var/run/mattermost.pid
TimeoutStartSec=3600
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Перезагрузите systemd и включите сервис:

systemctl daemon-reload
systemctl start mattermost
systemctl enable mattermost

Проверка статуса и прослушиваемых портов:

systemctl status mattermost
netstat -antup | grep 8065

Настройка Nginx как обратного прокси

Nginx повышает производительность и позволяет легко настроить TLS/HTTPS.

Установка Nginx:

dnf install nginx -y
systemctl start nginx
systemctl enable nginx

Создайте конфигурацию /etc/nginx/conf.d/mattermost.conf:

nano /etc/nginx/conf.d/mattermost.conf

Пример конфигурации (замените server_name на ваш домен):

upstream mattermost {
   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.example.com;

   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://mattermost;
   }
   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://mattermost;
   }
}

Проверьте синтаксис и перезапустите:

nginx -t
systemctl restart nginx

Важно: для продакшена обязательно настройте HTTPS (например, через Certbot и сертификаты Let’s Encrypt) и обновите server блок для listen 443 и include соответствующих ssl-параметров.

SELinux и firewalld

По умолчанию SELinux включён. Вместо полного отключения рекомендуется сначала попытаться разрешить необходимую функциональность через boolean-переменные.

Быстрый (менее безопасный) вариант — перевести в permissive:

nano /etc/selinux/config
# изменить SELINUX=enforcing на SELINUX=permissive
reboot

Рекомендуемый вариант — оставить enforcing и настроить необходимые политики. Примеры действий при включённом SELinux:

  • Разрешить Nginx делать прокси-запросы на localhost:
setsebool -P httpd_can_network_connect 1
  • Если Mattermost пишет в нестандартные каталоги, назначьте контекст:
semanage fcontext -a -t httpd_sys_rw_content_t "/opt/mattermost/data(/.*)?"
restorecon -Rv /opt/mattermost/data

Открытие порта 80 в firewalld:

firewall-cmd --add-service=http --permanent
firewall-cmd --reload

Если вы будете использовать HTTPS, добавьте https также:

firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Важно: отключение SELinux снижает безопасность. Рассмотрите настройку политик прежде, чем переводить систему в permissive.

Доступ к веб-интерфейсу и первоначальная настройка

Откройте браузер и перейдите по адресу http://mattermost.example.com (замените на свой домен). Вы увидите страницу создания пользователя администратора и команды.

Установщик Mattermost — создание администратора

Заполните Email, Username и Password, затем нажмите Создать аккаунт.

Создание команды

Создайте команду и задайте URL команды:

Ввод имени команды

URL команды

После окончания вы попадёте на дашборд Mattermost:

Панель Mattermost

Безопасность и рекомендации для продакшена

  • Включите HTTPS и HSTS.
  • Настройте бэкап базы данных (регулярные дампы или репликация).
  • Настройте бэкап /opt/mattermost/upload и /opt/mattermost/config.
  • Настройте ротацию логов для /opt/mattermost/logs.
  • Ограничьте доступ к серверу по IP для административных интерфейсов.
  • Используйте внешнюю систему для логирования и мониторинга (Prometheus/Grafana, ELK и т.д.).

Мини-методология бэкапов

  • База данных: ежедневный дамп mysqldump + проверка успешности.
  • Файлы: rsync и хранение версий на удалённом хранилище (S3/Swift).
  • Тест восстановления: еженедельно делайте восстановление в тестовой среде и проверяйте корректность.

Отладка и распространённые ошибки

  • “SiteURL must be set” — укажите SiteURL в config.json.
  • Ошибки при подключении к БД — проверьте строку подключения и привилегии пользователя.
  • Nginx 502 Bad Gateway — проверьте, запущен ли процесс mattermost и слушает ли порт 8065.
  • Проблемы с веб-сокетами — убедитесь, что блок конфигурации websocket в nginx настроен правильно и proxy_set_header Upgrade передаётся.

Полезные команды для диагностики:

systemctl status mattermost
journalctl -u mattermost -f
nginx -t
tail -n 200 /opt/mattermost/logs/mattermost.log
netstat -plnt | grep 8065

Критерии приёмки

  • Сервис systemd запущен и активен: systemctl status mattermost → active (running).
  • Nginx отвечает на HTTP/HTTPS запросы для домена.
  • Веб-интерфейс доступен, и можно создать администратора и команду.
  • Приложение успешно подключается к базе данных.
  • Websocket соединения работают (ребро real-time chat).

Чек-листы по ролям

Администратор сервера:

  • Установить OS-патчи.
  • Настроить SELinux/Firewall.
  • Настроить мониторинг и бэкапы.

DevOps / SRE:

  • Настроить TLS и автопродление сертификатов.
  • Настроить логирование и метрики.
  • План обновлений и отката.

Security officer:

  • Провести аудит доступа.
  • Настроить MFA для аккаунтов администратора.
  • Проверить хранение паролей и секретов.

Тестовые сценарии и критерии приёмки

  • Установка: все шаги выполняются без ошибок.
  • Авторизация: создание администратора и вход успешны.
  • Отправка файлов: вложение >1MB загружается и доступно.
  • Восстановление: восстановление БД из дампа тестируется на отдельном инстансе.

Обновление Mattermost

  1. Остановите сервис: systemctl stop mattermost.
  2. Сделайте резервную копию БД и каталога /opt/mattermost.
  3. Замените содержимое /opt/mattermost новой версией, сохранив config.json и папку data.
  4. Запустите сервис и проверьте логи на наличие ошибок.

Когда этот гайд не подойдёт (контрпримеры)

  • Если вы используете Kubernetes или контейнерную среду — лучше развернуть Mattermost через Helm/контейнеры.
  • Если нужна кластерная высокодоступная конфигурация — потребуется настроить многопоточную базу, балансировщики и репликацию.

Короткое руководство на случай инцидента

  1. Проверить состояние systemd и логи: journalctl -u mattermost -n 200.
  2. Проверить доступность базы и диск: mysql -u root -p; df -h.
  3. Откатить до последней стабильной копии /opt/mattermost и дампа БД при необходимости.

Заключение

Вы установили Mattermost на сервер CentOS 8, настроили сервис systemd и Nginx как обратный прокси, а также получили рекомендации по безопасности, бэкапам и отладке. Для продакшена дополнительно настройте HTTPS, мониторинг и регулярные тесты восстановления.

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


Краткое резюме действий:

  • Установить MariaDB и создать базу.
  • Скачать и развернуть Mattermost в /opt.
  • Создать systemd-сервис и запустить.
  • Настроить Nginx и HTTPS.
  • Настроить резервное копирование и мониторинг.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро