Поиск по сайту:

Как установить систему обмена сообщениями Mattermost Team на Debian 10


Это руководство существует для этих версий ОС

  • Debian 11 (Bullseye)
  • Debian 10 (Buster)

На этой странице

  1. Шаг 1. Установите базу данных MySQL
  2. Шаг 2. Создание базы данных MySQL для Mattermost
  3. Шаг 3. Добавьте пользователя и загрузите Mattermost
  4. Шаг 4. Настройка Mattermost
  5. Шаг 5. Настройка Mattermost как службы
  6. Шаг 6. Установите Certbot Letsencrypt
  7. Шаг 7. Установите и настройте Nginx в качестве обратного прокси-сервера
  8. Шаг 8. Тестирование

Mattermost — это система обмена сообщениями с открытым исходным кодом, написанная на языках программирования Golang и React. Это слабая альтернатива, мы можем использовать ее для создания собственной службы обмена сообщениями, такой как slack или хипчат.

Mattermost объединяет общение вашей команды в одном месте и делает его доступным в любом месте. Вы можете получить к нему доступ со своего рабочего стола, устройства Android и iPhone.

В этом руководстве мы покажем вам, как установить Mattermost на Debian Buster 10. Мы установим Mattermost с сервером базы данных MySQL, веб-сервером Nginx и запустим Mattermost в качестве службы Systemd в последней версии Debian Buster 10.

Предпосылка

В этом руководстве мы протестируем установку Mattermost на Debian 10 с 2 ГБ оперативной памяти, 25 свободными дисковыми пространствами и 2 ЦП.

Что мы будем делать?

  • Установить сервер MySQL
  • Создание базы данных MySQL для Mattermost
  • Добавить системного пользователя и загрузить Mattermost
  • Настроить Mattermost
  • Настройка Mattermost в качестве службы Systemd
  • Создать SSL Letsencrypt
  • Установка и настройка Nginx в качестве обратного прокси-сервера
  • Тестирование

Шаг 1 - Установите базу данных MySQL

Сначала мы установим MySQL Server 8.0 из официального репозитория на наш сервер Debian. Sp мы добавим официальный репозиторий MySQL и установим пакеты MySQL.

Установите инструмент gnupg2 на сервер Debian с помощью приведенной ниже команды apt.

sudo apt install curl wget gnupg2

Загрузите и добавьте репозиторий MySQL для системы Debian, используя следующую команду.

wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb
dpkg -i mysql-apt-config_0.8.13-1_all.deb

Теперь обновите все репозитории Debian и установите пакеты MySQL Server.

sudo apt update
sudo apt install mysql-server -y

Во время установки MySQL Server вам будет предложено настроить пароль root для вашего сервера MySQL.

Введите пароль root для MySQL и повторите его.

После завершения установки запустите службу MySQL и добавьте ее в

systemctl start mysql
systemctl enable mysql

В результате сервер MySQL теперь установлен на Debian Buster 10. Пароль root для сервера MySQL настроен.

Шаг 2 — Создайте базу данных MySQL для Mattermost

По умолчанию Mattermost поддерживает два драйвера баз данных: базы данных PostgreSQL и MySQL. И в этом руководстве мы будем использовать MySQL в качестве базы данных по умолчанию для Mattermost.

На этом шаге мы создадим новую базу данных и пользователя для установки Mattermost.

Войдите в оболочку MySQL, используя пользователя root и пароль, как показано ниже.

mysql -u root -p

Теперь создайте новую базу данных и пользователя для Mattermost. Мы создадим новую базу данных с пользователем mmuser и паролем mmuser-password.

create database mattermost;
create user ;
flush privileges;

Теперь введите exit, чтобы выйти из оболочки MySQL.

В результате создана база данных MySQL и пользователь для установки Mattermost.

Шаг 3 — Добавьте пользователя и загрузите Mattermost

На этом шаге мы создадим нового системного пользователя и загрузим исходный код Mattermost. Программное обеспечение Mattermost будет работать под именем пользователя Mattermost, оно будет установлено в каталоге /opt/mattermost.

Создайте нового системного пользователя с именем Mattermost, используя приведенную ниже команду.

useradd --system --user-group mattermost

Теперь перейдите в каталог /opt и загрузите исходный код Mattermost, используя приведенную ниже команду curl.

cd /opt/
curl -o mattermost.tar.gz https://releases.mattermost.com/5.21.0/mattermost-5.21.0-linux-amd64.tar.gz

Извлеките исходный код Mattermost и создайте новый каталог данных.

tar -xf mattermost.tar.gz
mkdir -p /opt/mattermost/data

После этого измените владельца каталога /opt/mattermost на самого важного пользователя и сделайте его доступным для записи.

chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost

В результате был создан пользователь Mattermost, а исходный код Mattermost был загружен в каталог /opt/mattermost.

Шаг 4 — Настройте Mattermost

На этом этапе мы настроим Mattermost для прослушивания адреса и базы данных. Служба Mattermost будет работать на локальном IP-адресе через порт по умолчанию 8065 и использовать MySQL в качестве системы базы данных.

Перейдите в каталог /opt/mattermost и отредактируйте файл конфигурации config.json в каталоге config.

cd /opt/mattermost/
vim config/config.json

В параметре ListenAddress измените IP-адрес на 127.0.0.1.

    "ListenAddress": "127.0.0.1:8065",

Один SqlSettings, измените DriverName на mysql и измените DataSource на базу данных MySQL и пользователя, которого мы создали.

  "SqlSettings": {
    "DriverName": "mysql",
    "DataSource": "dbuser:(localhost:3306)/dbname?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",    

Сохранить и закрыть.

Затем инициализируйте установку Mattermost, используя следующую команду.

sudo -u mattermost ./bin/mattermost

Ниже приведен результат, который вы получите.

В результате Mattermost запущен и работает на локальном IP-адресе 127.0.0.1 с портом 8065, теперь нажмите кнопку Ctrl+c для выхода.

Шаг 5. Настройте Mattermost как услугу

На этом шаге мы настроим Mattermost в качестве службы systemd, и она будет автоматически запускаться при загрузке системы после запуска службы базы данных MySQL.

Теперь перейдите в каталог /lib/systemd/system и создайте новый служебный файл Mattermost.service.

cd /lib/systemd/system/
vim mattermost.service

Теперь вставьте в него следующую конфигурацию.

[Unit]
Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.service

[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Сохранить и закрыть.

Затем перезагрузите диспетчер systemd в системе Debian.

systemctl daemon-reload

После этого запустите службу Mattermost и добавьте ее в загрузку системы.

systemctl start mattermost
systemctl enable mattermost

Сервис Mattermost запущен и работает, проверьте его с помощью следующей команды.

systemctl status mattermost

Ниже приведен результат, который вы получите.

В результате служба Mattermost запущена и работает в системе Debian и будет автоматически запускаться при загрузке системы.

Шаг 6 — Установите Certbot Letsencrypt

На этом этапе мы установим инструмент certbot и сгенерируем SSL Letsencrypt. Мы защитим установку Mattermost, используя SSL от Letsencrypt.

Установите инструмент certbot с помощью приведенной ниже команды apt.

sudo apt install certbot

После завершения установки сгенерируйте SSL letsencrypt с помощью приведенной ниже команды certbot.

certbot certonly --standalone --agree-tos -m  -d mattermost.hakase-labs.io

В результате ваши SSL-сертификаты будут сгенерированы в каталоге /etc/letsencrypt/live/mattermost-hakase-labs.io.

Шаг 7. Установите и настройте Nginx в качестве обратного прокси.

На этом этапе мы установим веб-сервер Nginx и настроим его в качестве обратного прокси-сервера для службы Mattermost.

Установите Nginx с помощью приведенной ниже команды apt.

sudo apt install nginx -y

После завершения установки запустите службу Nginx и добавьте ее в загрузку системы.

systemctl start nginx 
systemctl enable nginx

Веб-сервер Nginx запущен и работает.

Затем перейдите в каталог конфигурации /etc/nginx и создайте новую конфигурацию виртуального хоста для наиболее важного.

cd /etc/nginx/
vim sites-available/mattermost

Измените доменное имя и путь SSL-сертификатов на свои, затем вставьте в него конфигурацию.

upstream backend {
   server 127.0.0.1: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    edu.initrc.fun;
   return         301 https://$server_name$request_uri;
}
 
server {
    listen 443 ssl http2;
    server_name    edu.initrc.fun

    ssl on;
    ssl_certificate /etc/letsencrypt/live/edu.initrc.fun/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/edu.initrc.fun/privkey.pem;
    ssl_session_timeout 1d;
    ssl_protocols TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:50m;
    # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
    add_header Strict-Transport-Security max-age=15768000;
    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;

   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;
       client_body_timeout 60;
       send_timeout 300;
       lingering_timeout 5;
       proxy_connect_timeout 90;
       proxy_send_timeout 300;
       proxy_read_timeout 90s;
       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_http_version 1.1;
       proxy_pass http://backend;
   }
}

Сохранить и закрыть.

Затем создайте каталог кеша Nginx и измените владельца этого каталога на пользователя www-data по умолчанию.

mkdir -p /var/cache/nginx
chown -R www-data:www-data /var/cache/nginx

После этого активируйте виртуальный хост Mattermost, затем протестируйте конфигурацию nginx и убедитесь в отсутствии ошибок.

ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
nginx -t

Теперь перезапустите службу Nginx с помощью приведенной ниже команды systemctl.

systemctl restart nginx

В итоге установка и настройка Nginx в качестве обратного прокси для Mattermost завершена. И были готовы протестировать установку Mattermost.

Шаг 8 — Тестирование

Откройте веб-браузер и введите доменное имя URL-адреса установки Mattermost в адресной строке. Мой:

https://mattermost.hakase-labs.io/

Теперь вам нужно создать новую первую учетную запись Mattermost, это будет администратор Mattermost.

Введите сведения о своем имени пользователя, адресе электронной почты и пароле и нажмите кнопку «Создать учетную запись».

Создайте новую первую команду на Mattermost.

Введите название своей первой команды и нажмите «Далее».

И URL-адрес команды будет названием команды, нажмите «Готово», чтобы продолжить.

И вы автоматически присоединитесь к каналам по умолчанию «Не по теме» и «Городская площадь».

В результате установка Mattermost на Debian Buster 10 с базой данных MySQL и веб-сервером Nginx успешно завершена.