Mattermost (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
Mattermost
. Дата последней синхронизации: 6 ноября 2022. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
С
домашней страницы Mattermost
:
Mattermost — это self-hosted альтернатива Slack с открытым исходным кодом. Являясь альтернативой проприетарным SaaS-системам обмена сообщениями, Mattermost собирает все сообщения вашей команды в одном месте, делая их доступными для просмотра и поиска в любом месте.
В этой статье описано, как установить и настроить сервер Mattermost.
Установка
Сервер Mattermost может быть установлен двумя способами:
С помощью
Docker
по шагам, описанным в разделе
#С помощью Docker
;
С помощью
пакета
по шагам, описанным в разделе
#С помощью пакета
.
Клиент для рабочего стола на базе
Electron
предоставляется пакетом
mattermost-desktop
.
С помощью Docker
При использовании Docker вам не нужно вручную устанавливать сервер базы данных и настраивать зависимости Mattermost. Так как образ docker поставляется со всеми зависимостями, вам потребуется меньше работы.
Однако недостаток такого подхода в том, что вы не можете выбрать нужный вам бэкенд базы данных или веб-сервер. Можно использовать только то, что предоставляется образами Docker, или же сделать свой собственный образ.
Установите Docker
(в том числе
docker-compose
).
Скачайте исходники:
$ git clone https://github.com/mattermost/mattermost-docker.git
Отредактируйте файл
docker-compose.yml
:
Раскомментируйте строку
args:
.
Для редакции Team удалите комментарии в строке:
- edition=team
.
Приведите UID/GID в разделе в соответствие с владельцем ваших папок
./volumes/app/mattermost/*
.
Пропишите проброс портов в разделе
app
(например, между
build
и
restart
)
ports:
  - "127.0.0.1:8065:8000"
Соберите и запустите контейнер docker:
$ cd mattermost-docker
$ docker-compose build
$ docker-compose up -d
Откройте
http://localhost:8000/
в вашем браузере.
Обратитесь к
официальному руководству
, чтобы узнать, как настроить TLS, электронную почту, включить функции Enterprise и использовать несколько серверных узлов с помощью Docker Compose.
На
официальной странице Mattermost Docker Hub
также представлены некоторые образы Docker. Пожалуйста, обратитесь также к
репозиторию Docker-образов Mattermost
.
С помощью пакета
Установите
пакет
mattermost
. Разрабатываемая версия доступна в пакете
mattermost-git
AUR
[
ссылка недействительна
: package not found]
.
При установке будут созданы пользователь и группа
mattermost
.
Настройка выполняется в файле
/etc/webapps/mattermost/config.json
, где владельцем и группой
/etc/webapps/mattermost/
и
/etc/webapps/mattermost/config.json
является
mattermost:mattermost
.
В
/var/lib/mattermost/
, которым тоже владеет
mattermost:mattermost
, можно найти:
files
— папку, где хранятся все пользовательские файлы, размещённые в сообщениях, изображения профилей и команд;
client
— папку, связанную с клиентом webapp, которая содержит файлы, переписываемые webapp во время выполнения, а в подпапке
plugins
— веб-плагины, установленные через веб-интерфейс;
plugins
— папку, связанную с плагинами (серверная часть).
В
/var/log/mattermost
— папке, созданной в процессе установки (
tmpfiles.d
) — хранятся журналы сервера в формате json.
/var/log/mattermost
и
/var/log/mattermost/mattermost.log
принадлежат
mattermost:mattermost
.
Остальная часть неизменяемого каталога Mattermost находится по адресу
/usr/share/webapps/mattermost/
, и её владельцем является
root:root
.
Далее требуется
#Настройка базы данных
.
Настройка базы данных
Для работы Mattermost требуется база данных. Если вы планируете запускать его на той же машине, сначала установите
MySQL
или
PostgreSQL
в качестве базы данных.
Следуйте одному из следующих разделов, а затем переходите к разделу
#Настройка Mattermost
.
MySQL/MariaDB
$ mysql -u root -p
CREATE DATABASE mattermostdb;
CREATE USER mmuser IDENTIFIED BY 'mmuser_password';
GRANT ALL ON mattermostdb.* TO mmuser;
PostgreSQL
1.
Установите
и
настройте
PostgreSQL.
2. Выберите TCP или UNIX-сокет и перейдите к соответствующему разделу.
Примечание
Когда Mattermost и PostgreSQL находятся на одной машине, предпочтительнее использовать Unix-сокет, так как он быстрее и безопаснее.
TCP-сокет
3. Создайте нового пользователя, подключившись к серверу как пользователь
postgres
(вам будет предложено ввести пароль для нового пользователя):
$ sudo -u postgres createuser -P mmuser
4. Создайте базу данных Mattermost, принадлежащую пользователю
mmuser
:
$ sudo -u postgres createdb -O mmuser mattermostdb
5. Настройте
доступ с удалённых хостов
.
6. Проверьте, что всё работает:
$ psql --host=
ip_адрес
--dbname=mattermostdb --username=mmuser --password
Unix-сокет
3. Создайте нового пользователя, подключившись к серверу как пользователь
postgres
:
$ sudo -u postgres createuser mattermost
4. Создайте базу данных Mattermost, принадлежащую пользователю
mattermost
:
$ sudo -u postgres createdb -O mattermost mattermostdb
5. Настройте Unix-сокет, добавив следующую строку в
/var/lib/postgres/data/pg_hba.conf
:
local    mattermostdb    mattermost    peer
6.
Перезапустите
службу
postgresql.service
.
7. Проверьте, что всё работает:
$ sudo -u mattermost psql --dbname=mattermostdb --username=mattermost
Настройка Mattermost
Настройка Mattermost выполняется в файле
/etc/webapps/mattermost/config.json
. Строки должны быть заключены в кавычки.
Есть две настройки, которые необходимо изменить под вашу базу данных.
Настройка
DriverName
:
mysql
для MySQL и
postgres
для PostgreSQL.
Настройка
DataSource
:
Для MySQL установите значение
mmuser
:
mmuser_password
@unix(/run/mysqld/mysqld.sock)/
mattermostdb
?charset=utf8mb4,utf8
.
Для PostgreSQL
TCP-сокет:
postgres://
mmuser
:
mmuser_password
@127.0.0.1:5432/
mattermostdb
?sslmode=disable&connect_timeout=10
Unix-сокет:
postgres:///
mattermostdb
?host=/run/postgresql
; после
postgres:
должны стоять 3 слэша;
mattermostdb
— имя базы данных, а
/run/postgresql
- каталог, содержащий Unix-сокет.
Примечание
Не забудьте поменять
mmuser_password
на реальный пароль пользователя.
Запустите/включите
службу
mattermost.service
и откройте
http://localhost:8065/
Начальная настройка Mattermost
Перейдите к вашей установке Mattermost и создайте команду и пользователя.
Первый пользователь в системе автоматически получает роль
system_admin
, которая даёт вам доступ к системной консоли.
Нажмите на кнопку меню в верхнем левом углу и выберите пункт
Системная консоль
(
System Console
).
Обновите настройки
Окружение > SMTP
(
Environment > SMTP
) для настройки отправки почты через SMTP. В приведённом ниже примере предполагается использование AmazonSES.
Установите
SMTP сервер
(
SMTP Server
) на
email-smtp.us-east-1.amazonaws.com
Установите
Порт SMTP сервера
(
SMTP Server Port
) на
465
Установите
Включить SMTP аутентификацию
(
Enable SMTP Authentication
) на
да
(
true
)
Установите
Имя пользователя SMTP
(
SMTP Server Username
) на
имя_пользователя_smtp
Установите
Пароль SMTP Сервера
(
SMTP Server Password
) на
пароль_smtp
Установите
Безопасность соединения
(
Connection Security
) на
TLS
Сохраните настройки
Обновите
Настройки сайта > Уведомления
(
Site configuration > Notifications
):
Установите
Включить уведомления по электронной почте
(
Send Email Notifications
) на
да
(
true
)
Установите
Отображаемое в уведомлении имя
(
Notification Display Name
) на
No-Reply
Установите
Уведомления приходят с адреса
(
Notification From Address
) на
mattermost@example.com
Установите
Эл.почта поддержки
(
Support Email Address
) на какой-нибудь реальный адрес, который может принимать входящие письма
Сохраните настройки
Обновите настройки
Аутентификация > Электронная почта
(
Authentication > Email
), изменив
Требовать подтверждение адреса электронной почты
(
Require Email Verification
) на
да
(
true
).
Обновите настройки
Окружение > Ведение журнала
(
Environment > Logging
), установив
Исходящие журналы в консоль
(
Log to The Console
) на
нет
(
false
).
По желанию измените другие настройки.
Перезапустите
службу
mattermost.service
.
Плагины
Плагины включены по умолчанию, но требуют доступа к каталогу plugins, который должен быть создан с правильными правами доступа:
$ mkdir /usr/share/webapps/mattermost/client/plugins
$ chown mattermost:mattermost /usr/share/webapps/mattermost/client/plugins
Советы и рекомендации
Доверенный HTTPS через обратный веб-прокси
Для безопасного доступа к вашему серверу Mattermost из приложений для Android и iOS, которые не поддерживают самоподписанные TLS-сертификаты, вы можете
настроить обратный веб-прокси
.
Основными преимуществами прокси являются:
SSL-терминирование
Перенаправление с HTTP на HTTPS
Перенаправление порта 80 на 8065
Стандартные журналы запросов
Проксирование может быть реализовано на большинстве веб-серверов.
nginx
Установите и запустите
nginx
, предпочтительно
nginx-mainline
.
Настройте ваше доменное имя (например,
mattermost.example.com
) так, чтобы оно указывало на ваш сервер.
Настройте nginx для проксирования соединений из интернета на сервер Mattermost. Создайте и отредактируйте файл настроек nginx
/etc/nginx/sites-available/mattermost
.
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    mattermost.example.com;

    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_pass http://backend;
    }
}
Включите этот файл:
# mkdir /etc/nginx/sites-enabled
# ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/mattermost
Перезапустите
службу
nginx.service
.
Убедитесь, что вы можете получить доступ к Mattermost через прокси:
$ curl
http://localhost/
Вы должны увидеть страницу под названием
Mattermost
.
Настройте
Let's Encrypt
.
Lighttpd2
Пример конфигурации для
lighttpd2-git
AUR
, чтобы действовать как прокси для Mattermost, предполагая, что у вас есть сертификат в
/etc/lighttpd2/certs/lighttpd2.pem
.
Смотрите
mod_vhost
, если вы хотите перенести прокси на виртуальный хост.
/etc/lighttpd2/lighttpd.conf
setup {

    module_load [
        "mod_accesslog",
        "mod_proxy",
        "mod_openssl"
    ];

    openssl [
        "listen" => "0.0.0.0:443",
        "listen" => "[::]:443",
        "pemfile" => "/etc/lighttpd2/certs/lighttpd2.pem",
        "options" => ["ALL", "NO_TICKET"],
        "verify" => true,
        "verify-any" => true,
        "verify-depth" => 9
    ];

    listen "0.0.0.0:80";
    listen "[::]:80";

    log ["debug" => "", default => "/var/log/lighttpd2/error.log"];
    accesslog "/var/log/lighttpd2/access.log";
    accesslog.format "%h %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}\"";

    static.exlude_extensions [ ".php", ".pl", ".fcgi", "~", ".inc" ];

}

openssl.setenv "client-cert";
keepalive.timeout 360;

docroot "/srv/http";
index [ "index.php", "index.html", "index.htm" ];

include "/etc/lighttpd2/mimetypes.conf";

proxy "127.0.0.1:8065";
Тестирование переводов и запросов на слияние
Можно использовать неофициальный скрипт
mattermost-prepare-pkgbuild
для тестирования переводов и запросов на слияние.