序章

Mattermost は、セキュリティと構成可能性を念頭に置いて作成されたオープンソースのコラボレーションおよびメッセージングプラットフォームであり、DiscordまたはSlackと同等の機能を提供します。 グループ、スレッド、1対1のメッセージング、無制限の検索履歴とファイル共有機能、2要素認証と通知を提供します。 Mattermostは、さらにカスタマイズするためのWebhookとボットの統合も提供します。 レスポンシブウェブインターフェースと専用のモバイルアプリにより、あらゆるタイプの最新デバイスからアクセスできます。

このチュートリアルでは、Ubuntu20.04サーバーにMattermost TeamEditionをセットアップします。 まず、無料の Let’s Encrypt TLS証明書で保護された状態で、インストールしてドメインに公開します。 次に、メール通知を有効にし、ブランディングをカスタマイズして、メッセージングボード(Mattermostではチームと呼ばれます)を作成します。

前提条件

  • 少なくとも2GBのRAM、rootアクセス、およびsudoの非rootアカウントを備えたUbuntu20.04を実行しているサーバー。 これは、この初期サーバーセットアップガイドに従ってセットアップできます。
  • サーバーにMariaDBがインストールされています。 これを行う方法については、 Ubuntu20.04にMariaDBをインストールする方法にアクセスしてください。 チュートリアルの冒頭で概説した短いバージョンに従うことができます。
  • サーバーに送信専用モードでインストールされたPostfix。 Ubuntu 20.04でPostfixを送信専用SMTPサーバーとしてインストールおよび設定する方法チュートリアルにアクセスして、これを設定してください。 これを使用して、Mattermostからの電子メール通知の送信を有効にします。
  • Nginxがサーバーにインストールされています。 これを行う方法のガイドについては、 Ubuntu20.04にNginxをインストールする方法のステップ1から4を完了してください。
  • サーバーを指す、Mattermostをホストするための完全に登録されたドメイン名。 このチュートリアルでは、 mattermost.your_domain 全体を通して。 Namecheap でドメイン名を購入するか、 Freenom で無料でドメイン名を取得するか、選択したドメイン登録事業者を使用できます。 DigitalOceanの場合、それらを追加する方法の詳細については、このDigitalOceanDNSの概要に従うことができます。

:Postfix SMTPサーバーが正しく機能するには、サーバーのPTRレコードが一致している必要があります your_domain. 次のように入力して、サーバーのホスト名を確認できます hostname コマンドプロンプトで。 出力は、サーバーを作成したときにサーバーに付けた名前と一致する必要があります。

ステップ1—Mattermostのインストール

このセクションでは、サーバーにMattermostを設定します。 これには、最新バージョンをダウンロードし、MariaDBデータベースを使用するように構成し、Mattermostを常にバックグラウンドで実行し続けるsystemdサービスを作成する必要があります。

Mattermostのダウンロード

Mattermostのインストールに関連するすべてのデータを次の名前のフォルダーに保存します ~/mattermost. 次のコマンドを実行して作成します。

  1. mkdir ~/mattermost

そこに移動します:

  1. cd ~/mattermost

公式ウェブサイトのMattermostdownload ページにアクセスし、最新リリースのリンクをコピーする必要があります。 執筆時点では、最新バージョンは 5.24.2. を使用してダウンロード wget 次のコマンドを使用します。

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

次に、次のコマンドを実行してアーカイブを解凍します。

  1. tar -xvzf mattermost*.gz

このコマンドは、名前がで始まるディレクトリ内のすべてのアーカイブファイルを解凍します mattermost.

ダウンロードした元のファイルとまったく同じ名前のフォルダーが作成されます。このフォルダーには、Mattermostバイナリが含まれています。 にコピーします /opt したがって、次のコマンドを実行することで、システム全体でアクセスできるようになります。

  1. sudo cp -r mattermost /opt

次に、Mattermostのフォルダーを作成します。このフォルダーには、ユーザーデータが保存されます。

  1. sudo mkdir /opt/mattermost/data

注: Mattermostは、あなたとあなたのチームが共有するファイルと画像をこのディレクトリに保存するため、ドライブが配置されているドライブに十分な空き容量があることを確認してください。

次に、Mattermostのユーザーとグループを作成します。

  1. sudo useradd --system --user-group mattermost

次に、新しく作成したユーザーとそのグループにデータフォルダーを所有させます。

  1. sudo chown -R mattermost:mattermost /opt/mattermost

これは、侵害が発生した場合に、攻撃者がMattermostディレクトリに限定され、システムの他の部分に簡単にアクセスできないようにするために行われます。

最後に、 /opt/mattermost グループで書き込み可能なディレクトリ:

  1. sudo chmod -R g+w /opt/mattermost

Mattermostバイナリがセキュリティで保護された権限で配置されたので、データベースを設定しましょう。

データベースの設定

次のコマンドを実行して、MariaDBプロンプトを入力することから始めます。

  1. sudo mysql

と呼ばれるデータベースユーザーを作成します mmuser 次のコマンドを実行して、 your_mmuser_password 選択したパスワードを使用して:

  1. CREATE USER 'mmuser'@'%' IDENTIFIED BY 'your_mmuser_password';

次に、Mattermostのデータベースを作成します。

  1. CREATE DATABASE mattermost;

させるには mmuser アクセスする mattermost データベースで、次を実行してアクセス権限を付与します。

  1. GRANT ALL PRIVILEGES ON mattermost.* TO 'mmuser'@'%';

次に、付与テーブルをリロードして、変更をすぐに適用します。

  1. FLUSH PRIVILEGES;

完了したら、プロンプトを終了します。

  1. exit

データベースとそれに付随するユーザーを作成したら、メインのMattermost構成ファイルを編集して、正しいデータベース接続文字列を設定します。

編集のために開きます:

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

次のような行を見つけます。

/opt/mattermost/config/config.json
. . .
"DriverName": "..."
"DataSource": "..."
. . .

ここに示すように変更し、置き換えます your_mmuser_password に設定したパスワードを使用して mmuser データベースアカウント:

/opt/mattermost/config/config.json
...
"DriverName": "mysql"
"DataSource": "mmuser:your_mmuser_password@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"
...

完了したら、ファイルを保存して閉じます。

これで、ユーザー、チーム、メッセージを保存する新しく作成されたデータベースを使用するようにMattermostを構成しました。 これで、作成に進む準備ができました。 systemd それのためのサービス。

systemdサービスの作成

を使用してサービスとしてMattermostを実行する systemd 常にバックグラウンドで実行されることを保証します。

サービス構成をという名前のファイルに保存します mattermost.service、 の中に /lib/systemd/system ディレクトリ、ここで systemd そのサービスを保存します。 テキストエディタを使用して作成します。

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

次の行を追加します。

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

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

[Install]
WantedBy=mysql.service

ここでは、最初にサービスの説明を指定します。 次に、あなたは次のように述べます mysql Mattermostサービスを機能させるにはMariaDBを実行する必要があるため、Mattermostサービスの前にサービスを開始する必要があります。 後に [Unit] セクションでは、サービスのタイプを定義します。 notify プロセスが通知することを意味します systemd それがロードされていること。 実行されるコマンドを指定し、再起動ポリシーを次のように設定します。 always. また、プロセスの作業ディレクトリと、プロセスを実行するユーザーとグループを定義します。

の中に [Install] セクションでは、データベースサービスをの値として指定します WantedBy Mattermostがデータベースと一緒に再起動することを保証するパラメータ。 この設定を省略すると、データベースが自動的に更新されるときに問題が発生する可能性があります。これは、Mattermostが再起動しないと動作を停止する可能性があるためです。

ファイルを保存して閉じてから、次のコマンドを実行してすべてのサービスをリロードします。

  1. sudo systemctl daemon-reload

正しくロードされていることを確認してください。

  1. sudo systemctl status mattermost

次の出力が表示されます。

Output
● mattermost.service - Mattermost Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; vendor preset: enabled) Active: inactive (dead)

もしも systemd エラーを報告し、サービスファイルのファイル名、その場所、およびその内容の有効性を再確認してください。

次に、以下を実行してMattermostサービスを有効にします。

  1. sudo systemctl enable mattermost

このステップでは、Mattermostをダウンロードし、MariaDBデータベースを使用するように構成し、 systemd それのためのサービス。 次のステップでは、ドメインで公開します。

ステップ2—ドメインで最も重要なことを公開する

このセクションでは、NginxをMattermostのリバースプロキシサーバーとして構成します。

Nginxを構成する前に、メインのMattermost構成ファイルでドメインを指定する必要があります。 編集のために開きます:

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

次のような行を見つけます。

/opt/mattermost/config/config.json
. . .
"SiteURL": ""
. . .

ドメインの名前を引用符で囲みます。

/opt/mattermost/config/config.json
...
"SiteURL": "http://mattermost.your_domain"
...

ファイルを保存して閉じます。

Nginxの前提条件の手順で学習したように、そのサイト構成ファイルは次の場所に保存されます。 /etc/nginx/sites-available 後でシンボリックリンクする必要があります /etc/nginx/sites-enabled アクティブになります。

ドメインでMattermostを公開するための構成を次の名前のファイルに保存します mattermost.conf、 下 /etc/nginx/sites-available. エディターを使用して作成します。

  1. sudo nano /etc/nginx/sites-available/mattermost.conf

次の行を追加します。

/etc/nginx/sites-available/mattermost.conf
upstream backend {
   server localhost: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;
   server_name mattermost.your_domain;

   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_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;
   }
}

交換 mattermost.your_domain 目的のドメインでファイルを保存して閉じます。

このファイルでは、NginxがHTTPポートをリッスンする必要があることを定義します 80. 次に、 server_name これは、リクエストを受け入れてこの特定の構成を適用するドメインをNginxに指示します。 次の2つのブロックは、Mattermostが正しく機能するように、プロキシ接続をさらに構成します。

このサイト構成をアクティブにするには、サイトにシンボリックリンクを作成する必要があります。 /etc/nginx/sites-enabled 実行することによるフォルダ:

  1. sudo ln -s /etc/nginx/sites-available/mattermost.conf /etc/nginx/sites-enabled/mattermost.conf

構成の有効性をテストするには、次のコマンドを実行します。

  1. sudo nginx -t

次の出力が表示されます。

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

構成を有効にするには、Nginxを再起動する必要があります。

  1. sudo systemctl restart nginx

次に、以下を実行してMattermostサービスを開始します。

  1. sudo systemctl start mattermost

このコマンドが終了したら、ブラウザでドメインに移動してみてください。 サインアップを求めるページが表示されます。

これで、Mattermostのインストールが利用可能になり、ドメインでアクセスできるようになりました。 次のステップでは、無料のLet’sEncryptTLS証明書を適用してセキュリティを確保します。

ステップ3—ドメインを保護する

このセクションでは、Certbotを使用してプロビジョニングするLet’sEncryptTLS証明書を使用してドメインを保護します。

前提条件の一部としてCertbotをすでにインストールしている必要があるため、次を実行してNginxプラグインをインストールするだけで済みます。

  1. sudo apt install python3-certbot-nginx

また、前提条件の一部として、有効にしました ufw (複雑でないファイアウォール)そして暗号化されていないHTTPトラフィックを許可するように構成しました。 セキュリティで保護されたサイトにアクセスできるようにするには、次のコマンドを実行して、暗号化されたトラフィックを受け入れるようにサイトを構成する必要があります。

  1. sudo ufw allow https

出力は次のようになります。

Output
Rule added Rule added (v6)

Nginxと同様に、構成を有効にするには、Nginxをリロードする必要があります。

  1. sudo ufw reload

出力には次のように表示されます。

Output
Firewall reloaded

ドメインの証明書をリクエストするには、次のコマンドを実行します。

  1. sudo certbot --nginx -d mattermost.your_domain

このコマンドでは、次のコマンドを実行します certbot ドメインの証明書をリクエストするには、ドメイン名を -d パラメータ。 The --nginx フラグは、HTTPSをサポートするようにNginxサイト構成を自動的に変更するように指示します。 交換することを忘れないでください mattermost.your_domain あなたのドメイン名で。

Certbotを初めて実行する場合は、緊急通知用の電子メールアドレスを提供し、EFFの利用規約に同意するように求められます。 次に、CertbotはLet’sEncryptからドメインの証明書を要求します。 次に、すべてのHTTPトラフィックをHTTPSにリダイレクトするかどうかを尋ねられます。

Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

セキュリティを最大化するために、2番目のオプションを選択することをお勧めします。 選択内容を入力したら、を押します ENTER.

出力は次のようになります。

Output
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/mattermost.your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/mattermost.your_domain/privkey.pem Your cert will expire on 2020-09-28. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

これは、CertbotがTLS証明書を正常に生成し、それらをドメインのNginx構成に適用したことを意味します。

これでドメインにHTTPSを使用してアクセスできるようになったため、メインのMattermost構成ファイルでドメインのURLを修正する必要があります。 編集のために開きます:

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

もう一度、次のような行を見つけます。

/opt/mattermost/config/config.json
. . .
"SiteURL": "http://mattermost.your_domain"
. . .

変化する httphttps:

/opt/mattermost/config/config.json
. . .
"SiteURL": "https://mattermost.your_domain"
. . .

編集する必要があるのはこれだけなので、ファイルを保存して閉じます。

次のコマンドを実行してMattermostを再起動します。

  1. sudo systemctl restart mattermost

これで、ブラウザでMattermostドメインをリロードし、サイトアドレスの左側にある南京錠を確認できます。これは、接続が適切に保護されていることを意味します。

TLS証明書が正常に構成され、安全な接続を介してドメインにアクセスできるようになったので、Mattermostを構成する準備が整いました。

ステップ4—Mattermostのセットアップ

このセクションでは、Mattermostでチームを作成し、メール通知を設定し、サーバーのブランドを変更します。

初めてMattermostにアクセスするときは、サーバーへの管理者権限を持つアカウントを作成する必要があります。 すでにアカウントをお持ちの場合は、代わりにログインできます。 ログインすると、参加できるチームがないことを示すページが表示されます。

これを修正するには、チームの作成を選択します。 チームに名前を付けるように求めるページが表示されます(たとえば、 Sammy):

お好きな名前を入力して、次へをクリックしてください。 次に、ドメインでチームのWebアドレスを定義するように求められます。これは、Mattermostのチームのアクセスポイントになります。

URLは変更しないでおくことができます。 完了したら、[完了]をクリックします。 Mattermostがチームを作成し、チュートリアルをスキップすると、メインのインターフェースが表示されます。ここで、ほとんどの時間をコミュニケーションに費やします。

インターフェースについては、次のステップで詳しく説明します。 設定にアクセスするには、左上隅にあるユーザー名をクリックしてから、システムコンソールをクリックします。 このオプションにアクセスできるのは、管理者ユーザーの場合のみです。

左側には、Mattermost構成のセクションへのアクセスを提供するメニューがあります。 最初にメール通知を設定するので、環境の下にあるSMTPオプションをクリックします。

前提条件の一部としてインストールしたPostfixサーバーに接続するには、次のように入力します localhost SMTPサーバーとして、および 25 SMTPサーバーポートとして。 完了したら、青い保存ボタンをクリックし、さらに下にある接続のテストボタンを押します。 緑色のボックスに次のようなメッセージが表示されます電子メールの送信中にエラーは報告されませんでした。 受信トレイをチェックして確認してください。

これで、サインアップした電子メールの受信ボックスを確認できます。 メール設定が正しく設定されていることを示すMattermostからのメッセージが表示されます。 届かない場合は、迷惑メールフォルダを確認してください。 Mattermostからエラーを受け取った場合は、入力内容を再確認し、必要に応じて、前提条件のチュートリアルをもう一度実行してください。

メールが機能していることを確認したので、メニューのサイト構成の下にある通知を選択して、メール通知を有効にする必要があります。 メール通知を有効にする設定を true 通知元アドレスを次のような選択したメールアドレスに設定します mattermost@your_domain.

実際に存在する必要はなく、監視されないため、次のように入力します no-reply 通知表示名として。これは、電子メールクライアントに表示される送信者の名前です。 オプションで、メールバッチ処理を有効にするを使用して、複数の未読メッセージを1つのメールに圧縮し、チームのメンバーに送信するメールの総数を減らすことができます。 設定の変更が終わったら、保存をクリックします。

メール通知をグローバルに有効にしました。オプションで、サイト構成の下にあるカスタマイズオプションを選択して、サーバーのブランドを変更できます。 ここでは、サイト名サイトの説明を設定したり、カスタムブランドの画像とテキストをアップロードしたりできます。

システムコンソールを終了するには、左上隅にあるユーザー名をクリックし、ドロップダウンメニューから最初のオプションを選択します。

Mattermostでチームを作成し、メール通知を設定したので、チームで行われている新しいディスカッションについて常に通知されます。

結論

これで、独自のスケーラブルなセルフホストメッセージングプラットフォームができました。これを使用して、すべてのデバイス間で共同作業を行うことができます。 これで、より効率的に通信し、ファイルを共有し、メッセージやチャネル全体を簡単に検索できるようになります。

Mattermostユーザーインターフェイスの使用について詳しく知りたい場合は、公式ドキュメントにアクセスしてください。