Mattermost (Русский) - ArchWiki

Jump to content

# Mattermost (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи 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-gitAUR[ссылка недействительна: 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

1. Перейдите к вашей установке Mattermost и создайте команду и пользователя.
2. Первый пользователь в системе автоматически получает роль `system_admin`, которая даёт вам доступ к системной консоли.
3. Нажмите на кнопку меню в верхнем левом углу и выберите пункт Системная консоль (System Console).
4. Обновите настройки Окружение > 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
   - Сохраните настройки
5. Обновите Настройки сайта > Уведомления (Site configuration > Notifications):
   - Установите Включить уведомления по электронной почте (Send Email Notifications) на да (true)
   - Установите Отображаемое в уведомлении имя (Notification Display Name) на `No-Reply`
   - Установите Уведомления приходят с адреса (Notification From Address) на `mattermost@example.com`
   - Установите Эл.почта поддержки (Support Email Address) на какой-нибудь реальный адрес, который может принимать входящие письма
   - Сохраните настройки
6. Обновите настройки Аутентификация > Электронная почта (Authentication > Email), изменив Требовать подтверждение адреса электронной почты (Require Email Verification) на да (true).
7. Обновите настройки Окружение > Ведение журнала (Environment > Logging), установив Исходящие журналы в консоль (Log to The Console) на нет (false).
8. По желанию измените другие настройки.
9. Перезапустите службу `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

1. Установите и запустите nginx, предпочтительно nginx-mainline.
2. Настройте ваше доменное имя (например, `mattermost.example.com`) так, чтобы оно указывало на ваш сервер.
3. Настройте 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;
           }
       }

4. Включите этот файл:

       # mkdir /etc/nginx/sites-enabled
       # ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/mattermost

5. Перезапустите службу `nginx.service`.
6. Убедитесь, что вы можете получить доступ к Mattermost через прокси:

       $ curl http://localhost/

   Вы должны увидеть страницу под названием `Mattermost`.
7. Настройте Let's Encrypt.

#### Lighttpd2

Пример конфигурации для lighttpd2-gitAUR, чтобы действовать как прокси для 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 для тестирования переводов и запросов на слияние.

Category:

- Web applications (Русский)

Hidden category:

- Pages with broken package links

Mattermost (Русский)
Add topic