Як встановити Mattermost на Debian 12

Як встановити Mattermost на Debian 12

 

Mattermost — це альтернатива Slack і Microsoft Teams з відкритим вихідним кодом. Він дозволяє вам самостійно розміщувати онлайн-чат і пропонує багато функцій, таких як обмін файлами, пошук, автоматизація та численні сторонні інтеграції.

Mattermost — це платформа для спільної роботи, розроблена як внутрішній чат для організацій і компаній. Він поєднує в собі системи обміну повідомленнями, автоматизацію, інтеграцію та безпеку для критично важливих робочих процесів.

Цей посібник покаже вам, як встановити Mattermost на сервер Debian 12. Ви встановите Mattermost за допомогою PostgreSQL та Nginx, а також захистите Mattermost за допомогою SSL-сертифікатів.

Передумови

Щоб почати з цього посібника, переконайтеся, що у вас є наступне:

  • Сервер Debian 12
  • Користувач без права root з правами адміністратора
  • Доменне ім’я готове і вказується на IP-адресу сервера

Встановлення залежностей

Перед встановленням Mattermost, потрібно встановити залежності для нього. Це включає сервер баз даних PostgreSQL, веб-сервер Nginx і Certbot.

Спочатку виконайте наступну команду, щоб оновити індекс пакетів Debian.

sudo apt update

Тепер встановіть такі залежності, як PostgreSQL, Nginx, Certbot, Gnupg і curl за допомогою команди ‘apt‘ нижче. Введіть «Y», щоб підтвердити встановлення.

sudo apt install postgresql postgresql-contrib nginx certbot gnupg curl

Після завершення інсталяції перевірте статус служби PostgreSQL за допомогою команди ‘systemctl‘. Ви побачите, що PostgreSQL працює у вашій системі.

sudo systemctl is-enabled postgresql
sudo systemctl status PostgreSQL

Нарешті, перевірте статус служби Nginx за допомогою наведеної нижче команди. Сервіс Nginx повинен бути запущений на вашій системі Debian.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Налаштування користувача та бази даних PostgreSQL

Після того, як залежності будуть встановлені, ви створите нову базу даних і користувача для Mattermost. Для цього ви будете використовувати оболонку PostgreSQL ‘psql’, яка встановлюється за замовчуванням при установці сервера PostgreSQL.

Увійдіть у PostgreSQL за допомогою команди ‘psql’ нижче.

sudo -u postgres psql

Тепер виконайте наступні запити, щоб створити нову базу даних і користувач ‘mattermost‘ з паролем ‘password‘.

CREATE DATABASE mattermost;
CREATE USER mmuser WITH PASSWORD 'password';
GRANT ALL ON DATABASE mattermost TO mmuser;
ALTER DATABASE mattermost OWNER TO mmuser;
GRANT USAGE, CREATE ON SCHEMA PUBLIC TO mmuser;

Далі перевірте список баз даних і користувачів на вашому сервері PostgreSQL за допомогою наступного:

\l
\du

Далі ви можете побачити базу даних і створений користувач ‘mattermost‘.

Введіть ‘quit‘, щоб вийти з оболонки ‘psql‘.

Як встановити Mattermost на Debian 12

Після створення нового користувача та бази даних PostgreSQL ви будете верифікувати свого користувача PostgreSQL, щоб переконатися, що він може увійти на сервер PostgreSQL.

Тепер виконайте команду ‘psql‘ нижче, щоб увійти на сервер PostgreSQL за допомогою користувача ‘mattermost‘. Введіть пароль, коли з’явиться відповідний запит.

sudo -u postgres psql --host=localhost --dbname=mattermost --username=mmuser --password

Увійшовши в систему, перевірте своє з’єднання за наступним запитом:

\conninfo

Ви побачите статус підключення до PostgreSQL таким чином:

Як встановити Mattermost на Debian 12

Встановлення Mattermost

На цьому етапі ваш сервер готовий до встановлення Mattermost. Тепер ви завантажите вихідний код Mattermost, налаштуєте каталог встановлення, налаштуєте Mattermost з PostgreSQL, налаштуєте доменне ім’я Mattermost, а потім встановите належний дозвіл і право власності на каталог встановлення Mattermost.

Перш ніж завантажувати Mattermost, додайте нового користувача системи «mattermost» за допомогою наступного:

sudo useradd --system --user-group mattermost

Тепер виконайте наступну команду ‘wget‘, щоб завантажити Mattermost, і розпакуйте її за допомогою команди ‘tar‘ нижче. Сервер Mattermost буде доступний у каталозі ‘mattermost‘.

wget https://releases.mattermost.com/10.0.1/mattermost-10.0.1-linux-amd64.tar.gz
tar -xf mattermost-10.0.1-linux-amd64.tar.gz

Далі перемістіть каталог ‘mattermost‘ до ‘/opt‘ за допомогою наступного. Отже, каталог встановлення Mattermost буде доступний за адресою ‘/opt/mattermost‘.

mv mattermost /opt/

А потім створіть новий каталог даних ‘/opt/mattermost/data‘. Це буде використовуватися для зберігання даних користувача.

sudo mkdir -p /opt/mattermost/data

Далі відкрийте стандартну конфігурацію Mattermost ‘/opt/mattermost/config/config.json‘ за допомогою редактора ‘nano‘.

sudo nano /opt/mattermost/config/config.json

Змініть URL-адресу сайту на своє доменне ім’я, наприклад “https://mattermost.infoit.local“.

"ServiceSettings": {
 "SiteURL": "https://mattermost.infoit.local",

У розділах «SqlSettings» і «DataSource» змініть облікові дані бази даних, вказавши такі дані:

"SqlSettings": {
 "DriverName": "postgres",
 "DataSource": "postgres://mattermost:password@localhost/mattermost?sslmode=disable\u0026connect_timeout=10\u0026binary_parameters=yes",

Збережіть файл і вийдіть з редактора.

Нарешті, виконайте наведену нижче команду, щоб змінити власника каталогу ‘/opt/mattermost‘ на user ‘mattermost‘. Крім того, переконайтеся, що група ‘mattermost‘ може записувати в директорію ‘/opt/mattermost‘.

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

Створення сервісу systemd для Mattermost

У цьому розділі ви створите новий файл служби systemd для Mattermost. Завдяки цьому Mattermost працюватиме у фоновому режимі, і ви зможете легко керувати процесом Mattermost за допомогою утиліти ‘systemctl’.

Створіть новий файл служби systemd ‘/etc/systemd/system/mattermost.service‘ за допомогою редактора ‘nano’.

sudo nano /etc/systemd/system/mattermost.service

Вставте у файл наступну конфігурацію.

[Unit]
Description=Mattermost
After=network.target
After=postgresql.service
BindsTo=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

Збережіть файл і вийдіть з редактора.

Тепер виконайте команду ‘systemctl‘ нижче, щоб перезавантажити менеджер systemd.

sudo systemctl daemon-reload

Нарешті, тепер ви можете запустити, увімкнути та перевірити «mattermost» службу за допомогою наступної команди.

sudo systemctl enable --now mattermost
sudo systemctl status mattermost

Як видно з наведеного нижче, послуга «mattermost» запущена та увімкнена

Як встановити Mattermost на Debian 12

Налаштування Nginx як зворотного проксі

На даний момент, Mattermost працює на вашому сервері Debian 12. Що стосується цього розділу, ви будете генерувати SSL-сертифікати з Letsencrypt, а потім створювати новий блок сервера Nginx, який буде використовуватися як зворотний проксі для Mattermost.

Перш ніж налаштовувати Nginx, виконайте наведену нижче команду, щоб зупинити службу Nginx і згенерувати SSL-сертифікати для Mattermost. Обов’язково змініть доменне ім’я та адресу електронної пошти з вашою інформацією.

sudo systemctl stop nginx
sudo certbot --certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d mattermost.infoit.local

Після завершення процесу ваші SSL/ сертифікати будуть доступні в директорії ‘/etc/letsencrypt/live/mattermost.infoit.local’.

Далі відкрийте стандартну конфігурацію Nginx ‘/etc/nginx/nginx.conf’ за допомогою редактора ‘nano’.

sudo nano /etc/nginx/nginx.conf

Додайте наступну конфігурацію перед рядком ‘/etc/nginx/nginx.conf’.

 server_names_hash_bucket_size 64;
 include /etc/nginx/conf.d/*.conf;

Збережіть файл і вийдіть з нього.

Тепер створіть нову конфігурацію блоку сервера Nginx ‘/etc/nginx/sites-available/mattermost’ за допомогою редактора ‘nano’.

sudo nano /etc/nginx/sites-available/mattermost

Вставте конфігурацію нижче та переконайтеся, що ви змінили опцію «server_name» у своєму доменному імені. Також обов’язково налаштуйте шлях SSL-сертифікатів.

upstream backend {
server 127.0.0.1:8065;
keepalive 32;
}

server {
listen 80;
server_name mattermost.infoit.local;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name mattermost.infoit.local;

http2_push_preload on; # Enable HTTP/2 Server Push

ssl_certificate /etc/letsencrypt/live/mattermost.infoit.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mattermost.infoit.local/privkey.pem;
ssl_session_timeout 1d;

# Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
ssl_protocols TLSv1.2 TLSv1.3;

# Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
# prevent replay attacks.
#
# @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
ssl_early_data on;

ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = six 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;

add_header X-Early-Data $tls1_3_early_data;

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

location / {
client_max_body_size 100M;
proxy_set_header Connection "";
proxy_set_header Host $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_http_version 1.1;
proxy_pass http://backend;
}
}

# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the '$ssl_early_data' variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
"~." $ssl_early_data;
default "";
}

Коли закінчите, збережіть файл і вийдіть з редактора.

Тепер активуйте блок сервера Nginx і перевірте свій синтаксис Nginx. Якщо ви виправили синтаксис, ви побачите вихідний сигнал ‘syntax is ok – test is successful‘.

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

Нарешті, виконайте команду ‘systemctl‘ нижче, щоб перезапустити службу Nginx і застосувати зміни. Завдяки цьому Mattermost працюватиме під зворотним проксі Nginx.

sudo systemctl restart nginx

Створення першого робочого простору в Mattermost

Відкрийте веб-браузер і перейдіть на сторінку https://mattermost.infoit.local. Якщо інсталяція пройшла успішно, вам буде запропоновано створити нового адміністратора для Mattermost.

Введіть нового користувача адміністратора, електронну пошту та пароль, а потім натиснітьk ‘Create Account’.

Як встановити Mattermost на Debian 12

 

Введіть назву своєї організації та натисніть ‘Continue‘.

Як встановити Mattermost на Debian 12

Для інтеграції з GitHub, Gitlab, Jira та/або Zoom виберіть за потреби. А потім знову натисніть ‘Continue‘ .

Як встановити Mattermost на Debian 12

Натисніть ‘Finish setup‘ , щоб завершити налаштування.

Як встановити Mattermost на Debian 12

Після завершення процесу ви побачите інформаційну панель Mattermost, як показано нижче:

Як встановити Mattermost на Debian 12

Висновок

Вітаємо! Ви завершили встановлення Mattermost на сервері Debian 12. Ви вже працюєте з PostgreSQL як базою даних і Nginx як зворотним проксі-сервером. Нарешті, ви також захистили Mattermost за допомогою HTTPS через Certbot і Letsencrypt. На наступному кроці вам може знадобитися додати SMTP-сервер до вашої інсталяції Mattermost, щоб дозволити сповіщення електронною поштою. Крім того, ви також можете інтегрувати Mattermost зі сторонніми програмами.

Прокрутка до верху