オープンソースのチャット型コラボレーションツール「Rocket.Chat」や「Mattermost」を使ってみよう 3ページ

「Mattermost」を使ってみる

 続いて、Mattermostについて紹介しよう。こちらは、「セルフホスティング式のSlack代替」を謳っており、より強くSlackを意識しているようだ。Slackの機能をほぼすべて備えており、さらにSlackと一部互換性のあるWebフック機能を提供している(図10)。

図10 Mattermostのホーム画面
図10 Mattermostのホーム画面

 また、Rocket.Chatと同様、WebブラウザからだけでなくiOS/AndroidアプリやWindows/Mac OS X/Linux向けデスクトップクライアントも提供されている。そのほか、Slackはチーム毎にアカウント作成が必要だったが、Mattermostでは1ユーザーを複数のチームに所属させることができたり、Markdownによるフォーマッティング、チャネル名に英語以外の言語を利用可能、シンタックスハイライティングなど、非常に多くの機能を備えているのも特徴だ。

 なお、MattermostはGo言語で実装されており、データベースにはMySQL(および互換データベースであるMariaDB)もしくはPostgreSQLが利用できる。ただし、MySQL/MariaDBの場合はFULLTEXTインデックスを利用するため、MySQL 5.6.4以上もしくはMariaDB 10.0.5以上が必要となる。CentOS 7の場合、現時点ではこれらは公式パッケージとしては用意されていないが、MariaDBの公式パッケージを利用すれば容易に入手が可能だ。

Mattermostのインストール

 今回はCentOS 7へのインストールについて紹介する。これ以外の環境へのインストールについては、Rocket.Chatと同様、Mattermostの公式ドキュメントを参照して欲しい。

 まず、MariaDBの最新版を利用するためにMariaDBの公式リポジトリを利用できるよう、/etc/yum.repos.d/mariadb.repoという設定ファイルを作成する。

# touch /etc/yum.repos.d/mariadb.repo

 設定ファイルの中身は次のようになる。

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

 次に、yumコマンドでMariaDBの最新安定版をインストールする。なお、すでにCentOSの公式パッケージでMariaDBをインストールしている場合はいったんMariaDBを停止させておく必要がある。

# systemctl stop mariadb ←MariaDBがすでにインストールされている場合、いったんmariadbサービスを停止させておく
# yum install --enablerepo=mariadb MariaDB-server MariaDB-client
# systemctl start mariadb

 続いて、適当なディレクトリに以下のような「create_db.sql」ファイルを作成する。

# touch create_db.sql

 このファイルには、データベースを作成するための次のようなSQLを記述する。なお、「mmuser_password」の部分は適当なパスワードに置き換えて欲しい。

CREATE DATABASE mattermost;
CREATE USER 'mmuser'@'localhost' IDENTIFIED BY 'mmuser_password';
GRANT ALL PRIVILEGES ON mattermost.* TO 'mmuser'@'localhost' IDENTIFIED BY 'mmuser_password';
FLUSH PRIVILEGES

 ファイルを作成したら、mysqlコマンドを使ってこのSQLを実行し、データベースおよびユーザーを作成する。

# mysql -u root < create_db.sql

 続いて、Mattermost本体のインストールを行う。Mattermost最新版の配布アーカイブ入手URLはダウンロードページに掲載されているので、このURLをコピーし、インストールするサーバーにダウンロードする。

# curl -o mattermost-team-3.3.0-linux-amd64.tar.gz https://releases.mattermost.com/3.3.0/mattermost-team-3.3.0-lin
ux-amd64.tar.gz

 ダウンロードしたパッケージを展開すると「mattermost」というディレクトリが作成されるので、これを適当なディレクトリに移動する。今回は/opt/ディレクトリ以下に移動した。

# tar xvzf mattermost-team-3.3.0-linux-amd64.tar.gz
# mkdir /opt
# mv mattermost /opt/

 続いて、データ保存先ディレクトリ(/opt/mattermost/data)の作成と、設定ファイル(/opt/mattermost/config/config.json)の編集を行う。

# mkdir -p /opt/mattermost/data

 /opt/mattermost/config/config.json内には多くの設定内容が記されているが、ここではデータベース設定のみを環境に応じて修正しておく。下記の「SqlSettings」部分がデータベース設定となっているので、「DriverName」が「mysql」になっていることを確認し、「DataSource」を「”mmuser:<mmuserのパスワード>@localhost:3306/mattermost?charset=utf8mb4,utf8″」と設定する。データベースとしてlocalhost以外を使用する場合は「localhost」の部分を変更すれば良い。

    "SqlSettings": {
        "DriverName": "mysql",
        "DataSource": "mmuser:mmuser_password@localhost:3306/mattermost?charset=utf8mb4,utf8",
        "DataSourceReplicas": [],
        "MaxIdleConns": 10,
        "MaxOpenConns": 10,
        "Trace": false,
        "AtRestEncryptKey": "7rAh6iwQCkV4cA1Gsg3fgGOXJAQ43QVg"
    },
    "LogSettings"

 また、今回はMattermostを「mattermost」というユーザーで実行するので、useraddコマンドでこのユーザーを作成し、各種ファイル/ディレクトリのパーミッションを変更しておく。

# useradd -r mattermost -U
# chown -R mattermost:mattermost /opt/mattermost

 以上でインストール作業は完了だ。続いてSystemdでMattermostサービスを管理するための設定ファイル(/etc/systemd/system/mattermost.service)を用意する。

# touch /etc/systemd/system/mattermost.service

 ファイルの中身は下記のようになる。

[Unit]
After=network-online.target
Description=mattermost server
Requires=network-online.target rsyslog.service mariadb.service

[Service]
WorkingDirectory=/opt/mattermost/bin
User=mattermost
ExecStart=/opt/mattermost/bin/platform
PIDFile=/var/spool/mattermost/pid/master.pid
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=mattermost

[Install]
WantedBy=multi-user.target

 最後にsystemctlコマンドで設定の反映とmattermostサービスの実行を行う。

# systemctl daemon-reload
# systemctl start mattermost

 「systemctl status」コマンドで正しくサービスが稼動しているかどうかも確認しておこう。

# systemctl status mattermost
 ● mattermost.service - mattermost server
   Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: disabled)
   Active: active (running) since 火 2016-08-30 20:42:08 JST; 2s ago
 Main PID: 25733 (platform)
   Memory: 10.6M
   CGroup: /system.slice/mattermost.service
           mq25733 /opt/mattermost/bin/platform
  
  

 最後に、今回使用する8065番ポートにアクセスできるようファイアウォールの設定も行っておく。

# firewall-cmd --add-port 8065/tcp