matterbridgeを使ったSlackとMattermostの共存

  • 投稿日:
  • by
  • カテゴリ:

Author

西川 浩平Kohei Nishikawa

西川浩平

タイムリーな情報共有と言えば、今日では「Slack」が圧倒的な知名度を誇っています。以前は、「Chatter」など業務特化のサービスが知られていたのですが、圧倒的なブランド力で「Slack」が席巻しています。

Slackは、SaaS型のクラウドサービスです。しかし、官公庁や教育機関、金融、重工業、病院など、機密性の高いデータとコミュニケーションには、専用サーバーで運用する「Mattermost」や「Rocket.Chat」などが注目を集めています。たとえば、全社的にはSlackを使うものの、とあるプロジェクトチームでは、お客様やパートナーとのタイムリーな情報共有にはセキュリティ重視が優先事項であるため、「Mattermost」を使うといった事態になり、会社からのお知らせなどを知るために常にSlackとMattermostの両方を使用することは非生産的です。

シンプルに考えれば、SlackとMattermostを橋渡しするツールがあれば解決しますよね?

そこで、「matterbridge」というツールがあります。「matterbridge」は、SlackとMattermostのみならず、様々なビジネスコラボレーションハブやチャットツールをサポートしており、異なるシステム間のメッセージをつなぐ橋になります。

matterbridge

ただ、SlackとMattermostについて「matterbridge」を使うための日本語情報がなく、試行錯誤の結果、Slackに投稿すると、Mattermostに転送される動作を確認できました。

matterbridge

下記に手順を記します。

準備

今回は、次のようなものを用意しました。

  • Slack : matterbridgeではフリープランから対応しています。
  • Mattermostを導入したサーバー : クラウドサービス上にサーバーを用意し、Mattermost Enterprise Editionを導入しています。Nginxによるリバースプロキシも設定しています。Mattermost Enterprise Edition は、無料から使用できます。有料のE10またはE20ライセンスを適用することで、無料版で制限されている機能やエンタープライズ向けのサポートサービスが使用可能になります。
  • ボット用ユーザー : Mattermost上で、matterbridgeで使用するユーザーを登録しておきます。既存のユーザーを使用しても構いません。
  • matterbridgeの設定

    次の手順で、Mattermostを導入したサーバーに、matterbridgeをインストールします。Mattermostを導入したサーバーでは、CentOS 7 を使用しています。

    Snapを使用可能にする

    matterbridgeのインストールには、snap コマンドを使用します。コマンドを実行し、snapを使えるようにします。

    [html] $ sudo yum install epel-release $ sudo yum install snapd $ sudo systemctl enable --now snapd.socket $ sudo ln -s /var/lib/snapd/snap /snap [/html]

    Go言語を入れる

    matterbridgeは、Go言語で開発されていますので、Go言語を使えるようにします。

    [html] $ sudo yum install -y golang $ sudo mkdir usr/local/go $ sudo vi /etc/profile.d/golang.sh 下記を記述し、保存 GOPATH=/usr/local/go PATH=$GOPATH/bin:$PATH:$HOME/bin export PATH export GOPATH $ cd /usr/local/go/ $ source /etc/profile.d/golang.sh $ sudo mkdir bin pkg src [/html]

    matterbridgeのインストール

    コマンドを実行し、matterbridgeをインストールします。

    [html] $ sudo snap install matterbridge $ sudo reboot [/html]

    .toml ファイルの作成

    matterbridgeを動かすための設定ファイルは、ファイル拡張子が「toml」となるファイルを用意する必要があります。例として、matterbridge.toml とします。

    [html] $ sudo vi matterbridge.toml [/html]

    以下にサンプルを示します。

    [html] <!matterbridge.toml> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [mattermost] [mattermost.mymattermost] Server="abc.example.com/chat" Team="tutorial" #mattermost bot useraccount Login="admin" Password="admin" NoTLS=true SkipTLSVerify=true RemoteNickFormat="[{PROTOCOL}] <{NICK}> " PrefixMessagesWithNick=true [slack] [slack.myslack] Token="xoxbで始まるBot User OAuth Access Token" RemoteNickFormat="{BRIDGE} - @{NICK}" [[gateway]] name="gateway1" enable=true [[gateway.inout]] account="mattermost.mymattermost" channel="Slackに投稿されたメッセージの転送先となるMattermost側のチャンネル" [[gateway.inout]] account="slack.myslack" channel="with-bot" [/html]

    ざっと、ポイントを解説します。

  • 2行目 : 3行目から始まるMattermost用設定の名称です。
  • 3行目 : serverは、MattermostのサイトURLから、httpまたは、httpsを除外したものになります。
  • 4行目 : teamは、Slackに投稿されたメッセージの転送先となるMattermost側のチャンネルが存在するチームを指します。
  • 7行目 : Slackから転送されたメッセージをMattermostに投稿するためのボットユーザーのユーザー名です。既存ユーザーを指定しても構いません。
  • 8行目 : Slackから転送されたメッセージをMattermostに投稿するためのボットユーザーのパスワードです。既存ユーザーのものでも構いません。
  • 10行目と11行目 : 今回は、MattermostのサイトURLが、http接続のため、http 接続対応の設定にしています。
  • 16行目 : 17行目から始まるSlack用設定の名称です。
  • 17行目 : matterbrdigeのSlack bot setupを参考に、Slack App(例 matterbridge)を作成し、xoxbで始まるBot User OAuth Access Token を生成し、挿入します。
  • 24行目 : 2行目で記述したMattermost用設定名を、account= の後に記述します。
  • 25行目 : Slackに投稿されたメッセージの転送先となるMattermost側のチャンネルを記述します。たとえば、town-square など既存のチャンネルを使うと良いでしょう。
  • 28行目 : 16行目で記述したSlack用設定名を、account= の後に記述します。
  • 29行目 : Mattermostに転送するメッセージの投稿先のSlackチャンネル名です。ここで入力したSlackチャンネルに、Slack bot setup で作成した、Slack App(例 matterbridge)を招待しておくことを忘れないでください。
  • matterbridgeの動作確認

    設定ファイルを作成し終えましたら、次のコマンドを実行します。

    [html] $ matterbridge -conf matterbridge.toml [/html]

    期待される実行結果の例

    [html] [2019-10-25T14:27:09+09:00] INFO main: Running version 1.16.0 [2019-10-25T14:27:09+09:00] INFO router: Parsing gateway gateway1 [2019-10-25T14:27:09+09:00] INFO router: Starting bridge: mattermost.mymattermost [2019-10-25T14:27:09+09:00] INFO mattermost: Connecting using login/password (sending and receiving) [2019-10-25T14:27:09+09:00] INFO mattermost: Connecting admin (team: tutorial) on abc.example.com/chat [0000] INFO matterclient: Found version 5.16.0.5.16.0.510bef66cf8ca0dd3453338df5e7841c.false [0000] INFO matterclient: found 1 users in team tutorial [2019-10-25T14:27:10+09:00] INFO mattermost: Connection succeeded [2019-10-25T14:27:10+09:00] INFO mattermost: mattermost.mymattermost: joining town-square (ID: town-squaremattermost.mymattermost) [2019-10-25T14:27:10+09:00] INFO router: Starting bridge: slack.myslack [2019-10-25T14:27:10+09:00] INFO slack: Connecting using token [2019-10-25T14:27:10+09:00] INFO slack: slack.myslack: joining with-bot (ID: with-botslack.myslack) [2019-10-25T14:27:10+09:00] INFO main: Gateway(s) started succesfully. Now relaying messages [/html]

    Slack側で、.tomlファイルの29行目で指定したSlackチャンネルにアクセスし、@Slack App(例 matterbridge) 半角スペース メッセージ の順で入力し、送信しますと、Mattermostに転送されます。

    まとめ

    「matterbridge」のようにひと工夫することで、SlackとMattermostなど、様々なビジネスコラボレーションハブやチャットツールを導入した際に課題となるセキュリティ上の「不安」を解決することができます。「運用で」という言葉は便利な言葉ですが、エンドユーザーに負担を与え、せっかく導入したシステムが使われなくなる原因の1つになりますので、システム面で対応できるのであれば、対応していきましょう。

    オンプレミスでも使えるビジネスコミュニケーションツール『Mattermost』はこちらをご覧ください。

    Mattermost

    またリックソフトはSlack社との国内初となるパートナー契約を締結し、Slack導入支援サービスの提供を開始しました。ぜひご検討ください。

    Slack

    30日間の評価ライセンスも発行できますので、是非ご活用ください。

    評価ライセンスのご依頼

    ご不明な点がございましたら、お気軽にお問い合わせください

    お問い合わせ