CentOS 7.5にMattermostをインストールする（メモ）

# はじめに

Mattermost（マターモースト）はSlackライクのOSSコミュニケーションツールです。
何番煎じかは分かりませんが、CentOS7.5にMatermost5.17をインストールしたときのメモを残しておきます。

# 使用する環境

以下の環境・バージョンで構築します。
PostgreSQL 11.5は[こちら](https://qiita.com/mkyz08/items/519bd8d6a7140c8ed57e)の手順で構築済みです。

- Mattermost 5.17.0
- PostgreSQL 11.5
- CentOS 7.5(firewalld, SELinuxは無効化しています)

Mattermostのインストールは、[公式サイトの手順](https://docs.mattermost.com/install/install-rhel-7.html)を参考にしました。


# PostgreSQL

Mattermostのリポジトリとしては、MySQL、PostgreSQLなどのRDBが利用できます。
今回はPostgreSQLを利用します。

まず、DBサーバで以下のようにMattermost用のデータベース・ユーザを作成します。

```sql
$ psql
psql (11.5)
Type "help" for help.

postgres=# CREATE DATABASE mattermost;
CREATE DATABASE
postgres=# CREATE USER mmuser WITH PASSWORD 'mmuser-password';
※パスワードは任意の文字列を指定
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
GRANT
```

先ほど作成したMattermostデータベース、mmuserユーザで接続できるようにpg_hba.confを修正し、接続できることを確認します。

```
$ vi pg_hba.conf

以下を追記。
local   mattermost      mmuser                                  md5
host    mattermost      mmuser          127.0.0.1/32            md5

$ pg_ctl reload

$ psql --dbname=mattermost --username=mmuser
$ psql --host=localhost --dbname=mattermost --username=mmuser
```


# Mattermostのインストール

PostgreSQLにデータベースを作成した後は、Mattermostモジュールのインストールを行います。
以下はwgetでLinux用のモジュールをダウンロードしています。

```
# wget https://releases.mattermost.com/5.17.0/mattermost-5.17.0-linux-amd64.tar.gz
```

なお、ダウンロードURLは以下で確認しています。

- https://mattermost.com/download/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/94fa8bea-4c27-ddb7-7a3e-caa431d89cd8.png)


ダウンロードしたモジュールを/opt以下に展開します。
「/opt/mattermost/data」ディレクトリを作成しています。Mattermostに投稿するファイルを保存ストレージです。

```
# tar xvzf mattermost-5.17.0-linux-amd64.tar.gz -C /opt
# mkdir /opt/mattermost/data
```

mattermostユーザを作成し、Mattermostを展開したディレクトリの所有者に設定します。

```
# useradd --system --user-group mattermost
# chown -R mattermost:mattermost /opt/mattermost
# chmod -R g+w /opt/mattermost
```

MattermostのリポジトリにPostgreSQLを設定します。

```
$ vi /opt/mattermost/config/config.json

  "SqlSettings": {
    "DriverName": "postgres",
    "DataSource": "postgres://mmuser:mmuser-password@127.0.0.1:5432/mattermost?sslmode=disable&connect_timeout=10"
```


# Mattermostの自動起動

Mattermostが自動起動するように設定します。
まずはSystemd用の設定ファイルを作成します。

```
# vi /etc/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=syslog.target network.target postgresql-11.service

[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
ExecStart=/opt/mattermost/bin/mattermost
PIDFile=/var/spool/mattermost/pid/master.pid
TimeoutStartSec=3600
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target
```

先ほどのファイルで自動起動するように設定します。

```
chmod 664 /etc/systemd/system/mattermost.service
systemctl daemon-reload
systemctl enable mattermost
systemctl start mattermost
```


# Mattermostの起動

これでMattermostのインストールは完了なので、続いてMattermostを起動します。

```
$ cd /opt/mattermost
$ ./bin/mattermost

{"level":"info","ts":1574246467.1174788,"caller":"utils/i18n.go:83","msg":"Loaded system translations","for locale":"en","from locale":"/opt/mattermost/i18n/en.json"}
{"level":"info","ts":1574246467.117572,"caller":"app/server_app_adapters.go:59","msg":"Server is initializing..."}
{"level":"info","ts":1574246467.11946,"caller":"sqlstore/supplier.go:222","msg":"Pinging SQL","database":"master"}
{"level":"info","ts":1574246467.2803316,"caller":"sqlstore/upgrade.go:110","msg":"The database schema has been set to version 5.17.0"}

{"level":"info","ts":1574246473.227724,"caller":"app/server.go:423","msg":"Starting Server..."}
{"level":"info","ts":1574246473.227885,"caller":"app/server.go:489","msg":"Server is listening on [::]:8065"}
{"level":"info","ts":1574246473.2293746,"caller":"jobs/schedulers.go:72","msg":"Starting schedulers."}
{"level":"info","ts":1574246473.2363257,"caller":"app/web_hub.go:75","msg":"Starting 4 websocket hubs"}
```

起動すると、以下のアドレスでMattermostへアクセスできます。

- http://[IPアドレス]:8065/


最初にチームとユーザを作成します。
まずユーザを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/55f11861-6a1e-ced9-9397-79a8ab1d5752.png)

次にチームを作成します。「Create a new team」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/be17cf1b-3105-ac92-267c-ff6dec377952.png)

チーム名を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/3da91393-8dca-f336-273c-0aca81eaa2ea.png)

チームURLを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/73a38493-55a1-d37c-6163-c4be89d5af88.png)

チーム名と最初のユーザを作成するとMatermostが利用できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/eed1fd00-cf6b-a2ff-45ed-298d513883fd.png)


# クライアント

公式にMattermostのクライアントアプリがあるので利用します。
ダウンロード先は以下になります。
アプリはWindows, macOS, Linux, iOS, Android用があります。今回はWindows版をインストールしました。

- https://mattermost.com/download/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/09601669-3b9f-1620-548d-200ff1063a6b.png)


# 参考

- [CentOS 7にPostgreSQL11をインストールする](https://qiita.com/mkyz08/items/519bd8d6a7140c8ed57e)
- [Installing Mattermost on RHEL 7](https://docs.mattermost.com/install/install-rhel-7.html)