Установка Mattermost с Nginx на Alma Linux 8
TL;DR
Mattermost — бесплатная и самохостимая платформа для чата и совместной работы. В этом пошаговом руководстве показано, как установить Mattermost на Alma Linux 8 с бэкендом MySQL, запустить сервис как systemd unit и настроить Nginx в роли обратного прокси. Включены советы по безопасности, настройке TLS, базовые проверки работоспособности и список типичных операций для администраторов.
Ключевые термины
- Mattermost — серверная платформа для командного чата и автоматизации рабочих процессов.
- reverse proxy — обратный прокси (Nginx) принимает внешние запросы и перенаправляет их на внутренний сервис.
Предисловие

Важно: инструкция предполагает, что у вас есть привилегии root на сервере Alma Linux 8 и доменное имя, указывающее на IP сервера.
Предварительные требования
- Сервер с Alma Linux 8.
- Доменное имя, указывающее на IP сервера (A/AAAA запись).
- Настроен root-пароль или sudo-доступ.
- Открытые порты 80/443 (для внешнего доступа) и 8065 (внутреннее прослушивание Mattermost).
План действий
- Установить и настроить MySQL.
- Создать базу данных и пользователя Mattermost.
- Установить Mattermost, задать права и конфигурацию.
- Создать unit systemd и запустить сервис.
- Настроить Nginx как обратный прокси, при необходимости включить HTTPS.
- Настроить брандмауэр и проверить доступ к веб-интерфейсу.
Установка MySQL
Mattermost поддерживает MySQL/MariaDB как бэкенд. Выполните на сервере:
dnf install mysql-server -yЗапустите и включите сервис:
systemctl start mysqld
systemctl enable mysqldЗапустите скрипт безопасной настройки и следуйте подсказкам:
mysql_secure_installationПодсказки (пример): при запросе удаления анонимных пользователей и тестовой БД ответьте Y. Установите надёжный пароль для root.
Примечание: если вы предпочитаете MariaDB, используйте dnf install mariadb-server и аналогичные команды systemctl.
Создание базы данных для Mattermost
Войдите в MySQL как root:
mysql -u root -pВыполните команды для создания базы и пользователя (замените password на надёжный пароль):
CREATE DATABASE matterdb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
CREATE USER 'matteruser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON matterdb.* TO 'matteruser'@'localhost';
FLUSH PRIVILEGES;
EXIT;Важно: использование utf8mb4 рекомендуется для корректной работы с эмодзи и многобайтовыми символами.
Установка Mattermost
Создайте системного пользователя для выполнения сервера:
useradd --system --user-group mattermostСкачайте актуальную сборку (в примере используется конкретная версия; при установке проверьте релизы на официальном сайте):
wget https://releases.mattermost.com/6.0.2/mattermost-6.0.2-linux-amd64.tar.gzРаспакуйте и переместите в /opt:
tar -xf mattermost-6.0.2-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Укажите публичный URL вашего сайта (пример):
"SiteURL": "http://mattermost.example.com",Найдите и замените параметры базы данных (по умолчанию PostgreSQL) на MySQL:
"DriverName": "mysql",
"DataSource": "matteruser:password@tcp(localhost:3306)/matterdb?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",Сохраните изменения.
Важно: сохраняйте логин/пароль базы отдельно и не выкладывайте их публично.
Создание systemd unit для Mattermost
Создайте файл:
nano /etc/systemd/system/mattermost.serviceВставьте содержимое:
[Unit]
Description=Mattermost
After=syslog.target network.target mysqld.service
[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
ExecStart=/opt/mattermost/bin/mattermost
PIDFile=/var/spool/mattermost/pid/master.pid
TimeoutStartSec=3600
LimitNOFILE=49152
[Install]
WantedBy=multi-user.targetПерезагрузите конфигурацию systemd и запустите сервис:
systemctl daemon-reload
systemctl start mattermost
systemctl enable mattermost
systemctl status mattermostПроверьте, что процесс слушает порт 8065:
ss -antpl | grep 8065Ожидаемый вывод показывает процесс mattermost, слушающий *:8065.
Настройка Nginx как обратного прокси
Установите Nginx:
dnf install nginx -yСоздайте файл конфигурации виртуального хоста:
nano /etc/nginx/conf.d/mattermost.confПример минимальной конфигурации (HTTP):
server {
listen 80;
server_name mattermost.example.com;
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://localhost:8065/;
proxy_set_header Host $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;
}
error_page 404 /404.html;
location = /40x.html { }
error_page 500 502 503 504 /50x.html;
location = /50x.html { }
}Проверьте конфигурацию и запустите Nginx:
nginx -t
systemctl start nginx
systemctl enable nginx
systemctl status nginxПримечание: добавлены заголовки proxy_set_header — они важны для корректной работы аутентификации, обратных ссылок и получения реального IP клиента.
Рекомендация: включение TLS (Let’s Encrypt)
Для защищённого доступа выполните следующие шаги:
- Установите certbot и плагин для Nginx:
dnf install certbot python3-certbot-nginx -y- Запустите получение сертификата (замените domain на ваш домен):
certbot --nginx -d mattermost.example.comCertbot автоматически обновит конфигурацию Nginx и добавит перенаправление HTTP->HTTPS. Проверьте, что в config.json параметр SiteURL начинается с https://.
Важно: проверьте, что порты 80/443 открыты и DNS указывает на сервер.
Настройка брандмауэра
Разрешите HTTP и HTTPS:
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reloadЕсли вы используете нестандартный фаервол (ufw, сетевые ACL), настройте его соответствующим образом.
Доступ к веб-интерфейсу и первичная настройка
Откройте браузер и перейдите по URL http://mattermost.example.com или https://mattermost.example.com если включён TLS.

Создайте аккаунт администратора: укажите email, логин администратора и пароль, затем нажмите Create Account.

Создайте команду (workspace): нажмите Create a team, задайте название команды и URL команды.


После завершения вы попадёте на панель управления Mattermost.

Безопасность и рекомендации по эксплуатации
- Права файлов: /opt/mattermost должен принадлежать пользователю mattermost и не должен быть доступен другим пользователям.
- SELinux: если SELinux включён, проверьте контексты и при необходимости создайте правила для доступа к сокетам/файлам. Временное решение — permissive режим, но лучше настроить контексты правильно.
- Бэкапы: планируйте регулярный экспорт базы данных и резервирование каталога /opt/mattermost и /opt/mattermost/data.
- Обновления: при обновлении Mattermost останавливайте сервис systemctl stop mattermost, применяйте обновление и затем systemctl start mattermost. Проверяйте совместимость плагинов.
- Мониторинг: собирайте логи systemd и Mattermost (stdout/файлы логов) в систему мониторинга и настраивайте алерты на падение сервиса.
Роль‑ориентированные чек-листы
Администратор (перед вводом в эксплуатацию):
- DNS указывает на сервер
- Получен TLS-сертификат
- Создан админ-аккаунт
- Настроен резервный план
DevOps / Системный администратор:
- Проверена конфигурация systemd
- Настроен Nginx и правила брандмауэра
- Настроен лог-роутинг/ротация
- Созданы бэкапы БД и файлов
Безопасность / ИнфоSec:
- Протестирована MFA для админов
- Ограничен доступ к серверу (SSH, брандмауэр)
- Проверены политики паролей
Критерии приёмки
- Mattermost отвечает на HTTPS-запросы и загружает интерфейс.
- Вход в систему возможен с учётной записи администратора.
- Сервис автоматически стартует после перезагрузки (systemctl enable).
- Регулярные бэкапы базы успешно восстанавливаются в тестовой среде.
Простая методика тестирования после установки
- Создать пользователя и команду.
- Отправить сообщение в канал, проверить доставку и историю поиска.
- Загрузить файл и убедиться, что он доступен и сохраняется в /opt/mattermost/data.
- Проверить логирование ошибок systemctl status и journalctl -u mattermost -e.
Отладка и распространённые проблемы
- Если Mattermost не стартует: проверьте journalctl -u mattermost -b и /opt/mattermost/logs.
- Проблемы с подключением к MySQL: проверьте доступность порта 3306, правильность пароля и права пользователя.
- 502 Bad Gateway от Nginx: убедитесь, что Mattermost слушает порт 8065 и Nginx проксирует на правильный адрес.
Полезные команды:
systemctl status mattermost
journalctl -u mattermost -f
ss -antpl | grep 8065
mysql -u matteruser -p -e "SHOW TABLES;" matterdb
nginx -tАльтернативные подходы
- Использовать PostgreSQL вместо MySQL (рекомендуется в некоторых production-сценариях).
- Запускать Mattermost в контейнере (Docker) и размещать данные на смонтированных томах.
- Использовать готовые образы/инструменты оркестрации (Kubernetes) для масштабирования.
Когда этот план может не подойти
- Если вы хотите полностью облачное решение без управления инфраструктурой — рассмотрите SaaS альтернативы.
- Для очень больших инсталляций (>1000 активных пользователей) потребуется продвинутая архитектура (балансировщики, кластер БД, масштабируемые сервисы).
Краткое руководство по откату (rollback)
- Остановите сервис: systemctl stop mattermost
- Восстановите файлы из бэкапа: /opt/mattermost
- Восстановите базу данных из дампа
- Запустите сервис и проверьте логи
Глоссарий (1‑строчные определения)
- SiteURL — публичный адрес вашего экземпляра Mattermost.
- DataSource — строка подключения к СУБД.
- systemd unit — файл конфигурации сервиса для systemd.
Вывод
Вы установили Mattermost, настроили его на Alma Linux 8 с MySQL и Nginx в роли обратного прокси. Настройте TLS, бэкапы и мониторинг перед вводом в эксплуатацию. Если нужно, помогу с конкретными ошибками или адаптацией под кластер/контейнеры.
Важно: проверьте версии пакетов и совместимость перед обновлением в рабочей среде.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента