15%

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

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

Используйте код:

Skills
Начать
01.11.2024
1 +1

Как установить Mattermost на Ubuntu: полное пошаговое руководство

Mattermost — это мощная платформа обмена сообщениями и командного сотрудничества с открытым исходным кодом, которая дает организациям полный контроль над своей инфраструктурой связи. Как самостоятельная альтернатива Slack и Microsoft Teams, Mattermost предлагает безопасность корпоративного уровня, полное владение данными и обширные возможности настройки — все без повторяющихся расходов на подписку SaaS.

Это подробное руководство проведет вас через каждый этап установки и настройки Mattermost на сервере Ubuntu, включая настройку базы данных PostgreSQL, конфигурацию обратного прокси Nginx и интеграцию SSL-сертификата.

Содержание

  1. Предварительные требования
  2. Обновление системы
  3. Установка необходимых зависимостей
  4. Загрузка и установка Mattermost
  5. Настройка базы данных PostgreSQL
  6. Конфигурация Mattermost
  7. Создание сервиса Systemd
  8. Конфигурация Nginx как обратного прокси
  9. Защита Mattermost с помощью SSL (HTTPS)
  10. Финальная проверка

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 на внутренний порт 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 nginx

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

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

> SSL упрощенно: AlexHost предлагает доступные SSL-сертификаты для всех типов веб-сайтов и приложений. Альтернативно, используйте бесплатный метод 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
15%

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

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

Используйте код:

Skills
Начать