Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код: Skills Начать
Рубрики
Linux Администрация

Как установить 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 reboot

3. Установка необходимых зависимостей

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/mattermost

5. Настройка базы данных 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
exit

6. Настройка 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 nginx

9. Защитите Mattermost с помощью SSL (HTTPS)

Запуск Mattermost через HTTPS обязателен для любой production-среды. Это шифрует всю коммуникацию между пользователями и вашим сервером, защищая учетные данные и сообщения от перехвата.

> SSL Made Easy: AlexHost предлагает доступные SSL Certificates для всех типов веб-сайтов и приложений. Альтернативно, используйте бесплатный метод Let’s Encrypt ниже.

Шаг 1: Получите бесплатный SSL-сертификат с помощью Certbot

sudo certbot --nginx -d your_domain.com

Certbot автоматически:

  • Проверит владение доменом
  • Выдаст сертификат 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 или ответ перенаправления.

Завершите веб-установку

  1. Откройте браузер и перейдите на https://your_domain.com
  2. Вас приветствует мастер установки Mattermost
  3. Создайте учетную запись администратора
  4. Настройте вашу первую команду и рабочее пространство
  5. Пригласите членов команды и начните сотрудничество

Устранение распространенных проблем

ПроблемаВероятная причинаРешение
Сервис Mattermost не запускаетсяНеверные учетные данные базы данных в config.jsonДважды проверьте DataSource строку в SqlSettings
502 Bad Gateway в NginxMattermost не работает на порту 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 теперь готов служить в качестве приватного, самостоятельно размещённого центра коммуникации вашей команды — полностью под вашим контролем, без утечки данных за пределы вашей инфраструктуры.