Ubuntu 22.04 に Mattermost をインストールする

Mattermost Team Edition をインストールする場合

root で作業する。 Mattermost Team Edition を https://docs.mattermost.com/upgrade/version-archive.html からダウンロードする。

wget https://releases.mattermost.com/7.4.0/mattermost-team-7.4.0-linux-amd64.tar.gz

ファイルを解凍して、/opt/mattermost にする。

tar xvf mattermost-team-7.4.0-linux-amd64.tar.gz
mv mattermost /opt
mkdir /opt/mattermost/data
useradd --system --user-group mattermost
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost

ここでは MariaDB を使うことにする。

apt install mariadb-server mariadb-client

まず

mysqladmin -u root password

で MariaDB の root のパスワードを設定する。

mysql -u root -p

で MariaDB のコマンドラインを実行する。

create user mmuser identified by 'PASSWORD';
create database mattermost;
grant all privileges on mattermost.* to mmuser@localhost;

/opt/mattermost/config/config.json の “SqlSettings” のところに MariaDB の設定に書き換える。

"SqlSettings": {
  "DriverName": "mysql",
  "DataSource": "mmuser:PASSWORD@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8&writeTimeout=30s",

実行するには

sudo -u mattermost /opt/mattermost/bin/mattermost

とする。http://localhost:8065/ でアクセスできる。

結局、以下のように Mattermost Omnibus をインストールして運用することにした。

LXD を使って Mattermost Omnibus をインストールする

LXD のインストールと Ubuntu 20.04 のコンテナ

Ubuntu 22.04 のサーバを使っているが、 Mattermost Omnibus をインストールするには Ubuntu 18.04 と 20.04 が必要なので、 LXD で Ubuntu 20.04 を動かしてインストールすることにした。

snap install lxd
lxd init

として LXD をインストールする。

lxc image list ubuntu: amd64

で Ubuntu 20.04 のイメージを探す。

コンテナ名を mattermost-omnibus として

lxc launch images:ubuntu/20.04 mattermost-omnibus

でダウンロードして実行する。

lxc list

で確認する。

lxc shell mattermost-omnibus

でコンテナのシェルを実行する。

Conoha VPS で実行すると、コンテナの IPv4 の割り当てがなかった。 https://discuss.linuxcontainers.org/t/lxd-bridge-doesnt-work-with-ipv4-and-ufw-with-nftables/10034/22 に Ubuntu のパッケージの ufw をアンインストールして、snap の ufw を使うという方法が書いてあり、 実行するとコンテナの IP アドレスが設定された。

ufw disable
apt remove ufw
apt purge ufw
snap install ufw
ufw enable

ファイルのダウンロードができなかったが

ufw allow in on lxdbr0
ufw route allow in on lxdbr0

とするとうまく動くようになった。 ufw をインストールし直した結果、SSH のポートが閉じられてしまうので

ufw allow 22

としておく。

Mattermost Omnibus のインストール

コンテナ (コンテナ名 mattermost-omnibus) の 80 と 443 ポートをホストのポートに対応させる。

lxc config device add CONTAINER_NAME DEVICE_NAME proxy listen=tcp:0.0.0.0:PORT connect=tcp:127.0.0.1:PORT bind=host

で設定できるので

lxc config device add mattermost-omnibus port-http proxy listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80 bind=host
lxc config device add mattermost-omnibus port-https proxy listen=tcp:0.0.0.0:443 connect=tcp:127.0.0.1:443 bind=host

とする。設定を

lxc config show mattermost-omnibus

で確認する。 ufw でファイアウォールが設定されている場合は

ufw allow 80
ufw allow 443

とする。必要なソフトウェアをインストールし、Mattermost Omnibus のレポジトリの設定を行う。

apt install curl gnupg software-properties-common net-tools
curl -o- https://deb.packages.mattermost.com/repo-setup.sh | bash

apt で mattermost-omnibus のパッケージを

apt install mattermost-omnibus

でインストールすればよいのだが、テストのインストールで SSL を使わないときは環境変数 MMO_HTTPS=false として

MMO_HTTPS=false apt install mattermost-omnibus

とする。ドメイン名のところはテストの VirtualBox のインストールでは IP アドレスを入れた。

netstat -lntup

でポートを確認できる。 インストールがうまくいっていればホストの IP アドレスで Mattermost にアクセスできる。

postfix のインストール

Mattermost がメールを送信するためにメールサーバの設定が必要になる。ここでは、メールサーバは送信だけで、受信は行わないとする。

apt install postfix

このとき、「Internet Site」を選び、次の入力でドメイン名を設定する。 /etc/postfix/main.cf を編集して myhostname にドメイン名を設定した。

systemctl reload postfix.service

gmail に送信してみるとうまくいかず、DNS で SPF レコードを設定する必要があった。 SMTP サーバは外部から接続できない状態であり、ポート 25 で動いていた。

Mattermost の設定

システムコンソール

最初のアクセスで作成したユーザが管理者になる。 ログインすると「システムコンソール」で設定ができる。以下の設定を行った。

  • 「言語」で日本語にする。
  • 「ユーザーとチーム」
    • ダイレクトメッセージの対象範囲
    • チームメイトの名前の表示
    • 電子メールアドレスを表示する
  • 「User Satisfaction Surveys」で無効にする。
  • 「Bleve」で有効にする。 「IndexDir」は gihyo.jp の記事に合わせて /var/opt/mattermost/bleveindexes にする。
  • 「SMTP」で設定する。
  • 「通知」で通知のメールの設定をする。 メールでの通知が頻繁にしたくないので「電子メールバッチ処理を有効にする」を有効にした。
  • 「権限」でユーザの権限を設定する。
  • 「お知らせ」で「エンドユーザー通知を有効にする」を無効にする。

日本語の表示

システムコンソールで日本語にしても、最初に登録したユーザの表示は英語のままであった。 ユーザの設定で日本語にするには「Settings」「Display」「Language」で「日本語」にする。

ユーザの削除

ユーザを削除はウェブページからはできないようで、次のようにして行った。

mmctl config set ServiceSettings.EnableAPIUserDeletion true --local
mmctl auth login https://MATTERMOST_URL/
mmctl user delete USER_EMAIL_ADDR

credentials は

mmctl auth list

で確認して

mmctl auth delete CONNECTION_NAME

で削除できる。

チームの削除

チームの削除もユーザーと同様なコマンドで行える。mmctl auth login でログインした状態で

mmctl config set ServiceSettings.EnableAPITeamDeletion true --local
mmctl team delete TEAM_NAME

とする。

参考

Tags of current page

,