Як встановити 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‘.
Після створення нового користувача та бази даних PostgreSQL ви будете верифікувати свого користувача PostgreSQL, щоб переконатися, що він може увійти на сервер PostgreSQL.
Тепер виконайте команду ‘psql‘ нижче, щоб увійти на сервер PostgreSQL за допомогою користувача ‘mattermost‘. Введіть пароль, коли з’явиться відповідний запит.
sudo -u postgres psql --host=localhost --dbname=mattermost --username=mmuser --password
Увійшовши в систему, перевірте своє з’єднання за наступним запитом:
\conninfo
Ви побачите статус підключення до PostgreSQL таким чином:
Встановлення 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» запущена та увімкнена
Налаштування 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’.
Введіть назву своєї організації та натисніть ‘Continue‘.
Для інтеграції з GitHub, Gitlab, Jira та/або Zoom виберіть за потреби. А потім знову натисніть ‘Continue‘ .
Натисніть ‘Finish setup‘ , щоб завершити налаштування.
Після завершення процесу ви побачите інформаційну панель Mattermost, як показано нижче:
Висновок
Вітаємо! Ви завершили встановлення Mattermost на сервері Debian 12. Ви вже працюєте з PostgreSQL як базою даних і Nginx як зворотним проксі-сервером. Нарешті, ви також захистили Mattermost за допомогою HTTPS через Certbot і Letsencrypt. На наступному кроці вам може знадобитися додати SMTP-сервер до вашої інсталяції Mattermost, щоб дозволити сповіщення електронною поштою. Крім того, ви також можете інтегрувати Mattermost зі сторонніми програмами.