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
とする。
参考
- https://docs.mattermost.com/upgrade/version-archive.html
- https://zenn.dev/tantan_tanuki/articles/7796a4f1d6d1b0
- https://linux-svr.com/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E4%BB%AE%E6%83%B3%E5%8C%96/62.php
- https://gihyo.jp/admin/serial/01/ubuntu-recipe/0700
- https://gihyo.jp/admin/serial/01/ubuntu-recipe/0702
- https://gihyo.jp/admin/serial/01/ubuntu-recipe/0726
- https://discuss.linuxcontainers.org/t/lxd-bridge-doesnt-work-with-ipv4-and-ufw-with-nftables/10034/22