Mattermostを構築する話

今回はGitlabのMattermostを作る… 訳ではなく
独立したMattermostを作りたいと思います。
いろいろな方法がありますが、DockerにてEnterprise版を作ります。

本家のインストール手順書 : https://docs.mattermost.com/install/install-docker.html

本家のインストールを順にするとreview版が入りますのでいろいろダメですので手順を書いておきました。

Dockerを入れる…

Dockerを好きな方法でインストールしてください。

手順書ではpreview版を「Preview Mattermost using Docker」にてインストール方法を書いています。

この手順は無視してください。

次の「Deploy Mattermost on Docker for production use」が正しい順路です

Mattermostの製品版をインストール

ここから本題ですが、製品版(Mattermost Enterprise Edition)をインストールします

公式手順書はこの辺りから
https://docs.mattermost.com/install/install-docker.html#deploy-mattermost-on-docker-for-production-use

1.クローンを作成する

wataru@gitlab:~$ git clone https://github.com/mattermost/docker

2.dockerでは地味なので/usr/local/mattermostをcloneのdockerを名前変更で移動する

wataru@gitlab:~$ sudo mv docker /usr/local/mattermost

3.環境設定のサンプル(env.sample)から環境設定(.env)を作ります

wataru@gitlab:/usr/local/mattermost$ cp env.example .env

4.環境設定内容を編集します

wataru@gitlab:/usr/local/mattermost$ vi .env

当該場所だけ書き換える…

# Domain of service
DOMAIN=192.168.1.201

# Container settings
## Timezone inside the containers. The value needs to be in the form 'Europe/Berlin'.
## A list of these tz database names can be looked up at Wikipedia
## https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ=JP

5. 保存先のディレクトリを作成します

mkdir -p ./volumes/app/mattermost/{data,logs,config}
sudo chown -R 2000:2000 ./volumes/app/mattermost/

起動

今回ローカルで使うのでSSLも入りませんのでnginx不要なのでこんな感じで動作させます

wataru@gitlab:/usr/local/mattermost$ sudo docker-compose -f docker-compose.yml -f docker-compose.without-nginx.yml up -d
Creating network "mattermost_default" with the default driver
Creating postgres_mattermost ... done
Creating mattermost          ... done

ブラウザでアクセス

dockerが動くと動作を確認します

http://192.168.1.201:8065/

これで使えるようになりました!

停止とか自動起動などは各自設定とか調査とかしてください

バックアップ

バックアップするにあたり、以下の内容をバックアップ対象とした

  • データベース(PostgreSQL ダンプ)
  • volume/appディレクトリ
  • volume/dbディレクトリ
wataru@gitlab:~$ sudo vi /usr/local/bin/mattermost_backup.sh
#/bin/sh
BACKUP_DATE=`date +%Y-%m-%dT%H:%M:%S`
sudo mkdir $BACKUP_DATE
sudo chown $USER $BACKUP_DATE

# 設定ファイル
sudo cp /usr/local/mattermost/.env ./$BACKUP_DATE

# DBバックアップ
sudo docker exec -it f410c95d1955 pg_dump -U mmuser --format=t mattermost | gzip > ./$BACKUP_DATE/mattermost_$BACKUP_DATE.tar.gz
# リストアメモ :  $ gzip -cd [ファイル名.gz] | psql -U [ユーザ名] -d [db名]

# アプリケーションキャッシュ
sudo tar -zcvf ./$BACKUP_DATE/app.tar.gz -C/usr/local/mattermost/volumes/ app

sudo tar -zcvf ./$BACKUP_DATE/db.tar.gz -C/usr/local/mattermost/volumes/ db

これで、指定ディレクトリに日付ごとにバックアップデータが作成されます

wataru@gitlab:/mnt/raid/backups/mattermost$ ls -al
total 12
drwxr-xr-x  2 wataru root   4096 May 22 06:00 2022-05-22T06:00:24

定時実行

バックアップを定時に実行することで問題なくバックアップされます

wataru@gitlab:~$ sudo crontab -l
0 0 * * * /usr/local/bin/mattermost_backup.sh

リストア

バックアップを作っても戻せなかったら大変なので動作を書いておきます。

先のインストールでDockerをvm上で組みました。

中のvolume内にapp / dbをコピーすればOKです。

ユーザアイコンがダメだけれども… この辺りを考えねば

終いに

今回はローカル環境にmattermostを構築しました!

え?一人だって?

これからロボットとかを組んでいこうと考えていますのでメモと併せて使っていきたいと思います。

gitlabのmattermostのインストール手順も勉強したいな…