Как установить Mattermost с прокси Nginx и бесплатным SSL Let’s Encrypt на Ubuntu 24.04

Mattermost – это альтернатива Slack и Microsoft Teams с открытым исходным кодом. Он позволяет самостоятельно организовать онлайн-чат с множеством функций, таких как обмен файлами, поиск, автоматизация и интеграция с третьими сторонами.

Mattermost – это платформа для совместной работы, разработанная как внутренний чат для организаций и компаний. Она сочетает в себе системы обмена сообщениями, автоматизации, интеграции и безопасности для критически важных рабочих процессов.

В этом руководстве вы узнаете, как установить Mattermost на сервер Ubuntu 24.04. Вы установите Mattermost с PostgreSQL в качестве базы данных и Nginx в качестве обратного прокси. Вы также обеспечите безопасность Mattermost с помощью HTTPS, а затем создадите свое первое рабочее пространство с Mattermost.

Установка зависимостей

Чтобы установить Mattermost, необходимо установить зависимости на ваш сервер, включая сервер базы данных PostgreSQL, веб-сервер Nginx и Certbot.

Сначала запустите команду ‘apt‘ команда ниже, чтобы обновить индекс пакетов Ubuntu и установить такие зависимости, как PostgreSQL, веб-сервер Nginx и Certbot. Сервер PostgreSQL будет использоваться в качестве базы данных по умолчанию для Mattermost, а Nginx будет использоваться в качестве обратного прокси.

sudo apt update && sudo apt install postgresql postgresql-contrib nginx certbot

Введите ‘Y‘, чтобы подтвердить установку.

установить deps

После установки проверьте состояние службы PostgreSQL, чтобы убедиться, что она запущена.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Ниже показано, что сервер PostgreSQL включен и работает.

проверить postgresql

Теперь проверьте состояние веб-сервера Nginx с помощью команды ниже. Вы увидите, что Nginx также запущен и включен в вашей системе Ubuntu.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

проверить nginx

Настройка базы данных и пользователя PostgreSQL

После установки зависимостей вы создадите базу данных PostgreSQL и пользователя для Mattermost с помощью ‘psql’ или оболочки PostgreSQL. Наконец, вы также проведете аутентификацию в PostgreSQL с новым пользователем.

Войдите в оболочку PostgreSQL с помощью команды ‘psql‘ команда ниже.

sudo -u postgres psql

Теперь выполните следующие запросы для создания новой базы данных ‘mattermostdb‘ и новый пользователь ‘mmuser’ с паролем ‘пароль‘.

CREATE DATABASE mattermostdb;
CREATE USER mmuser WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE mattermostdb to mmuser;

создать нового пользователя

После создания базы данных и пользователя выполните приведенный ниже запрос, чтобы получить список доступных баз данных и пользователей на вашем сервере PostgreSQL.

\du
\l

В следующем выводе вы можете увидеть базу данных ‘mattermostdb‘ и пользователь ‘mmuser‘ доступны на сервере PostgreSQL.

Теперь введите ‘выйти‘ для выхода из PostgreSQL.

список пользователей

Далее запустите команду ‘psql‘ команда ниже, чтобы войти в базу данных ‘mattermostdb‘ как пользователь ‘mmuser‘. Введите пароль при появлении запроса.

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

Наконец, проверьте подключение, выполнив команду ‘\conninfo‘ запрос ниже. Убедитесь, что вы вошли в систему как пользователь ‘mmuser‘ к базе данных ‘mattermostdb‘.

\conninfo

проверка соединения

Загрузка Mattermost

Теперь, когда база данных готова, вы загрузите Mattermost, создадите каталог данных, установите доменное имя Mattermost и PostgreSQL в качестве базы данных, а затем установите соответствующие права и права собственности для Mattermost.

Сначала запустите команду ‘useradd‘ команда ниже, чтобы создать новую ‘mattermost‘ пользователя в вашей системе.

sudo useradd --system --user-group mattermost

Загрузите бинарный файл Mattermost, используя ‘wget‘ команда ниже. Затем извлеките Mattermost с помощью команды ‘tar’ команда.

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

Теперь переместите извлеченную директорию в каталог ‘/opt/mattermost‘ с помощью следующей команды.

mv mattermost /opt/

Далее создайте новый каталог данных ‘/var/mattermost/data‘ для хранения пользовательских данных.

sudo mkdir -p /opt/mattermost/data

После этого отредактируйте конфигурацию по умолчанию ‘/opt/mattermost/config/config.json‘ с помощью ‘nano‘ редактор.

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

Внутри ‘ServiceSettings‘ раздел, введите свое доменное имя в поле ‘SiteURL‘ строка.

"ServiceSettings": {
"SiteURL": "mattermost.local",

На ‘SqlSettings‘, измените данные базы данных на данные вашей базы данных PostgreSQL.

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

Сохраните файл и завершите работу.

Наконец, выполните следующие команды, чтобы изменить право собственности на файл ‘/opt/mattermost‘ директорию пользователю ‘mattermost’ и разрешите доступ на запись в эту директорию.

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

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

cd /opt/mattermost
sudo -u mattermost ./bin/mattermost

Запуск Mattermost в качестве службы systemd

В этом разделе вы создадите новый файл службы systemd для 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

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

sudo systemctl enable --now mattermost
sudo systemctl status mattermost

Если Mattermost запущена, вы увидите на экране следующее сообщение.

служба mattermost

Настройка Nginx в качестве обратного прокси-сервера

На данный момент Mattermost запущен, и теперь вам предстоит сгенерировать SSL/TLS сертификаты для Mattermost с помощью Certbot, а затем настроить Nginx в качестве обратного прокси. Убедитесь, что ваше доменное имя указывает на IP-адрес сервера.

Прежде чем настраивать Nginx, запустите команду ‘certbot‘ команда ниже, чтобы сгенерировать SSL/TLS сертификаты для вашей установки Mattermost. Не забудьте изменить адрес электронной почты и доменное имя на свои данные.

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

Теперь откройте стандартный файл конфигурации Nginx ‘/etc/nginx/nginx.conf‘ используя ‘nano‘.

sudo nano /etc/nginx/nginx.conf

Вставьте следующую строку перед ‘включить /etc/nginx/conf.d/*.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

Вставьте следующую конфигурацию и не забудьте изменить имя домена на свое.

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

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

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

http2_push_preload on; # Enable HTTP/2 Server Push

ssl_certificate /etc/letsencrypt/live/mattermost.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mattermost.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 “”;
}

Сохраните файл и выйдите из редактора.

Теперь выполните приведенную ниже команду, чтобы активировать серверный блок ‘mattermost’ и проверить синтаксис Nginx. Если синтаксис Nginx правильный, вы увидите сообщение типа ‘синтаксис в порядке – тест пройден успешно‘.

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

Наконец, запустите программу ‘systemctl‘ команда ниже, чтобы снова запустить веб-сервер Nginx. После этого установка Mattermost будет готова с включенным HTTPS.

sudo systemctl start nginx

настройка nginx

Доступ к Mattermost

Откройте веб-браузер и перейдите на сайт с доменным именем https://mattermost.local/. Здесь вы можете создать свое первое рабочее пространство в Mattermost.

настройка mattermost

  • Нажмите на кнопку ‘Просмотр в браузере‘, чтобы настроить Mattermost.
  • Введите данные своей учетной записи и нажмите ‘Создать учетную запись‘.
  • Введите название вашей организации и нажмите ‘Продолжить‘.
  • Нажмите ‘Завершить настройку‘, чтобы завершить настройку.

Теперь вы увидите следующую приборную панель вашего рабочего пространства.

mattermost

Заключение

Поздравляем! Вы завершили установку Mattermost на сервер Ubuntu 24.04. Mattermost работает с PostgreSQL в качестве базы данных и Nginx в качестве обратного прокси. Вы также защитили Mattermost с помощью SSL от Let’s Encrypt.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *