Mattermost を Docker でローカルサーバにインストール

ローカルサーバに Mattermost をインストールしてみます。

# 環境、構築ポリシー

- Ubuntu 22.04 LTS Desktop Ja および Ubuntu 20.04 LTS Desktop Ja
  - 80番ポートを別用途で使用済(Apache) 
- Mattermost Team 版を使用する
- Mattermost は Docker 経由でインストールする
- プライベートIPアドレスをぶらうざに入力してアクセスする
- 証明書は使用しない

# インストール方法の選択

ここに、いくつもインストール方法が紹介されています。
https://docs.mattermost.com/guides/deployment.html


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/45632684-5419-7aca-2bbc-966d2cdf9d8f.png)

今回は Docker を使うことにしました。


# Docker セットアップ

まず、Dockerをインストールします。
「Ubuntu20.04 に Docker を導入する (Also Ubuntu 22.04)」
https://qiita.com/nanbuwks/items/0ba1d13b3cd27e5c6426
の通り作業、Docker公式レポジトリから最新版をインストールします。


# Mattermost ダウンロード、設定

以下のドキュメントのとおりにやってみます。
https://docs.mattermost.com/guides/deployment.html


```
$ git clone https://github.com/mattermost/docker
$ cd docker
```

サンプル設定ファイルをコピーし、編集します。
```
$ cp env.example .env
```

以下のように編集します。

```
# Domain of service
DOMAIN=mm.example.com
```
↓
```
# Domain of service
DOMAIN=192.168.42.12
```

```
MATTERMOST_IMAGE=mattermost-enterprise-edition
MATTERMOST_IMAGE_TAG=7.1
```
↓
```
MATTERMOST_IMAGE=mattermost-team-edition
MATTERMOST_IMAGE_TAG=7.1
```

また、Timezoneを以下のように設定します。

```
TZ=Asia/Tokyo
```

以下のように必要なファイル、ディレクトリを設定します。

```
$ mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
$ sudo chown -R 2000:2000 ./volumes/app/mattermost
```

# Mattermost を起動


以下のように起動しました。
```
$ docker-compose -f docker-compose.yml -f docker-compose.without-nginx.yml up -d
```
ここで、 nginx を使わない場合は `docker-compose.without-nginx.yml`、 nginx を使う場合は `docker-compose.nginx.yml` と指定して起動します。今回は、 nginx を使わずに起動しました。

```
Creating network "docker_default" with the default driver
Pulling postgres (postgres:13-alpine)...
13-alpine: Pulling from library/postgres
213ec9aee27d: Pull complete
85c3ef7cf9a6: Pull complete
ac29cc04759a: Pull complete
6b14d22dbf64: Pull complete
2d8ab7259e6e: Pull complete
51f6defbaf81: Pull complete
ede0ecb57b78: Pull complete
06aa039a894a: Pull complete
Digest: sha256:fc3670fa23119159394dfdb98eee89b30ef5a506791aea6ff7d8a4e73a8cd4a4
Status: Downloaded newer image for postgres:13-alpine
Pulling mattermost (mattermost/mattermost-enterprise-edition:7.1)...
7.1: Pulling from mattermost/mattermost-enterprise-edition
751ef25978b2: Pull complete
6058830c33a8: Pull complete
f9580aa23981: Pull complete
c7989beb8f48: Pull complete
Digest: sha256:2fe9f455549a489a9007bff0a6da89fca4551ca6565844a6744a2c353e0a0554
Status: Downloaded newer image for mattermost/mattermost-enterprise-edition:7.1
Creating docker_postgres_1 ... done
Creating docker_mattermost_1 ... done
```

となり以下のように起動しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/41123b79-d6fd-4041-13f8-764aaf7ff599.png)
この画面で、最初の管理者ユーザを登録し、その後 チーム名を登録します。


# 問題点

メニューからメンバー招待ができません。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/76f54d5d-0c39-1207-1c13-65b98a07ef3f.png)
このボタンを押してもクリップボードに何も入りません。


この問題は、nginx を使わないときに発生するらしいです。

cf., 
- https://github.com/mattermost/mattermost-server/issues/20432
- https://mattermost.atlassian.net/browse/MM-45024

# 解決策その1 nginx を使った Docker インストールを行う

以下のように起動すると問題解決するのかな?
```
$ docker-compose -f docker-compose.yml -f docker-compose.nginx.yml up -d
```

しかしながら今回の環境では、別用途に Apache が動作していて ポート80 が塞がっているのでこの方法は使えませんでした。

`.env` の `HTTP_PORT=80` を変更したりしてみましたがそれだけではダメなようです。

# 解決策その2 Docker以外のインストール方法を行う

もともと Mattermost は Docker を使わなくともインストールできますし細かな設定をするにはそちらを用いるべきですが、今回はデータベース設定を簡略化したかったため Docker を使った方法で解決する方法を採りました。

# 解決策その3 mmctl を使用する


https://github.com/mattermost/mmctl

cf.,https://docs.mattermost.com/manage/mmctl-command-line-tool.html

こちらの mmctl コマンドを使用してアカウントが作成できるようです。今回は別方法を用いて解決したので試していません。


# 解決策その4 Open Server 設定を使う


システムコンソールから AUTHENTICATION - Signup を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/8d8829d6-53ad-1711-2afc-3c15df781b2b.png)

「Enable Open Server」の設定を変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/932aaa87-b49c-0cf0-5e6a-14a29ff1d82b.png)

「true」にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/09d2aa92-6661-d4a2-1e12-db0a608a3c42.png)

ログアウトするか、別ブラウザでアクセスすると右上に「Create an account」が表示されるので別アカウントを登録します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/7cef6a2b-ba4b-4004-4898-826a45771d85.png)

登録できたら、管理者からメンバーを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/5292d7df-f76b-84ff-bcc0-a38e1ca83dc3.png)

# 設定

管理者権限で、Configuration-SITE-CONFIGURATION -Localization で日本語の設定をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/cb4abe5c-9c40-14e7-7220-69491b6b79b6.png)

チャンネルに戻り、右上の歯車を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/87d0aa5a-022f-61de-87ac-7bc9b96fcec1.png)

DisplayのLanguageを押して、日本語を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/e01356d9-2c31-93e7-d9b2-2f7e8642f3a8.png)