Как установить Mattermost на Ubuntu: полное пошаговое руководство
Mattermost — это мощная платформа обмена сообщениями и командного сотрудничества с открытым исходным кодом, которая дает организациям полный контроль над своей инфраструктурой связи. Как самостоятельная альтернатива Slack и Microsoft Teams, Mattermost предлагает безопасность корпоративного уровня, полное владение данными и обширные возможности настройки — все без повторяющихся расходов на подписку SaaS.
Это подробное руководство проведет вас через каждый этап установки и настройки Mattermost на сервере Ubuntu, включая настройку базы данных PostgreSQL, конфигурацию обратного прокси Nginx и интеграцию SSL-сертификата.
Содержание
- Предварительные требования
- Обновление системы
- Установка необходимых зависимостей
- Загрузка и установка Mattermost
- Настройка базы данных PostgreSQL
- Конфигурация Mattermost
- Создание сервиса Systemd
- Конфигурация Nginx как обратного прокси
- Защита Mattermost с помощью SSL (HTTPS)
- Финальная проверка
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 на внутренний порт Mattermost 8065. Это также включает поддержку 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 упрощенно: AlexHost предлагает доступные SSL-сертификаты для всех типов веб-сайтов и приложений. Альтернативно, используйте бесплатный метод 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