MattermostをUbuntu22.0.4 サーバにインストールする手順

# 概要

本記事では、[Mattermost](https://mattermost.com/)を素のUbuntuにインストール手順を整理しようと思います。

自分が構築したい環境は以下の通りです。

* [Mattermost v7.5](https://blog.kaakaa.dev/post/mattermost/releases-7.5/)
* Linux
  * Ubuntu 22.0.4
* データベース
  * Postgresql v14
* Webサーバー
  * Nginx(最新版)

以下の情報元を参照しながら構築したものですので、もし、ここ違うよ的なものがあれば、コメントいただけますと大変ありがたく思います。

* [Mattermost を Docker で試験導入する (Docker Image 版)](https://zenn.dev/fehde/articles/8d530e1118f8a6)
* [PostgreSQL 14をUbuntu 20.04へインストールし、外部から接続する](https://symfoware.blog.fc2.com/blog-entry-2577.html)
* [Mattermostインストール](https://www.server-memo.net/server-setting/mattermost/mattermost-install.html)

なお、本記事ではセキュリティ周りの設定は省略しておりますので、ご注意くださいまし。

# インストール手順

以下の手順でインストールします。

1. Postgresql のインストール
1. データーベースのセットアップ
1. Mattermostのインストール
1. Mattermostのセットアップ
1. Nginxのセットアップ（インストールされている前提)
1. sytemctl のセットアップ

## Postgresql のインストール

```
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
```

```
 sudo apt install curl ca-certificates gnupg
```

```
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
```

```
sudo apt update
```

```
sudo apt upgrade
```

```
sudo apt install postgresql-14
```

インストールできたかどうかの確認

```
$ sudo su - postgres
$ psql
psql (14.0 (Ubuntu 14.0-1.pgdg20.04+1))
"help"でヘルプを表示します。

postgres=#
```

## データーベースのセットアップ

* 2022/12/20 追記
  * postgresql データ保存先を変更したい場合はこちらの記事が参考になります。
  * https://ex1.m-yabe.com/archives/4719
  * もし変更したい場合は、以下のオペレーション実施前に、「[(参考)データベース保存先変更手順](https://qiita.com/kanetugu2018/items/51cdab279d81ae06aa70#%E5%8F%82%E8%80%83%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E4%BF%9D%E5%AD%98%E5%85%88%E5%A4%89%E6%9B%B4%E6%89%8B%E9%A0%86)」を実施ください。

```
$ sudo su - postgres
$ psql
postgres=# create role mmuser with login createdb password 'mmuser-password';
CREATE ROLE
postgres=# create database mattermost with encoding 'UTF8' owner mmuser;
CREATE DATABASE
```

### (参考)データベース保存先変更手順

新しい保存先：/mnt/postgresql

```
sudo mkdir /mnt/postgresql
```

```
chown -R postgres:postgres /mnt/postgresql/
```
```
sudo systemctl stop postgresql.service
```

`postgresql.service`に、新しい保存先のパスを設定します。

```
sudo vi /usr/lib/systemd/system/postgresql.service
```
設定例（Environment=PGDATA=/mnt/postgresqlを追加）
```
[Unit]
Description=PostgreSQL RDBMS

[Service]
Type=oneshot
ExecStart=/bin/true
ExecReload=/bin/true
RemainAfterExit=on
Environment=PGDATA=/mnt/postgresql

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

```
sudo systemctl daemon-reload
```
```
sudo systemctl restart postgresql
```

```
sudo -u postgres /usr/lib/postgresql/14/bin/initdb -D /mnt/postgresql
```
```
sudo systemctl restart postgresql
```


## Mattermostのインストール

```
cd /usr/local/src
```

```
sudo wget https://releases.mattermost.com/7.5.0/mattermost-7.5.0-linux-amd64.tar.gz
```

```
sudo tar -xvzf mattermost*.gz
```

```
sudo mv mattermost /opt
```

```
sudo mkdir /opt/mattermost/data
```

```
sudo useradd --system --user-group mattermost
```

```
sudo chown -R mattermost:mattermost /opt/mattermost
```

```
sudo chmod -R g+w /opt/mattermost
```

```
sudo rm -f mattermost-7.5.0-linux-amd64.tar.gz
```


## Mattermostのセットアップ

`/opt/mattermost/config/config.json`を viで開いて、パラメータを以下のようにする。

```
"SiteURL": "http://mattermost.example.com/mattermost"
"DriverName": "postgres"
"DataSource": "postgres://mmuser:mmuser-password@localhost:5432/mattermost?sslmode=disable\u0026connect_timeout=10"
"MaxUsersPerTeam"：200
"EnableLocalMode"：true
"EnableUserAccessTokens"： true
```

# Nginxのセットアップ（インストールされている前提)

`/etc/nginx/conf.d` 配下に `mattermost.conf` を作成します。

設定内容(例)：
```
server {
        listen          8088;
        location / {
                client_max_body_size 50M;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Frame-Options SAMEORIGIN;
                proxy_pass http://localhost:8065;
        }
}
```

## sytemctl のセットアップ

```
$ sudo touch /lib/systemd/system/mattermost.service
$ sudo vi /lib/systemd/system/mattermost.service
```

内容(例)：
```
[Unit]
Description=Mattermost
After=network.target
After=postgresql.service
BindsTo=postgresql.service

[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=postgresql.service
```

# サービスの起動確認

```
$ sudo systemctl enable mattermost.service
$ sudo systemctl start mattermost.service
$ sudo systemctl status mattermost.service
```

この状態で、`http://localhost:8065/` にアクセス出来れば成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244147/d4e58f2b-3460-5c19-e2f8-ed636328f2b9.png)