LoginSignup
5
2

More than 1 year has passed since last update.

SlackからMattermostへの移行

Posted at

はじめに

2022年9月1日から、Slackのフリープランは過去90日間のメッセージ履歴とファイルストレージしか利用できなくなります。
そのため、過去90日より前を参照するには「Slackの有料化」or「別サービスへの移行」が必要になります。
ここでは「別サービスへの移行」として、SlackライクなMattermostへの移行手順をまとめます。

ざっくり手順

  1. Slackデータのエクスポート
  2. Slack APIの設定
  3. エクスポートファイルにメールアドレスと添付ファイルを付与
  4. Mattermostをデプロイ~初期設定
  5. Mattermost用に変換
  6. Mattermostへインポート
  7. 日本語検索できるように、MySQLのインデックス再作成

うまくいかなかった点

  • チャンネル名を移行できない
    c01b7hbsvlpといったランダムな文字列になる。

  • 添付ファイルを移行できない
    MaxFileSizeは問題ないはずなのに、Unable to upload file. File is too large.と怒られ、諦めた。

環境

  • Mac 12.3.1
  • Docker Desktop 4.8.1

手順

1. Slackデータのエクスポート

管理者権限があれば、「設定と管理」->「ワークスペースの設定」で、右上に「データのインポート/エクスポート」が表示される。

2. Slack APIの設定

Migration guideの通り。
image.png

3. エクスポートファイルにメールアドレスと添付ファイルを付与

  • slack-advanced-exporterをダウンロード
    /usr/local/binなどに保存

  • エクスポートファイルにメールアドレスと添付ファイルを付与

slack-advanced-exporter --input-archive <SLACK EXPORT FILE> --output-archive export-with-emails.zip fetch-emails --api-token <SLACK TOKEN>
slack-advanced-exporter --input-archive export-with-emails.zip --output-archive export-with-emails-and-attachments.zip fetch-attachments

4. Mattermostをデプロイ~初期設定

  • Dockerに登録
docker run --name mattermost-preview -d --publish 8065:8065 mattermost/mattermost-preview

5. Mattermost用に変換

  • mmetlをダウンロード
    /usr/local/binなどに保存

  • Mattermost用に変換

mmetl transform slack --team <TEAM NAME> --file export-with-emails-and-attachments.zip --output mattermost_import.jsonl
  • bulk-export-attachmentsフォルダをdataフォルダへ入れてzipファイル化
    Mattermostへインポート時にエラーになるため。
mkdir data
mv bulk-export-attachments data
zip -r mattermost-bulk-import.zip data mattermost_import.jsonl

また、Mattermostへインポート時にUnable to upload file. File is too large.といったエラーになる場合、Mattermostの設定(MaxFileSize)を確認する。
私の場合、設定に問題がなくてもエラーになったため、添付ファイルは諦めて、cp /dev/null bulk-export-attachments/xxxxxxxxxxといったように、0バイトのファイルに書き換えた。

6. Mattermostへインポート

  • ホスト側からコンテナ側へファイルをコピー
    sudo docker psでコンテナのIDを確認し、sudo docker cp ...にて。

  • コンテナ側でインポート前にログイン

cd /mm/mattermost/bin
mmctl auth login http://localhost:8065

「Connection name」は無視、「Username」「Password」はMattermostへの登録内容を入力する。

  • コンテナ側でインポート
mmctl import upload ./mattermost-bulk-import.zip
mmctl import list available
mmctl import process <IMPORT FILE NAME>
mmctl import job show <JOB ID> --json
  • インポート後の確認
    インポートが終わればMattermostのCHANNELSに表示される。
    もし、SlackとMattermostでメールアドレスが異なる場合、チーム名の横の「+」->「Browse Channels」から「Join」する。

7. 日本語検索できるように、MySQLのインデックス再作成

  • Dockerにvimをインストール
apt-get update
apt-get install vim
  • /etc/mysql/my.cnfに以下を追加
[mysql] default-character-set = utf8mb4
[mysqld] character-set-server = utf8mb4
innodb_large_prefix = ON
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
  • MySQLもしくはdockerごと再起動し、以下のSQLを実行
mysql> ALTER TABLE Posts DROP INDEX idx_posts_message_txt;
mysql> ALTER TABLE Posts ADD FULLTEXT INDEX idx_posts_message_txt (`Message`) WITH PARSER ngram COMMENT 'ngram reindex';

参考にした記事

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2