RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのエンジニアブログ

Mattermostをお試しで使ってみた!!

f:id:FM_Harmony:20180529142141p:plain

はじめに

こんにちは、id:FM_Harmonyです。 Rakus Developers Blogでは5回目の投稿です。
前回の記事はこちら↓

tech-blog.rakus.co.jp

今回も前回と同じくビアバッシュの補足ネタです。(ビアバッシュ...?という方はコチラ
テーマは「Mattermost」についてです。

Mattermostとは?

MattermostとはSlackに似たオープンソースのチャットツールです。
大きな違いはSlackがクラウド型のサービスであるのに対し、Mattermostはオンプレミス型のサービスであることです。 そのため、社内情報を外部に保存したくないという理由で、チャットツールとしてSlackではなくMattermostを選ぶこともあるようです。

f:id:FM_Harmony:20180529144858p:plain
↑Mattermostの公式ページにもSlackとの違いが説明されています。

今回はそんなMattermostのサーバを構築して色々お試ししてみた話です。

Mattermost Serverの構築

それではMattermost Serverの構築について説明します。今回はCentOS7.1Mattermost Server v4.4.0のサーバを構築しました。
また、データベースサーバとMattermost Serverは同一のマシンに構築します。
構築時の手順は参考リンク内のInstalling Mattermost on RHEL 7.1を参考にしました。

なお、今回の手順はあくまで手元での検証を目的としたものであるため、セキュリティ等の考慮を省いている部分もあります。 そのため、本番構築時には手順をそのまま適用すべきではないことにご注意ください。

事前準備

事前にパッケージは最新のものにします。

[hoge@huga ~ ]$ yum update

データベースの準備

Mattermostではユーザや投稿を保存するデータベースとして、PostgreSQLMySQLを使うことができますが、今回は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ポートへアクセスすると、下記のような管理者の設定画面が表示されるかと思います。

f:id:FM_Harmony:20180529142639p:plain

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

作成すると以下のような画面に移りますが、これがMattermostのチャット画面です。 tutorialは適当に飛ばしてください。

f:id:FM_Harmony:20180529142801p:plain

Webhookを使ってみる

MattermostはWebhookを利用することで外部と連携することができます。 まずはMattermostがWebhookを利用できるか設定を確認するために、チャット画面左上のメインメニューからSystem Consoleに移動します。

次に、System Console内のINTEGRATINS > Custom Integrationsを選択します。 すると、Enable Incoming Webhooks, Enable Outgoing Webhooks, Enable Custom Slash Commandsというオプションがあるかと思います。
初期設定ではいずれもtrueのはずなので、今回はそのままにします。

f:id:FM_Harmony:20180529161555p:plain
↑System Console画面、今回は赤枠で囲った部分をすべてtrueにします。

画面左上のメインメニューからSwitch To (チーム名)を選択して、チャット画面へ戻りましょう。

その後、再びメインメニューから今度はIntegrationsを選択します。 すると、先ほど紹介した3つの外部連携機能の項目が選べるはずです。

f:id:FM_Harmony:20180529142837p:plain

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

f:id:FM_Harmony:20180529142849p:plain
↑ Incoming Webhookの設定画面です。

試しに以下のコマンドをターミナルから実行してみます。

curl -i -X POST -d 'payload={"text": "this is sample bot"}' (利用する Incoming WebHooks のURL)

すると、以下の画像のように「this is sample bot」というメッセージが表示されるはずです。 また、設定を変更していない場合、投稿者名にBOTという表示が出ているはずです。

f:id:FM_Harmony:20180529143734p:plain

このようにIncomming Webhookを利用することで、外部のサービスからMattermostへメッセージの送信を行うことができます。

おわりに

いかがでしたでしょうか。
駆け足になってしまいましたが、Mattermost Serverの構築手順とWebhookについて少しでもご理解いただければ幸いです。
Mattermostサーバ構築の難易度はそれほど高くないと思いますので、これからチャットツールを導入したいという方は、この機会にぜひMattermostを体験してみてはいかがでしょうか。

参考


Copyright © RAKUS Co., Ltd. All rights reserved.