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‘, чтобы подтвердить установку.
После установки проверьте состояние службы PostgreSQL, чтобы убедиться, что она запущена.
sudo systemctl is-enabled postgresql sudo systemctl status postgresql
Ниже показано, что сервер PostgreSQL включен и работает.
Теперь проверьте состояние веб-сервера Nginx с помощью команды ниже. Вы увидите, что Nginx также запущен и включен в вашей системе Ubuntu.
sudo systemctl is-enabled nginx sudo systemctl status 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 запущена, вы увидите на экране следующее сообщение.
Настройка 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
Доступ к Mattermost
Откройте веб-браузер и перейдите на сайт с доменным именем https://mattermost.local/. Здесь вы можете создать свое первое рабочее пространство в Mattermost.
- Нажмите на кнопку ‘Просмотр в браузере‘, чтобы настроить Mattermost.
- Введите данные своей учетной записи и нажмите ‘Создать учетную запись‘.
- Введите название вашей организации и нажмите ‘Продолжить‘.
- Нажмите ‘Завершить настройку‘, чтобы завершить настройку.
Теперь вы увидите следующую приборную панель вашего рабочего пространства.
Заключение
Поздравляем! Вы завершили установку Mattermost на сервер Ubuntu 24.04. Mattermost работает с PostgreSQL в качестве базы данных и Nginx в качестве обратного прокси. Вы также защитили Mattermost с помощью SSL от Let’s Encrypt.