ウェブサイト検索

Ubuntu 22.04にMattermostチームメッセージングシステムをインストールする方法


Ubuntu 22.04にMattermostチームメッセージングシステムをインストールする方法

このチュートリアルはこれらのOSバージョンのために存在します

  • Ubuntu 22.04 (ジャミー・ジェリーフィッシュ)
  • Ubuntu 20.04 (フォーカルフォッサ)

このページで

  1. 前提条件
  2. ステップ1 - ファイアウォールを設定する
  3. ステップ2 - PostgreSQLをインストールする
  4. ステップ3 - PostgreSQLを設定する
  5. ステップ4 - Mattermostをダウンロードする
  6. ステップ5 - Mattermostのシステムユーザーを作成し、権限を設定する
  7. ステップ6 - Systemdユニットファイルを作成する
  8. ステップ7 - Nginxをインストールする
  9. ステップ8 - SSLをインストールする
  10. ステップ9 - Nginxを設定する
  11. ステップ10 - Mattermostサーバーにアクセスする
  12. ステップ11 - Mattermostサーバーを構成する

    1. メール通知を設定する
  13. 結論

Mattermostは、チャット、ファイル共有、プロジェクト管理、ワークフローのオーケストレーションに使用されるオープンソースのメッセージングプラットフォームです。これはGo言語で書かれています。クラウドホスティングされたソリューションと自己ホスティングされたサーバーの両方として提供されます。Slackや他のプロフェッショナルプラットフォームの代替手段です。サーバー上でホストできる能力は、コミュニケーションと機密データを制御することを可能にします。

このチュートリアルでは、Ubuntu 22.04サーバーにMattermostチームメッセージングシステムをインストールする方法を学びます。

前提条件

    最大1000ユーザー用に、最小2GBのRAMを搭載したUbuntu 22.04を実行しているサーバー。

    sudo権限を持つ非ルートユーザー。

    簡易ファイアウォール(UFW)が有効で実行中です。

    サーバーにポイントされた完全修飾ドメイン名。私たちのチュートリアルでは、ドメインmattermost.example.comを使用します。

    すべてが更新されています。

    sudo apt update && sudo apt upgrade
    

ステップ1 - ファイアウォールを設定する

パッケージをインストールする前の最初のステップは、HTTPおよびHTTPS接続を許可するようにファイアウォールを設定することです。

ファイアウォールの状態を確認してください。

sudo ufw status

次のようなものが表示されるはずです。

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

ポート8065はMattermostによって必要です。このポートはインストールを確認するためだけに一時的に開く必要があります。後で削除します。

sudo ufw allow 8065

HTTPおよびHTTPSポートを許可します。

sudo ufw allow http
sudo ufw allow https

再度ステータスを確認して、確認してください。

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
8065                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
8065 (v6)                  ALLOW       Anywhere (v6)

ステップ2 - PostgreSQLをインストールする

MattermostはMySQLとPostgreSQLサーバーの両方で動作できますが、PostgreSQLが推奨される選択肢です。

Ubuntu 22.04には最新の安定版(v14)のPostgreSQLが含まれています。単一のコマンドでインストールできます。

sudo apt install postgresql postgresql-contrib

MySQLのバージョンを確認してください。

psql --version
psql (PostgreSQL) 14.4 (Ubuntu 14.4-0ubuntu0.22.04.1)

ステップ3 - PostgreSQLを設定する

PostgreSQLはインストール中にLinuxユーザーアカウントpostgresを作成します。このアカウントを使用してPostgreSQLシェルにアクセスできます。

PostgreSQLシェルにログインします。

sudo -u postgres psql

Mattermostデータベースを作成してください。

postgres=# CREATE DATABASE mattermostdb;

Mattermostのデータベースユーザーを作成します。mmuser-passwordをお客様の選んだより強力なパスワードに置き換えてください。

postgres=# CREATE USER mmuser WITH PASSWORD 'mmuser-password';

データベースのすべての特権をそのユーザーに付与してください。

postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;

シェルで \q を入力して PostgreSQL シェルを終了します。

postgres=# \q

/etc/postgresql/{version}/main/pg_hba.confファイルを編集のために開いてください。

sudo nano /etc/postgresql/{version}/main/pg_hba.conf

次の行を見つけてください。

"local" is for Unix domain socket connections only
local   all             all                                     peer
IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

上記の行でpeerとscram-sha-256の値をtrustに変更してください。

"local" is for Unix domain socket connections only
local   all             all                                     trust
IPv4 local connections:
host    all             all             127.0.0.1/32            trust
IPv6 local connections:
host    all             all             ::1/128                 trust

Ctrl + X を押してファイルを保存し、促されたらYと入力します。

変更を有効にするためにPostgreSQLサービスを再起動してください。

sudo systemctl restart postgresql

MattermostのSQLユーザーに接続できることを確認してください。

psql --dbname=mattermost --username=mmuser --password

パスワードを入力するように求められます。入力すると、PostgreSQLシェルにログインします。シェルを終了するには \q と入力してください。

Password:
psql (14.4 (Ubuntu 14.4-0ubuntu0.22.04.1))
Type "help" for help.

mattermost-> \q

ステップ4 - Mattermostをダウンロードする

Mattermostサーバーの最新バージョンをダウンロードしてください。このチュートリアルを書いている時点で、利用可能な最新バージョンは7.0.1です。

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

アーカイブを抽出してください。

tar -xvzf mattermost*.gz

抽出されたファイルを/optディレクトリに移動します。

sudo mv mattermost /opt

Mattermostサーバーのデータストレージディレクトリを作成してください。

sudo mkdir /opt/mattermost/data

ステップ5 - Mattermostのシステムユーザーを作成し、権限を設定する

編集のために設定ファイル/opt/mattermost/config/config.jsonを開いてください。

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

変数SiteURLを、インストールに使用するドメイン名に設定してください。

"SiteURL": "https://mattermost.example.com",

変数DriverNameをSqlSettingsの下で見つけ、その値をmysqlに変更してください。

"DriverName": "mysql",

変数DataSourceを次の値に設定します。mmuserをSQLユーザー名に、YourPassword23!をSQLパスワードに、mattermostdbをステップ4で設定したデータベース名に置き換えてください。

"DataSource": "mmuser:YourPassword23!@tcp(localhost:3306)/mattermostdb?charset=utf8mb4,utf8&writeTimeout=30s",

この時点で設定できる他の設定がたくさんありますが、インストール後に行う方が簡単です。今のところ、これらの2つの設定だけが必須です。

Ctrl + X を押してファイルを保存し、促されたらYと入力します。

Mattermostサーバー用のシステムユーザーとグループを作成します。

sudo useradd --system --user-group mattermost

Mattermostディレクトリの所有権を新しく作成したユーザーとグループに変更します。

sudo chown -R mattermost:mattermost /opt/mattermost

ディレクトリに対してmattermostグループに書き込み権限を付与します。

sudo chmod -R g+w /opt/mattermost

Mattermostディレクトリに切り替えます。

cd /opt/mattermost

Mattermostサーバーをmattermostユーザーとして起動します。

sudo -u mattermost ./bin/mattermost

サーバーが起動し、一連のログ情報が生成されます。Server is listening on [::]:8065の行が表示されるまで待ってください。ブラウザで次のURL http://<serverIPaddress>:8065 にアクセスすると、以下のログインページが表示されます。

サーバーを停止するにはCtrl + Cを押してください。インストールの設定については後で戻ってきます。

ステップ6 - Systemdユニットファイルを作成する

次のステップは、Mattermostのためのシステムファイルを作成することです。

ユニットファイルを作成して編集のために開いてください。

sudo nano /lib/systemd/system/mattermost.service

そのコードをそこに貼り付けてください。

[Unit]
Description=Mattermost
After=network.target
After=postgresql.service
BindsTo=postgresql.service

[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Ctrl + X を押してファイルを保存し、促されたらYと入力します。

サービスファイルを読み込むためにsystemdデーモンを再読み込みしてください。

sudo systemctl daemon-reload

Mattermostサービスを開始する。

sudo systemctl start mattermost

サービスの状態を確認してください。

? mattermost.service - Mattermost
     Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-07-11 01:24:46 UTC; 20s ago
   Main PID: 23628 (mattermost)
      Tasks: 48 (limit: 2241)
     Memory: 448.2M
        CPU: 14.929s
     CGroup: /system.slice/mattermost.service
             ??23628 /opt/mattermost/bin/mattermost
             ??23651 plugins/com.mattermost.plugin-channel-export/server/dist/plugin-linux-amd64
             ??23656 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64
             ??23662 plugins/com.mattermost.calls/server/dist/plugin-linux-amd64
             ??23668 plugins/com.mattermost.apps/server/dist/plugin-linux-amd64
             ??23674 plugins/playbooks/server/dist/plugin-linux-amd64
             ??23683 plugins/focalboard/server/dist/plugin-linux-amd64
 ....

サービスを有効にしてください。

sudo systemctl enable mattermost

ステップ7 - Nginxをインストールする

Ubuntu 22.04には古いバージョンのNginxが付属しています。最新バージョンをインストールするには、公式のNginxリポジトリをダウンロードする必要があります。

Nginxの署名キーをインポートします。

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Nginxの安定版のリポジトリを追加してください。

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

システムリポジトリを更新してください。

sudo apt update

Nginxをインストールします。

sudo apt install nginx

インストールを確認してください。

nginx -v
nginx version: nginx/1.22.0

ステップ8 - SSLをインストールする

SSL証明書を生成するためにCertbotをインストールする必要があります。Ubuntuのリポジトリを使用してCertbotをインストールするか、Snapdツールを使用して最新バージョンを取得することができます。私たちはSnapdバージョンを使用します。

Ubuntu 22.04 には、デフォルトで Snapd がインストールされています。以下のコマンドを実行して、Snapd のバージョンが最新であることを確認してください。

sudo snap install core

Certbotをインストールします。

sudo snap install --classic certbot

次のコマンドを使用して、Certbot コマンドが /usr/bin ディレクトリへのシンボリックリンクを作成することで実行できることを確認してください。

sudo ln -s /snap/bin/certbot /usr/bin/certbot

次のコマンドを実行してSSL証明書を生成します。

sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email  -d mattermost.example.com

上記のコマンドは、サーバーの/etc/letsencrypt/live/mattermost.example.comディレクトリに証明書をダウンロードします。

ディフィー・ヘルマン群証明書を生成します。

sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

/etc/letsencrypt/renewal/mattermost.example.com.confというファイルを編集のために開いてください。

sudo nano /etc/letsencrypt/renewal/mattermost.example.com.conf

以下のコードを一番下に貼り付けてください。

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

Ctrl + X を押してファイルを保存し、促されたらYと入力します。

私たちはCertbotのスタンドアロンオプションを使用してSSL証明書を生成しました。証明書を作成するためにそれ自身のWebサーバーを実行するため、更新中はNginxを停止させる必要があります。pre_hookおよびpost_hookコマンドは、更新の前後に実行され、Nginxサーバーを自動的に停止および再起動します。これにより、手動での介入は不要です。

SSLの更新が問題なく機能しているかどうかを確認するために、プロセスのドライランを行ってください。

sudo certbot renew --dry-run

エラーが見当たらなければ、すべて準備完了です。あなたの証明書は自動的に更新されます。

ステップ9 - Nginxを設定する

ファイル /etc/nginx/nginx.conf を編集のために開いてください。

sudo nano /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf;の前に次の行を追加してください。

server_names_hash_bucket_size  64;

Ctrl + X を押してファイルを保存し、プロンプトが表示されたら Y を入力します。

/etc/nginx/conf.d/monica.conf ファイルを作成して編集のために開いてください。

sudo nano /etc/nginx/conf.d/mattermost.conf

以下のコードを貼り付けてください。mattermost.example.comをあなたのドメイン名に置き換えてください。client_max_body_sizeの値を10MBに設定してください。これはMonicaでのファイルのデフォルトアップロードサイズです。これは、以前にPHPで設定したのと同じ値です。

upstream backend {
   server 127.0.0.1:8065;
   keepalive 32;
}

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;

server {
  listen 80 default_server;
  server_name   mattermost.example.com;
  return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl http2;
   server_name    mattermost.example.com;

   http2_push_preload on; # Enable HTTP/2 Server Push

   ssl_certificate /etc/letsencrypt/live/mattermost.example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/mattermost.example.com/privkey.pem;
   ssl_trusted_certificate /etc/letsencrypt/live/mattermost.example.com/chain.pem;
   ssl_session_timeout 1d;

   # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
   ssl_protocols TLSv1.2 TLSv1.3;

   # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
   # prevent replay attacks.
   #
   # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
   ssl_early_data on;

   ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:50m;
   # HSTS (ngx_http_headers_module is required) (15768000 seconds = six months)
   add_header Strict-Transport-Security max-age=15768000;
   # OCSP Stapling ---
   # fetch OCSP records from URL in ssl_certificate and cache them
   ssl_stapling on;
   ssl_stapling_verify on;
   ssl_dhparam /etc/ssl/certs/dhparam.pem;

   add_header X-Early-Data $tls1_3_early_data;

   location ~ /api/v[0-9]+/(users/)?websocket$ {
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       client_max_body_size 50M;
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       client_body_timeout 60;
       send_timeout 300;
       lingering_timeout 5;
       proxy_connect_timeout 90;
       proxy_send_timeout 300;
       proxy_read_timeout 90s;
       proxy_http_version 1.1;
       proxy_pass http://backend;
   }

   location / {
       client_max_body_size 50M;
       proxy_set_header Connection "";
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       proxy_read_timeout 600s;
       proxy_cache mattermost_cache;
       proxy_cache_revalidate on;
       proxy_cache_min_uses 2;
       proxy_cache_use_stale timeout;
       proxy_cache_lock on;
       proxy_http_version 1.1;
       proxy_pass http://backend;
   }
}

This block is useful for debugging TLS v1.3. Please feel free to remove this
and use the `$ssl_early_data` variable exposed by NGINX directly should you
wish to do so.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

Ctrl + X を押してファイルを保存し、プロンプトが表示されたら Y を入力します。

Nginxにキャッシュディレクトリへのアクセス権を与えてください。

sudo chown -R nginx:nginx /var/cache/nginx

Nginxの設定を確認してください。

sudo nginx -t

Nginxサーバーを再起動します。

sudo systemctl restart nginx

ステップ10 - Mattermostサーバーにアクセスする

ブラウザでURL https://mattermost.example.com を開くと、ステップ5に示したサインアップページが表示されます。アカウントの詳細を入力すると、システム管理者として設定されます。

これ以上進む前に、MattermostをパブリックURL経由でアクセスできるように設定したため、ポート8065を閉じる必要があります。したがって、開いているポートはセキュリティリスクを引き起こします。

sudo ufw delete allow 8065

次に、チーム作成ページに移動します。

チームを作成ボタンをクリックして、最初のチームを作成してください。

次に、チームのために公開URLを設定するように求められます。

完了ボタンをクリックしてMattermostダッシュボードを開きます。

ステップ11 - Mattermostサーバーを構成する

Mattermostはconfig.jsonファイルを使って設定することも、ダッシュボードのシステムコンソールを使って設定することもできます。今回は、こちらの方がずっと簡単なので、ダッシュボードを使って設定します。左上のプロダクトボタンをクリックし、次にシステムコンソールオプションを選択してください。

システムコンソールのダッシュボードに移動し、サーバーに関するすべてを設定できます。

メール通知を設定する

メッセージングシステムの最も重要な機能の1つは、メール通知です。

最初のステップは通知を有効にすることです。システムコンソール >> サイト設定 >> 通知 メニューにアクセスし、以下のオプションを設定してください。

  • メール通知を有効にするをtrueに設定します
  • 通知表示名をノーリプライに設定する
  • 通知送信者アドレスを何かに設定します。
  • サポートメールアドレスを以下のように設定します

次のステップはSMTPを有効にすることです。 システムコンソール >> 環境 >> SMTP メニューに移動し、以下のオプションを設定します。私たちのチュートリアルでは、Amazon SESメール送信者を使用しています。

  • SMTPサーバーを{SMTP-server}に設定します
  • SMTPサーバーポートを465に設定する
  • SMTP認証を有効にするを真に設定してください
  • SMTPサーバーのユーザー名を{SES-username}に設定します
  • SMTPサーバーのパスワードを{SES-Key}に設定します
  • 接続セキュリティをTLSまたはSTARTTLSに設定します。SMTPサーバーが受け入れるものに応じて選択してください。

接続テストボタンをクリックして、SMTP設定を確認してください。

設定をさらに多く構成する必要があります。完了したら、変更を適用するためにターミナルからサーバーを再起動する必要があります。

sudo systemctl restart mattermost

結論

これで、Ubuntu 22.04サーバーにMattermostチームメッセージングシステムをインストールおよび構成するためのチュートリアルを終了します。質問がある場合は、下記のコメントに投稿してください。

関連記事: