Как переехать из Slack в Mattermost — личный опыт

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Summary: Из-за проблем со Slack нам нужно было искать альтернативу, а терять накопленные наработки не хотелось. Мы нашли способ переехать относительно безболезненно и с сохранением данных — рассказываем, как это сделали.

Приветствую, уважаемые читатели Хабра. Меня зовут Иван, я руковожу направлением омниканальных решений в Лиге Цифровой Экономики. На старте одного из проектов около шести лет назад мы с заказчиком решили, что будем вести все проектные коммуникации в Slack. На тот момент для нашей небольшой команды стоил он не так дорого, да еще и был удобнее, чем альтернативные мессенджеры.

Шли годы, наши с заказчиком команды расширялись, а Slack становился не просто мессенджером, а огромной базой знаний: он оброс всевозможными ботами (как готовыми, так и самописными) и по сути превратился в цифровое рабочее место для каждого сотрудника.

Но все хорошее когда-нибудь заканчивается. Так произошло и с нашим Slack. В 2022 году появились первые новости о блокировках воркспейсов у некоторых российских компаний. Позже возникли и другие трудности, например, нельзя было оплатить подписку российскими картами. 

Сохранялись серьезные риски:

  1. Могла потеряться вся накопившаяся база знаний и боты для комфортной работы.

  2. Была вероятность лишиться удобного и привычного мессенджера.

  3. Иностранный облачный продукт было невозможно контролировать, к нему появилось недоверие: он показал свое отношение к пользователям, заблокировав несколько крупных воркспейсов без суда и следствия.

В этот момент мы начали думать об альтернативах.

Новый мессенджер должен был соответствовать нескольким важным критериям:

  1. Возможность использования on-premise без подписок и оплаты.

  2. Open Source с большим комьюнити для того, чтобы мы могли находить ответы на интересующие вопросы и кастомизировать необходимое.

  3. Возможность импортировать в новый мессенджер историю из Slack.

  4. Интерфейс, похожий на Slack, и привычные функции.

В этом посте не буду приводить сравнительную таблицу: единственным мессенджером, который удовлетворял бы нашим критериям, оказался Mattermost.

Я в деталях расскажу, как мы подошли к вопросу переезда и как решали возникшие в процессе проблемы. Не претендую на абсолютную правильность, но все работает уже около полугода, и довольно хорошо.

1. Установка Mattermost (проблем не возникло)

  • Установка БД:
    sudo apt install postgresql postgresql-contrib

  • Установка приложения:
    sudo wget https://releases.mattermost.com//mattermost--linux-amd64.tar.gz
    sudo tar -xvzf mattermost*.gz

  • Создание сервиса:
    sudo nano /lib/systemd/system/mattermost.service

  • Балансировка и HTTPS:
    sudo apt install nginx
    sudo apt install certbot
    sudo certbot certonly —standalone -d <space_url>

    Более детально на примере Ununtu 20.04 смотрите здесь.

2. Базовое администрирование

  • Запуск/остановка/перезапуск:
    sudo systemctl start mattermost.service
    sudo systemctl restart mattermost.service
    sudo systemctl stop mattermost.service

  • Файл конфигурации:
    /opt/mattermost/config/config.json
    @mm-01:/opt/mattermost/config$ ll@mm-01:/opt/mattermost/logs$ cd /opt/mattermost/config/
    @mm-01:/opt/mattermost/config$ ll
    total 40
    drwxrwxr-x 2 mattermost mattermost 4096 May 24 18:19 ./
    drwxrwxr-x 12 mattermost mattermost 4096 Mar 25 08:17 ../
    -rw-rw-r-- 1 mattermost mattermost 1069 Mar 15 15:58 cloud_defaults.json
    -rw--w---- 1 mattermost mattermost 21561 May 24 18:19 config.json
    -rw-rw-r-- 1 mattermost mattermost 243 Mar 15 15:58 README.md

3. Экспорт из Slack

Мы собрали важные каналы в Slack (публичных и приватные) для переноса истории сообщений в Mattermost. Тут сразу скажу, что нам важны были преимущественно сообщения, а не медиаконтент, поэтому его переносить мы не стали. 

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

Мы изучили различные инструменты для бэкапирования и миграции, даже рассмотрели вариант собственного написания скриптов. В итоге решили воспользоваться инструментом backupery

Купили лицензию, добавили системного пользователя в нужные приватные каналы и экспортировали историю сообщений. На выходе получилось два артефакта: файл для дальнейшего импорта в Mattermost, а также файлы HTML и папки с контентом (при открытии index.html можно ходить по чатам и качать контент).

4.Импорт в Mattermost

Рекомендуется сначала протестить импорт/экспорт на тестовых Slack/Mattermost!

Для преобразования экспорта из Slack понадобится инструмент mmetl.

  • Для упрощения работы с файлами можно добавить каталог с утилитами в $PATH и работать с файлами из любой директории.

    export PATH="/opt/mattermost/bin:$PATH"

  • Сначала необходимо преобразовать экспорт в формат для Mattermost.

    mmetl transform slack --team <team_name> --file slackExport.zip --output mattermost_import.json

     zip mattermost-import.zip mattermost_import.json

  • Перед выполнением следующих команд надо авторизоваться через mmctl.

    mmctl auth login https://chat.address.ru  --username <username> --password <password>

  • Сначала следует загрузить получившийся файл.

    mmctl import upload ./mattermost-import.zip

  • После загрузки проверить, есть ли он в списке файлов импорта, скопировать сгенерированное инструментом имя документа и начать сам процесс.

    mmctl import list available

    mmctl import process <id>_mattermost-import.zip

  • Статус можно проверить, использовав job id, который выдаёт прошлая команда:

    mmctl import job show <job_id> --json

При успешном импорте должны появиться аккаунты пользователей и каналы.

Если учётные записи деактивированы в Slack, они снова станут активными в Mattermost. Необходимо отключить их вручную.

5. Удаление лишних пользователей через CLI

Документация по mmctl находится здесь.

Репозиторий утилиты — здесь.

Перед выполнением команд сначала надо авторизоваться через mmctl.

  • Перед выполнением команд сначала надо авторизоваться через mmctl.

    ./mmctl auth login https://chat.address.ru  --username <username> --password <password>

  • Удаление пользователя (больше команд здесь):

    ./mmctl user delete <id> --confirm

6. Установка плагинов (на примере remind)

Стоит отметить, что большая часть нужных плагинов может быть установлена через GUI (в клиенте нужно перейти в раздел Marketplace и инсталлировать необходимое). Однако через GUI ставится не все, поэтому далее привожу команду, которая позволяет сделать это через CLI (на примере remind, он позволяет создавать различные напоминания).

./mmctl plugin add /opt/com.github.scottleedavis.mattermost-plugin-remind-0.4.5.tar.gz

7. Настройка привычного интерфейса и инструментария

Включаем Threads как в Slack (начиная с версии 7.2, включается в консоли администрирования для всех, в предыдущих каждому пользователю нужно делать это самостоятельно).

Settings -> Display -> Collapsed Reply Threads (Beta) -> On -> Save

Оформление (цветовая тема) как в Slack:

Settings -> Display -> Theme -> Custom Theme

Нажимаем на ссылку Import theme colors from Slack. В открывшемся поп-апе вставляем, например, следующее: 

#3F0E40,#350d36,#1164A3,#FFFFFF,#350D36,#FFFFFF,#2BAC76,#CD2553,#350d36,#FFFFFF

Сохраняем. Либо же сразу вставляем тему в окно “Copy and paste to share theme colors”.

Большое количество тем есть на нескольких порталах: для Slack, для Mattermost.

Групповое уведомление (аналог @group в Slack)

Первый вариант.

  • Групповое тегание (мы называем это "собакнуть"

Источник: https://habr.com/ru/company/digitalleague/blog/701446/


Интересные статьи

Интересные статьи

Все едут жить в Болгарию, Турцию, Черногорию. На крайний случай, на Кипр. Румынию, кажется, никто и не рассматривает. Но почему? Море есть, горы — тоже. А культурных недопониман...
Я представитель микробизнеса, который делает софт для коммерческих заказчиков из научной сферы. Карантин и вынужденная самоизоляция 2020 года заставили меня искать заказчиков в го...
Рады объявить, что компания «Флант» пополняет свой вклад в Open Source-инструменты для Kubernetes, выпустив альфа-версию драйвера CSI (Container Storage Interface) для Яндекс.Облака. Но пе...
Данная статья будет полезна тем, кто начинает работу с карт-принтерами(Evolis Primacy и Smart-51) и кодировкой NFC карт типа Mifare Classic и Mifare DESFire EV2. В первой части мы опишем общее вп...
Всем привет. В этой статье хотел рассказать о том, как я научился работать с микроконтроллерами (далее по тексту — МК) и на какие подводные камни налетел. Сразу скажу — статья не претендует на...