
はじめに
こんにちは、id:FM_Harmonyです。 Rakus Developers Blogでは5回目の投稿です。
前回の記事はこちら↓
今回も前回と同じくビアバッシュの補足ネタです。(ビアバッシュ...?という方はコチラ)
テーマは「Mattermost」についてです。
Mattermostとは?
MattermostとはSlackに似たオープンソースのチャットツールです。
大きな違いはSlackがクラウド型のサービスであるのに対し、Mattermostはオンプレミス型のサービスであることです。 そのため、社内情報を外部に保存したくないという理由で、チャットツールとしてSlackではなくMattermostを選ぶこともあるようです。

↑Mattermostの公式ページにもSlackとの違いが説明されています。
今回はそんなMattermostのサーバを構築して色々お試ししてみた話です。
Mattermost Serverの構築
それではMattermost Serverの構築について説明します。今回はCentOS7.1へMattermost Server v4.4.0のサーバを構築しました。
また、データベースサーバとMattermost Serverは同一のマシンに構築します。
構築時の手順は参考リンク内のInstalling Mattermost on RHEL 7.1を参考にしました。
なお、今回の手順はあくまで手元での検証を目的としたものであるため、セキュリティ等の考慮を省いている部分もあります。 そのため、本番構築時には手順をそのまま適用すべきではないことにご注意ください。
事前準備
事前にパッケージは最新のものにします。
[hoge@huga ~ ]$ yum update
データベースの準備
Mattermostではユーザや投稿を保存するデータベースとして、PostgreSQLかMySQLを使うことができますが、今回はPostgreSQL v9.4を利用します。 また、PostgreSQLサーバの構築および初期化は完了しているものとします。
まず、利用するデータベースを作成します。(postgresユーザはPostgreSQLの初期化時に作成されているはずです)
[hoge@huga ~]$ psql -U postgres postgres=# CREATE DATABASE mattermost;
次に作成したデータベースをMattermostが使うためのユーザを作成し、mattermostデータベースに関する全ての権限を与えます。 (ユーザのパスワードは適当に決めてください)
postgres=# CREATE USER mmuser WITH PASSWORD 'xxxx'; postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser; postgres=# ¥q
最後にpostgreSQLの接続設定を変更します。 postgresql.confを編集してlisten_addressesを全アドレスに、pg_hba.confを編集してlocalhostから接続する際の認証方式をtrustにすれば基本的には問題ないはずです。
Mattermost Serverの構築
では、いよいよMattermost Serverを構築します。
とりあえず、/usr/local/src直下にインストールしたいバージョン(今回はv4.4.0)のMattermost Serverをダウンロードします。
[hoge@huga ~ ]$ cd /usr/local/src [hoge@huga src ]$ wget https://releases.mattermost.com/4.4.0/mattermost-4.4.0-linux-amd64.tar.gz
次に、ダウンロードしたファイルを解凍し、/opt直下に配置します。 その後、配置したディレクトリの直下にdataディレクトリを作成します。
[hoge@huga src ]$ tar -xvzf mattermost-4.4.0-linux-amd64.tar.gz [hoge@huga src ]$ sudo mv mattermost /opt [hoge@huga src ]$ sudo mkdir /opt/mattermost/data
そして、Mattermostを管理するためのシステムユーザを作成し、先ほど配置したmattermostディレクトリ以下のファイル・ディレクトリをシステムユーザが書き込み可能にします。
[hoge@huga src ]$ sudo useradd --system --user-group mattermost [hoge@huga src ]$ sudo chown -R mattermost:mattermost /opt/mattermost [hoge@huga src ]$ sudo chmod -R g+w /opt/mattermost
最後にMattermostがデータベースと接続する際の設定を行えば主な作業は完了です。 /opt/mattermost/config/config.jsonを以下のように編集します。
-
"DriverName"をpostgresとする。 -
"DataSource"を"postgres://mmuser:(mmuserのパスワード)@localhost:5432/mattermost?sslmode=disable&connect_timeout=10"とする。
ここまで完了すればMattermostを起動することができるはずです。 以下のコマンドからテスト起動を行えます。
[hoge@huga src ]$ cd /opt/mattermost [hoge@huga src ]$ sudo -u mattermost ./bin/platform
起動に失敗する場合は手順を見直してみてください。 また、本来はMattermost Serverをサービス化した方がMattermostを起動する際に便利なのですが、今回は割愛させていただきます。
Mattermostを触ってみる
Mattermostの初期設定
初期設定を変更しない場合、先ほどテスト実行したMattermost Serverは8065ポートでアクセスを待ち受けます。 8065ポートへアクセスすると、下記のような管理者の設定画面が表示されるかと思います。

管理者の設定を終えるとチームを選択する画面に移ります。 Mattermostではチャンネルと呼ばれるチャットが集まって、チームを成しています。
初期状態ではチームはありませんので、Create a new teamをクリックしてチームを作成します。
作成すると以下のような画面に移りますが、これがMattermostのチャット画面です。 tutorialは適当に飛ばしてください。

Webhookを使ってみる
MattermostはWebhookを利用することで外部と連携することができます。 まずはMattermostがWebhookを利用できるか設定を確認するために、チャット画面左上のメインメニューからSystem Consoleに移動します。
次に、System Console内のINTEGRATINS > Custom Integrationsを選択します。
すると、Enable Incoming Webhooks, Enable Outgoing Webhooks, Enable Custom Slash Commandsというオプションがあるかと思います。
初期設定ではいずれもtrueのはずなので、今回はそのままにします。

↑System Console画面、今回は赤枠で囲った部分をすべてtrueにします。
画面左上のメインメニューからSwitch To (チーム名)を選択して、チャット画面へ戻りましょう。
その後、再びメインメニューから今度はIntegrationsを選択します。 すると、先ほど紹介した3つの外部連携機能の項目が選べるはずです。

今回は例としてIncoming Webhookを利用してみましょう。 3つの項目の中からIncoming Webhookを選択します。 その後、表示された画面の右上にあるAdd Incoming Webhookを選択します。
すると、Webhookの設定画面に移りますので、それぞれ適当な値を設定してSaveを選択します。
設定が完了するとURLが表示されます。 Incoming WebhookではこのURLに対してリクエストを送ることで、Mattermostにメッセージを表示することができます。

↑ Incoming Webhookの設定画面です。
試しに以下のコマンドをターミナルから実行してみます。
curl -i -X POST -d 'payload={"text": "this is sample bot"}' (利用する Incoming WebHooks のURL)
すると、以下の画像のように「this is sample bot」というメッセージが表示されるはずです。 また、設定を変更していない場合、投稿者名にBOTという表示が出ているはずです。

このようにIncomming Webhookを利用することで、外部のサービスからMattermostへメッセージの送信を行うことができます。
おわりに
いかがでしたでしょうか。
駆け足になってしまいましたが、Mattermost Serverの構築手順とWebhookについて少しでもご理解いただければ幸いです。
Mattermostサーバ構築の難易度はそれほど高くないと思いますので、これからチャットツールを導入したいという方は、この機会にぜひMattermostを体験してみてはいかがでしょうか。
参考
- Installing Mattermost on RHEL 7.1
CentOS7系のLinuxサーバにMattermost Serverを導入する手順について書かれています。 - SlackクローンのMattermostを使ってみる - 外部連携編 -(WebHooks、Hubot)
Mattermostで外部連携を行う方法について書かれています。
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。

https://career-recruit.rakus.co.jp/career_engineer/カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
forms.gleイベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください! rakus.connpass.com