Mattermost (Русский)
С домашней страницы 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.
- При установке будут созданы пользователь и группа
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-сокет и перейдите к соответствующему разделу.
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-сокет.
- TCP-сокет:
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
- Сохраните настройки
- Установите SMTP сервер (SMTP Server) на
- Обновите Настройки сайта > Уведомления (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-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 для тестирования переводов и запросов на слияние.