第700回でも紹介したように、
Mattermost Omnibusのカスタマイズ
第700回ではDebianパッケージ版のMattermostである
- Mattermost Omnibusの設定ファイルは
「 /etc/
」mattermost/ mmomni. yaml で、 変更後の反映コマンドは 「 sudo mmomni reconfigure
」 - 環境変数
「 /etc/
」mattermost/ mmomni. mattermost. env で一部のMattermostの設定を行っている - Mattermost本体の設定は、
「 sudo mmctl --local config edit
」で編集すると反映される - Mattermost本体の設定は、
Web UIのシステムコンソールからも変更できる
最初のMattermost Omnibusで設定できる項目は次のとおりです。
db_
/user db_
:PostgreSQLのデータベースのユーザーとパスワードです。インストール時に自動生成されるため、password それをそのまま使えば良いでしょう。 fqdn
:Mattermost本体のドメインネームです。インストール時に設定した値が使われます。email
:Let’s Encryptによるサーバー証明書の取得の際に使われるメールアドレスです。HTTPSを別途設定する場合は空のままでかまいません。https
:HTTPSを利用するかどうかをtrue/falseで設定します。リバースプロキシー側でHTTPSを担うなら、 falseでもかまいません。 data_
:Mattermostがデータを保存するディレクトリです。バックアップ対象となるディレクトリだと考えれば良いでしょう。directory enable_
:Mattermost側のplugin_ uploads 「 PluginSettings.
」EnableUploads の値を設定します。これは自前のプラグインをアップロードできるかどうかの設定項目です。プラグインを自作しない限りfalseで問題ありません。 enable_
:Mattermost側のlocal_ mode 「 ServiceSettings.
」EnableLocalMode を設定します。 mmcli
コマンドの認証に関する設定コマンドです。trueの場合、Mattermostが動いているサーバー上で、 Unixドメインソケットを経由して mmcli
コマンドを実行した時、ユーザー認証を行わないことになります。 「Mattermostサーバーにログインできる=管理者である」 が成り立つのであれば、 trueのままで良いでしょう。
このようにMattermost Omnibusはインストール時に設定しておいたほうが良い項目だけ、
Mattermostのカスタマイズ
Mattermost本体はWeb UIもしくはmmcli
による設定ファイルによって内容を変更します。重要な項目の多くはWeb UIから変更可能ですが、/etc/
で設定しており、mattermost.
を起動する時に読み込まれています。
一部の設定はsudo mmctl --local config edit
」
そこで代表的なものをいくつか見ていきましょう。
サイト本体の設定
まずはサイト全体の設定を行いましょう。具体的には画面左上のグリッドメニューから、

設定自体は各項目に丁寧な説明がついているため、

「サイト設定」
サーバー関連の設定
「環境」
ただしウェブサーバーに関しては、/etc/
で設定しているものがいくつかあり、
基本的にインストール時の設定から変更する必要はありませんが、
- ファイルストレージ:添付ファイルや画像をAmazon S3に保存するモードが存在します。
- SMTP:通知メールを送るために必要な設定です。詳細は後ほど説明します。
- プッシュ通知サーバー:モバイルアプリ向けにプッシュ通知を送るための設定です。詳細はMattermostのモバイル通知に関するドキュメントを参照してください。
- セッション維持期間:ログインセッションを維持する期間です。
「活動中はセッション維持期間を延長する」 を有効にしておくと、 常時アクティブな場合はログイン状態を維持します。セキュリティポリシーとの兼ね合いで有効にするかどうかを判断してください。
ちなみにMattermostのモバイルアプリはGoogle PlayやApple Storeで公開されているものを、
メール送信設定
Mattermostはログインや通知処理のためにメールを送信することがあります。このため
- ローカルにSMTPサーバーをインストールする
- 外部のSMTPサーバーを利用する
前者の場合は、sudo apt install postfix
」
また/etc/
」my
」sudo systemctl reload postfix.
」
ただしインターネットに公開した状態でSMTPサーバーを適切に運用するのはそれなりに能力が必要です。今回のケースだけならSMTPサーバーをローカルに閉じ込めてしまって、
Mattermostのメール設定に関するドキュメントにはAmazon SESやGmailなど、

認証設定
「認証」
「利用登録」
このうちオープンサーバーは、

アカウントは
Mattermostは
多要素認証にも対応しています。システムコンソールから多要素認証を有効にしておくと、

多要素認証にはAndroidやiOSにGoogle Authenticatorをインストールして実現します。ログインする際にAuthenticatorが生成したコードを追加で入力するような形です。ちなみにスマートフォンでなくて、
実験的機能
「実験的機能」
「プレビュー機能を有効にする」
「返信スレッドの折りたたみ」
折りたたみ機能を使うと、
日本語検索機能
Mattermostはそのままだとメッセージの日本語検索に対応していません。

ただし

まずあらかじめ、/var/
あたりが無難でしょう。
$ sudo mkdir /var/opt/mattermost/bleveindexes $ sudo chown mattermost: /var/opt/mattermost/bleveindexes
Mattermostのプロセスが読み書きできるように、
ちなみにメッセージ数が多い場合は、
Bleveでインデックスされたデータを検索対象にするためには、

バックアップとリストア
一通り設定が完了したら、
バックアップが必要なものはかんたんにまとめると次の項目です。
- データベース上のデータ
- 設定ファイルである
config.
json - データディレクトリ以下のアップロードされた画像等のコンテンツ
また、
Mattermost Omnibusでのバックアップ
ただし、mmomni
コマンドでかんたんに実現できます。
$ sudo mmomni backup -o $(date +'%Y%m%d%H%M%S').tgz Backup created at "20220129214133.tgz" $ tar tvf 20220129214133.tgz -rw------- 0/0 211 2022-01-29 21:41 mmomni.yml -rw-r--r-- 0/0 169872 2022-01-29 21:41 database.dump -rw------- 0/0 3372 2022-01-25 02:13 data/users/7mqkxu5kypbfpgtqssn9efns6w/profile.png -rw------- 0/0 2011 2022-01-18 02:41 data/users/h67i73usjffx9paznnwe13f5br/profile.png -rw------- 0/0 2523 2022-01-18 02:13 data/users/phh1qpcyztnajp1ddwnismxeoa/profile.png -rw------- 0/0 2930 2022-01-18 02:13 data/users/tog1cs8gtinofpikhcycczsr4h/profile.png
config.
が存在しませんが、
ちなみにアーカイブフォーマットは現状tar.
Mattermost Omnibusでのリストア
何か別のサーバーにMattermost Omnnibusを用意して、
$ sudo mmomni restore 20220129214133.tgz Backup extracted into temporal directory "/tmp/mmomni_825526278" Configuration restored in "/etc/mattermost/mmomni.yml" Database backup restored Data directory restored in "/var/opt/mattermost/data" Please run "mmomni reconfigure" to apply the restored configuration
リストアに成功したら再構築を行います。
$ sudo mmomni reconfigure [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] *************************************************************** (中略) PLAY RECAP ********************************************************************* localhost : ok=12 changed=3 unreachable=0 failed=0 skipped=4 rescued=0 ignored=0 $ sudo mmomni status [8158] nginx: running [5796] postgresql@13-main: running [8461] mattermost: running
これだけでリストは完了です。とてもかんたんですね。きちんとリストアできているかどうかを確認するためにも、
バックアップの定期実行
ついでに定期的にバックアップするようにしておきましょう。まずはバックアップ用のスクリプトを作成します。
$ cat <<'EOF' > mm_backup.sh #!/bin/bash BACKUP_DIR="${BACKUP_DIR:-/var/opt/mattermost/backups/}" BACKUP_NUM="${BACKUP_NUM:-3}" set -e [ ! -d "$BACKUP_DIR" ] && mkdir -p "$BACKUP_DIR" cd "$BACKUP_DIR" # Backup Mattermost Omnibus mmomni backup -o "$(date +'%Y%m%d%H%M%S').mm.tgz" # Remove oldest backup archives count=0 while read -d '' -r file; do [ -f "$file" ] || continue ((++count <= BACKUP_NUM)) && continue echo "Removing old backup archive '$file'" rm -f -- "$file" done < <(find . -maxdepth 1 -name '*.mm.tgz' -type f -print0 | sort -nrz) EOF $ chmod +x mm_backup.sh $ sudo cp mm_backup.sh /usr/local/sbin/
これはBACKUP_
に指定したディレクトリに、BAKCUP_
個のバックアップアーカイブを作成するスクリプトです。個数を超える古いアーカイブは実行時に削除します。
試しに、/var/
の中身を確認しながら、sudo ./
を管理者権限で何度か実行してください。最大3個しかアーカイブが保存されないことがわかるはずです。
あとはこれをsystemd用のタイマーユニットを作成し、
$ cat <<'EOF' | sudo tee /etc/systemd/system/mm-backup.timer [Unit] Description=Backup Mattermost data [Timer] OnCalendar=*-*-* 04:00:00 RandomizedDelaySec=30 [Install] WantedBy=timers.target EOF $ cat <<'EOF' | sudo tee /etc/systemd/system/mm-backup.service [Unit] Description=Backup Mattermost data RefuseManualStart=no RefuseManualStop=no [Service] Type=oneshot ExecStart=/usr/local/sbin/mm_backup.sh EOF
上記設定では毎朝4時に/usr/
を実行するようにしています。時刻等は適宜調整してください。動作確認した上で、
$ sudo systemctl daemon-reload $ sudo systemctl start mm-backup.service $ ls -1 /var/opt/mattermost/backups/ => 最新のバックアップアーカイブが作られていることを確認 $ sudo systemctl enable mm-backup.timer $ sudo systemctl start mm-backup.timer $ systemctl list-timers mm-backup.timer NEXT LEFT LAST PASSED UNIT ACTIVATES Sun 2022-01-30 04:00:02 JST 5h 28min left n/a n/a mm-backup.timer mm-backup.service 1 timers listed. Pass --all to see loaded but inactive timers, too.
タイマーがきちんと期待通りの時刻にセットされていたら準備完了です。後日、
このようにMattermost Omnibusを使うと比較的かんたんにMattermostをプロダクションで使うまでの準備が整います。