もっと詳しく

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

このチュートリアルでは、Ubuntu22.04サーバーにMattermostTeamMessagingSystemをインストールする方法を学習します。

前提条件

  • 最大1000ユーザー用の最小2GBのRAMを備えたUbuntu22.04を実行しているサーバー。

  • sudo権限を持つroot以外のユーザー。

  • Uncomplicated Firewall(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)

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

$ 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には、PostgreSQLの最新のstable(v14)バージョンが付属しています。 1つのコマンドでインストールできます。

$ 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;

次のように入力してPostgreSQLシェルを終了します q シェルで。

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

値を変更する peerscram-sha-256trust 上記の行で。

# "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

MattermostSQLユーザーに接続できることを確認します。

$ 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",

変数を見つける DriverNameSqlSettings その値をに変更します mysql

"DriverName": "mysql",

変数を設定します DataSource 次の値に。 交換 mmuser SQLユーザー名を使用して、 YourPassword23! SQLパスワードを使用して、 mattermostdb データベース名を使用して、手順4で構成しました。

"DataSource": "mmuser:[email protected](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 protected] -d mattermost.example.com

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

を生成します Diffie-Hellmanグループ 証明書。

$ 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をシャットダウンする必要があることを意味します。 The pre_hookpost_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 Monicaのファイルのデフォルトのアップロードサイズである10MBに設定されています。 これは、以前に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に示すように、サインアップページが表示されます。アカウントの詳細を入力すると、システム管理者として設定されます。

先に進む前に、パブリックURLを介してアクセスできるようにMattermostを構成したため、ポート8065を閉じる必要があります。 したがって、開いているポートにはセキュリティ上のリスクがあります。

$ sudo ufw delete allow 8065

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

最も重要なチーム作成ページ

クリック チームを作成する ボタンをクリックして、最初のチームを作成します。

最も重要な新しいチーム

次に、チームのパブリックURLを設定するように求められます。

最も重要なチームのURL

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

Mattermostダッシュボード

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

Mattermostは、 config.json ファイルまたはダッシュボードからシステムコンソールを使用します。 ダッシュボードを使用する方がはるかに簡単なので、ダッシュボードを介して実行します。 左上隅の[製品]ボタンをクリックして、[システムコンソール オプション。

Mattermostシステムコンソールメニュー

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

電子メール通知を構成する

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

最初のステップは、通知を有効にすることです。 訪問 システムコンソール>>サイト構成>>通知 メニューを選択し、次のオプションを設定します。

  • 設定 電子メール通知を有効にする真実
  • 設定 通知表示名応答なし
  • 設定 住所からの通知 のようなものに [email protected]
  • 設定 サポートメールアドレス のようなものに [email protected]

最も重要な電子メール通知

次のステップは、SMTPを有効にすることです。 訪問 システムコンソール>>環境>>SMTP メニューを選択し、次のオプションを設定します。 このチュートリアルでは、AmazonSESメーラーを使用しています。

  • 設定 SMTPサーバー{SMTPサーバー}
  • 設定 SMTPサーバーポート465
  • 設定 SMTP認証を有効にする 本当に
  • 設定 SMTPサーバーのユーザー名{SES-ユーザー名}
  • 設定 SMTPサーバーのパスワード{SESキー}
  • 設定 接続セキュリティTLS また STARTTLS、SMTPサーバーが受け入れるものに応じて

クリック 接続のテスト ボタンをクリックしてSMTP設定を確認します。

最も重要なSMTP設定

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

$ sudo systemctl restart mattermost

結論

これで、Ubuntu22.04サーバーへのMattermostTeamMessagingシステムのインストールと構成に関するチュートリアルは終了です。 ご不明な点がございましたら、下のコメント欄に投稿してください。

The post Ubuntu22.04にMattermostTeamMessagingSystemをインストールする方法 appeared first on Gamingsym Japan.