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

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 (замените на свой домен). Вы увидите страницу создания пользователя администратора и команды.

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

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


После окончания вы попадёте на дашборд 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
- Остановите сервис: systemctl stop mattermost.
- Сделайте резервную копию БД и каталога /opt/mattermost.
- Замените содержимое /opt/mattermost новой версией, сохранив config.json и папку data.
- Запустите сервис и проверьте логи на наличие ошибок.
Когда этот гайд не подойдёт (контрпримеры)
- Если вы используете Kubernetes или контейнерную среду — лучше развернуть Mattermost через Helm/контейнеры.
- Если нужна кластерная высокодоступная конфигурация — потребуется настроить многопоточную базу, балансировщики и репликацию.
Короткое руководство на случай инцидента
- Проверить состояние systemd и логи: journalctl -u mattermost -n 200.
- Проверить доступность базы и диск: mysql -u root -p; df -h.
- Откатить до последней стабильной копии /opt/mattermost и дампа БД при необходимости.
Заключение
Вы установили Mattermost на сервер CentOS 8, настроили сервис systemd и Nginx как обратный прокси, а также получили рекомендации по безопасности, бэкапам и отладке. Для продакшена дополнительно настройте HTTPS, мониторинг и регулярные тесты восстановления.
Важно: всегда тестируйте обновления и бэкапы в изолированной среде перед применением в продакшене.
Краткое резюме действий:
- Установить MariaDB и создать базу.
- Скачать и развернуть Mattermost в /opt.
- Создать systemd-сервис и запустить.
- Настроить Nginx и HTTPS.
- Настроить резервное копирование и мониторинг.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента