Slackの代わりに無料チャットツールMattermostをインストール

RSSを読むために導入したFreshRSS。

使い勝手は悪くないですが、RSS更新時にあれこれしたいと思っていたらSlackのオープンソース版とも言える無料のチャットツールがあるということで、Linux(Ubuntu Server 22.04)環境にMattermostをインストールしてRSSを読めるように設定していきます。

準備

DBを作成しておきます。
MattermostはPostgreSQLを推奨しているようです。MySQLでも使えそうですが。https://docs.mattermost.com/install/software-hardware-requirements.html#database-software

postgresqlをインストールして起動。

sudo apt install -y postgresql
sudo -u postgres psql

ユーザーやDBを作成し、パスワードや権限などを設定。

CREATE DATABASE <mattermost_db>;
CREATE USER <mattermost_user> WITH PASSWORD '<mattermost_pass>';
GRANT ALL PRIVILEGES ON DATABASE <mattermost_db> to <mattermost_user>;
ALTER DATABASE <mattermost_db> OWNER TO <mattermost_user>;
GRANT USAGE, CREATE ON SCHEMA PUBLIC TO <mattermost_user>;

インストール

リポジトリを追加。

curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost

リポジトリを更新して、Mattermostをインストール。

sudo apt update
sudo apt install mattermost -y

Mattermostは/opt/mattermostにインストールされます。
あわせて、mattermost という名前のユーザーとグループが追加されます。

初期設定

OS起動時に自動で起動するように設定。

sudo systemctl enable mattermost.service

Mattermost Server を起動する前に、サンプル構成ファイル(config.defaults.json)をコピーして、構成ファイル(config.json)を作成。

sudo install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json

構成ファイルを編集。

sudo nano /opt/mattermost/config/config.json

編集内容は以下。

  • SqlSettings
    • DriverName
      • postgres
    • SiteURL
      • https://private.sysmemo.com/mattermost/
    • DataSource
      • postgres://<db_user>:<db_pass>@<db_host>:5432/mattermost?sslmode=disable&connect_timeout=10

SiteURLはMattermostのトップを指定します。
db_user/db_pass/db_hostは作成したDB環境の値に書き換えます。

Mattermost サーバーをDBと同じ環境にインストールする場合は、以下を設定。

sudo nano /lib/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=network.target

# 以下2行を追記
After=postgresql.service
BindsTo=postgresql.service

Apache設定

サブディレクトリで運用したいので、Apacheの設定を追加。

sudo nano /etc/apache2/sites-available/mattermost.conf
ProxyPreserveHost On
RewriteEngine On
RewriteCond %{REQUEST_URI} /mattermost/api/v[0-9]+/(users/)?websocket [NC,OR]
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L]

<Location /mattermost>
    Require all granted

    ProxyPass http://127.0.0.1:8065/mattermost
    ProxyPassReverse http://127.0.0.1:8065/mattermost
    ProxyPassReverseCookieDomain 127.0.0.1 private.sysmemo.com/mattermost
</Location>

設定を有効化。

sudo a2ensite mattermost.conf

Apacheのモジュールを有効化。
有効化しないとProxyPreserveHostとか使えなくて困ったのは秘密。

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel

proxy_wstunnelモジュール有効にするのを忘れていたため、「Please check connection, Mattermost unreachable. If issue persists, ask administrator to check WebSocket port.」というエラーが出てしまったので「sudo a2enmod proxy_wstunnel」を追記。

起動

ApacheとMattermostを再起動。

sudo systemctl restart apache2 && sudo systemctl status apache2
sudo systemctl daemon-reload
sudo systemctl restart mattermost && sudo systemctl status mattermost

設定したURLにアクセスすると初期画面が表示される。
https://private.sysmemo.com/mattermost/

とりあえずブラウザで動作確認したいので「View in Browser」を選択。

管理者アカウントを作成。

組織名を入力。
最後まで設定を進めてわかったのですが、ここで入力した組織名がURLの一部になるようです。
https://private.sysmemo.com/mattermost/<組織名>/channels/<チャンネル名>

何かしらのサービスと連携する設定。今回はスキップ。

招待リンクを共有すれば招待できる様子。今回はスキップ。

トップにエラーが出ているようですが、初期画面が表示されました。

コメント