Как установить систему обмена сообщениями Mattermost Team на Debian 10
Это руководство существует для этих версий ОС
- Debian 11 (Bullseye)
- Debian 10 (Buster)
На этой странице
- Шаг 1. Установите базу данных MySQL
- Шаг 2. Создание базы данных MySQL для Mattermost
- Шаг 3. Добавьте пользователя и загрузите Mattermost
- Шаг 4. Настройка Mattermost
- Шаг 5. Настройка Mattermost как службы
- Шаг 6. Установите Certbot Letsencrypt
- Шаг 7. Установите и настройте Nginx в качестве обратного прокси-сервера
- Шаг 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 успешно завершена.