Mattermost (Русский)

From ArchWiki

Tango-preferences-desktop-locale-modified.pngПеревод этой статьи или раздела не отражает оригинальное содержание.Tango-preferences-desktop-locale-modified.png

Причина: Невычитанная копипаста из переводчика DeepL. (Discuss)

С домашней страницы Mattermost:

Mattermost - это альтернатива Slack с открытым исходным кодом и самостоятельным хостингом. Являясь альтернативой проприетарным SaaS-системам обмена сообщениями, Mattermost собирает все ваши командные сообщения в одном месте, делая их доступными для поиска и поиска в любом месте.

В этой статье описано, как установить и настроить сервер Mattermost.

Установка

Сервер Mattermost может быть установлен двумя способами:

Клиент для рабочего стола на базе Electron предоставляется пакетом mattermost-desktop.

С Docker

Используя Docker, вам не нужно вручную устанавливать сервер базы данных и настраивать зависимости Mattermost. Так как образ docker поставляется со всеми зависимостями автоматически, вам потребуется меньше работы.

Однако, компромисс заключается в том, что вы не можете выбрать нужный вам бэкэнд базы данных или веб-сервер, а только те, которые предоставляются в образах докеров, если только вы не создадите свой собственный.

  • Install 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

Обратитесь к официальному руководству, чтобы узнать, как настроить TLS, электронную почту, включить функции Enterprise и использовать несколько серверных узлов с помощью Docker Compose.

На официальной странице Mattermost Docker Hub также представлены некоторые образы Docker. Пожалуйста, обратитесь также к репозиторию Docker-образов Mattermost.

Установка пакета

Установите пакет mattermost, или mattermost-gitAUR для версии разработки.

  • При установке будут созданы пользователь и группа 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 - веб-плагины, установленные через webui;
    • 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. Install и configure PostgreSQL.

2. Выберите TCP или UNIX Socket и перейдите к соответствующему разделу.

Примечание: Когда Mattermost и PostgreSQL находятся на одной машине, вы должны использовать сокет Unix, так как он быстрее и более безопасен

С помощью TCP-сокета

3. Создайте нового пользователя, подключившись к серверу как пользователь postgres (вам будет предложено ввести пароль для нового пользователя):

$ sudo -u postgres createuser -P mmuser

4. Создайте базу данных Mattermost, принадлежащую пользователю mmuser:

$ sudo -u postgres createdb -O mmuser mattermostdb

5. PostgreSQL#Настройте PostgreSQL для доступа с удаленных хостов.

6. Проверьте, что все работает:

$ psql --host=ip_address --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 mattermostdb mattermost peer

6. Restart 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 на пароль пользователя.

Start/enable mattermost.service и откройте http://localhost:8065/

Настройка Mattermost

  1. Перейдите к вашей установке Mattermost и создайте команду и пользователя.
  2. Первый пользователь в системе автоматически получает роль system_admin, которая дает вам доступ к системной консоли.
  3. На канале town-square нажмите на выпадающий список и выберите опцию System Console.
  4. Обновите настройки Уведомления > Электронная почта, чтобы настроить службу электронной почты SMTP. В приведенном ниже примере предполагается использование AmazonSES.
    • Установите Send Email Notifications в true.
    • Установите Require Email Verification на true.
    • Установите Имя отзыва на No-Reply.
    • Установите Feedback Email на mattermost@example.com
    • Установите SMTP Username на your_smtp_username
    • Установите SMTP Password на 'your_smtp_password
    • Установите SMTP сервер на email-smtp.us-east-1.amazonaws.com.
    • Установите SMTP порт на 465.
    • Установите Безопасность соединения на TLS.
    • Сохраните настройки
  5. Обновите настройки File > Storage, изменив Local Directory Location с ./data/ на /mattermost/data.
  6. Обновите настройки General > Logging, установив Log to The Console на false.
  7. Не стесняйтесь изменять другие настройки.
  8. Restart 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;
    
    сервер {
        listen 80;
        server_name mattermost.example.com;
    
        location ~ /api/v[0-9]+/(users/)?websocket$ {
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Соединение "upgrade";
            client_max_body_size 50M;
            proxy_set_header Хост $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 90;
            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. Включите сервер mattermost:
    # mkdir /etc/nginx/sites-enabled
    # ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/mattermost
    
  5. Restart 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
установка {

    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";
    слушать "[::]: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";

прокси "127.0.0.1:8065";

Тестирование переводов и запросов на поставку

Вы можете использовать неофициальный скрипт mattermost-prepare-pkgbuild для тестирования языков и запросов на перенос.