Как установить Mattermost на Ubuntu: полное пошаговое руководство
Mattermost — это мощная платформа обмена сообщениями и командного сотрудничества с открытым исходным кодом, которая дает организациям полный контроль над своей инфраструктурой коммуникации. Как самостоятельно размещаемая альтернатива Slack и Microsoft Teams, Mattermost предлагает безопасность корпоративного уровня, полное владение данными и обширные возможности настройки — все без повторяющихся расходов на подписку SaaS.
Это подробное руководство проведет вас через каждый этап установки и настройки Mattermost на сервере Ubuntu, включая настройку базы данных PostgreSQL, конфигурацию обратного прокси Nginx и интеграцию SSL-сертификата.
1. Предварительные требования
Перед началом убедитесь, что выполнены следующие требования:
- Сервер под управлением Ubuntu 20.04 или Ubuntu 22.04 LTS (Ubuntu 18.04 больше не поддерживается и не рекомендуется для production)
- Привилегии sudo или root на сервере
- Доменное имя, указывающее на IP-адрес вашего сервера (настоятельно рекомендуется для production-развертываний)
- Минимальное оборудование: 1 vCPU, 2 GB RAM, 10 GB дискового пространства (для небольших команд); увеличьте для более крупных развертываний
> Совет по хостингу: Для плавного развертывания Mattermost рассмотрите надежный план VPS Hosting от AlexHost. С SSD-хранилищем, полным доступом root и гарантированным временем работы, VPS-экземпляры AlexHost идеальны для самостоятельно размещаемых инструментов сотрудничества.
2. Обновите вашу систему
Всегда начинайте с обновления индекса пакетов и применения всех ожидающих обновлений безопасности и системы:
sudo apt update
sudo apt upgrade -yПерезагрузите сервер, если было применено обновление ядра:
sudo reboot3. Установка необходимых зависимостей
Mattermost зависит от трех ключевых компонентов: PostgreSQL (база данных), Nginx (обратный прокси) и Certbot (управление SSL-сертификатами).
Установите все необходимые пакеты за один раз:
sudo apt install -y postgresql postgresql-contrib
sudo apt install -y nginx
sudo apt install -y certbot python3-certbot-nginxПроверьте, что PostgreSQL и Nginx работают:
sudo systemctl status postgresql
sudo systemctl status nginxОба сервиса должны показать active (running).
4. Загрузка и установка Mattermost
Шаг 1: Загрузите последний выпуск Mattermost
Посетите официальную страницу выпусков Mattermost, чтобы найти последнюю стабильную версию. Используйте wget для прямой загрузки на ваш сервер:
wget https://releases.mattermost.com/9.5.0/mattermost-team-9.5.0-linux-amd64.tar.gz> Примечание: Замените 9.5.0 на номер последней доступной версии. Всегда используйте самый последний стабильный выпуск для получения исправлений безопасности и новых функций.
Шаг 2: Распакуйте архив
tar -xvzf mattermost-team-9.5.0-linux-amd64.tar.gzШаг 3: Переместите Mattermost в системный каталог
Переместите извлеченную папку в /opt, что является стандартным расположением Linux для дополнительного стороннего программного обеспечения:
sudo mv mattermost /opt/mattermostШаг 4: Создайте выделенного системного пользователя Mattermost
Запуск Mattermost от выделенного непривилегированного пользователя является критической лучшей практикой безопасности:
sudo useradd -r -m -d /opt/mattermost -s /bin/false mattermostШаг 5: Создайте каталог данных и установите разрешения
sudo mkdir -p /opt/mattermost/data
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R 750 /opt/mattermost5. Настройка базы данных PostgreSQL
Mattermost требует выделенную базу данных PostgreSQL и пользователя. Следуйте этим шагам внимательно.
Шаг 1: Переключитесь на системного пользователя PostgreSQL
sudo -i -u postgresШаг 2: Откройте интерактивную оболочку PostgreSQL
psqlШаг 3: Создайте базу данных, пользователя и предоставьте привилегии
Выполните следующие SQL команды одну за другой:
CREATE DATABASE mattermost_db;
CREATE USER mattermost WITH PASSWORD 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON DATABASE mattermost_db TO mattermost;> Примечание безопасности: Замените YourStrongPassword123! на надежный, уникальный пароль. Используйте менеджер паролей для его создания и безопасного хранения.
Для PostgreSQL 15 и более поздних версий вам также необходимо предоставить привилегии схемы:
c mattermost_db
GRANT ALL ON SCHEMA public TO mattermost;Шаг 4: Выйдите из оболочки PostgreSQL и вернитесь к своему пользователю
q
exit6. Настройка Mattermost
Шаг 1: Откройте файл конфигурации Mattermost
sudo nano /opt/mattermost/config/config.jsonШаг 2: Обновите параметры подключения к базе данных
Найдите блок SqlSettings и обновите его с помощью ваших учетных данных PostgreSQL:
"SqlSettings": {
"DriverName": "postgres",
"DataSource": "postgres://mattermost:YourStrongPassword123!@localhost:5432/mattermost_db?sslmode=disable&connect_timeout=10",
"DataSourceReplicas": [],
"DataSourceSearchReplicas": [],
"MaxIdleConns": 20,
"ConnMaxLifetimeMilliseconds": 3600000,
"MaxOpenConns": 300,
"Trace": false,
"AtRestEncryptKey": "",
"QueryTimeout": 30
}Шаг 3: Настройте URL сайта
Найдите блок ServiceSettings и установите ваш домен:
"ServiceSettings": {
"SiteURL": "https://your_domain.com",
...
}Замените your_domain.com на ваше фактическое имя домена.
Шаг 4: Сохраните и выйдите
Нажмите Ctrl+X, затем Y, затем Enter для сохранения и закрытия файла.
7. Создание сервиса Systemd
Запуск Mattermost как сервиса systemd гарантирует его автоматический запуск при загрузке и перезапуск при сбое — это необходимо для любого production развертывания.
Шаг 1: Создание файла сервиса
sudo nano /etc/systemd/system/mattermost.serviceШаг 2: Добавление конфигурации сервиса
Вставьте следующее содержимое:
[Unit]
Description=Mattermost Team Messaging Server
After=network.target postgresql.service
Wants=postgresql.service
[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152
[Install]
WantedBy=multi-user.targetШаг 3: Включение и запуск сервиса Mattermost
sudo systemctl daemon-reload
sudo systemctl enable mattermost
sudo systemctl start mattermostШаг 4: Проверка запуска сервиса
sudo systemctl status mattermostВы должны увидеть active (running). Mattermost по умолчанию прослушивает порт 8065.
8. Настройка Nginx в качестве обратного прокси
Nginx действует как обратный прокси, перенаправляя входящий трафик HTTP/HTTPS с портов 80/443 на внутренний порт 8065 Mattermost. Это также обеспечивает поддержку WebSocket, которая требуется Mattermost для обмена сообщениями в реальном времени.
Шаг 1: Создание файла конфигурации Nginx
sudo nano /etc/nginx/sites-available/mattermostШаг 2: Добавление конфигурации обратного прокси
upstream backend {
server localhost: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 your_domain.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;
proxy_read_timeout 600s;
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_pass http://backend;
}
}Замените your_domain.com на ваше фактическое имя домена.
Шаг 3: Включение конфигурации сайта
sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/Шаг 4: Проверка конфигурации Nginx на синтаксические ошибки
sudo nginx -tОжидаемый результат:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulШаг 5: Перезагрузка Nginx
sudo systemctl restart nginx9. Защитите Mattermost с помощью SSL (HTTPS)
Запуск Mattermost через HTTPS обязателен для любой production-среды. Это шифрует всю коммуникацию между пользователями и вашим сервером, защищая учетные данные и сообщения от перехвата.
> SSL Made Easy: AlexHost предлагает доступные SSL Certificates для всех типов веб-сайтов и приложений. Альтернативно, используйте бесплатный метод Let’s Encrypt ниже.
Шаг 1: Получите бесплатный SSL-сертификат с помощью Certbot
sudo certbot --nginx -d your_domain.comCertbot автоматически:
- Проверит владение доменом
- Выдаст сертификат Let’s Encrypt
- Модифицирует вашу конфигурацию Nginx для включения HTTPS
- Настроит автоматическое обновление сертификата
Шаг 2: Проверьте автоматическое обновление
sudo certbot renew --dry-runШаг 3: Перезагрузите Nginx
sudo systemctl restart nginxВаш экземпляр Mattermost теперь доступен по адресу https://your_domain.com.
10. Финальная проверка
Проверьте, что все сервисы запущены
sudo systemctl status postgresql
sudo systemctl status mattermost
sudo systemctl status nginxПротестируйте Mattermost напрямую на порту 8065
curl -I http://localhost:8065Вы должны получить HTTP 200 OK или ответ перенаправления.
Завершите веб-установку
- Откройте браузер и перейдите на
https://your_domain.com - Вас приветствует мастер установки Mattermost
- Создайте учетную запись администратора
- Настройте вашу первую команду и рабочее пространство
- Пригласите членов команды и начните сотрудничество
Устранение распространенных проблем
| Проблема | Вероятная причина | Решение |
|---|---|---|
| Сервис Mattermost не запускается | Неверные учетные данные базы данных в config.json | Дважды проверьте DataSource строку в SqlSettings |
| 502 Bad Gateway в Nginx | Mattermost не работает на порту 8065 | Запустите sudo systemctl restart mattermost |
| Ошибки подключения WebSocket | Отсутствуют заголовки прокси WebSocket в Nginx | Проверьте блок местоположения WebSocket в конфигурации Nginx |
| Ошибки SSL-сертификата | Домен не указывает на IP-адрес сервера | Обновите DNS A-запись и дождитесь распространения |
| Соединение с базой данных отклонено | PostgreSQL не работает | Запустите sudo systemctl start postgresql |
Почему выбрать надежный хостинг для Mattermost?
Производительность и надежность вашего экземпляра Mattermost во многом зависят от базовой инфраструктуры. Для небольших и средних команд хорошо настроенный VPS является идеальным выбором. Для крупных организаций с большим объемом сообщений рассмотрите возможность обновления до Dedicated Server для максимальной производительности, изоляции и контроля.
Если вам нужно доменное имя для развертывания Mattermost, AlexHost предлагает конкурентоспособную регистрацию доменов с полным управлением DNS. И если вы запускаете несколько сервисов наряду с Mattermost, общий веб-хостинг или VPS с cPanel могут упростить управление с помощью интуитивной панели управления.
Резюме
Вы успешно установили и настроили Mattermost на Ubuntu с:
- ✅ PostgreSQL в качестве базы данных бэкенда
- ✅ Nginx в качестве производственного обратного прокси с поддержкой WebSocket
- ✅ Let’s Encrypt SSL для зашифрованных HTTPS соединений
- ✅ Сервис systemd для автоматического запуска и восстановления после сбоев
- ✅ Надлежащие разрешения файлов и выделенный системный пользователь для безопасности
Mattermost теперь готов служить в качестве приватного, самостоятельно размещённого центра коммуникации вашей команды — полностью под вашим контролем, без утечки данных за пределы вашей инфраструктуры.
на всех хостинговых услугах