ウェブサイト検索

Ubuntu 24.04 に Nginx プロキシと無料の Let's Encrypt SSL を使用して Mattermost をインストールする方法


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

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

このページでは

  1. 前提条件
  2. 依存関係のインストール
  3. PostgreSQL データベースとユーザーのセットアップ
  4. Mattermostをダウンロード中
  5. Mattermost を systemd サービスとして実行する
  6. Nginx をリバース プロキシとして設定する
  7. Mattermost へのアクセス
  8. 結論

Mattermost は、Slack や Microsoft Teams に代わるオープンソースのツールです。ファイル共有、検索、自動化、サードパーティ統合などの複数の機能を備えたオンライン チャットを自己ホストできます。

Mattermost は、組織や企業の内部チャットとして設計されたコラボレーション プラットフォームです。メッセージング システム、自動化、統合、セキュリティを組み合わせて、重要なワークフローを実現します。

このチュートリアルでは、Ubuntu 24.04 サーバーに Mattermost をインストールする方法を学習します。 PostgreSQL をデータベースとして、Nginx をリバース プロキシとして使用して Mattermost をインストールします。また、Mattermost を HTTPS で保護し、Mattermost を使用して最初のワークスペースを作成します。

前提条件

このチュートリアルを始めるには、次のものが揃っていることを確認してください。

  • Ubuntu 24.04 サーバー
  • 管理者権限を持つ非 root ユーザー
  • サーバーのIPアドレスを指すドメイン名

依存関係のインストール

Mattermost をインストールするには、PostgreSQL データベース サーバー、Nginx Web サーバー、Certbot などの依存関係をサーバーにインストールする必要があります。

まず、以下の「apt」 コマンドを実行して、Ubuntu パッケージのインデックスを更新し、PostgreSQL、Nginx Web サーバー、Certbot などの依存関係をインストールします。 PostgreSQL サーバーは Mattermost のデフォルト データベースとして使用され、Nginx はリバース プロキシとして使用されます。

sudo apt update && sudo apt install postgresql postgresql-contrib nginx certbot

Y」と入力してインストールを確認します。

インストール後、PostgreSQL サービスのステータスをチェックして、実行されていることを確認します。

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

以下では、PostgreSQL サーバーが有効化され、実行されていることがわかります。

次に、以下のコマンドを使用して Nginx Web サーバーのステータスを確認します。 Ubuntu システム上でも Nginx が実行され、有効になっていることがわかります。

sudo systemctl is-enabled nginx
sudo systemctl status nginx

PostgreSQL データベースとユーザーのセットアップ

依存関係をインストールした後、「psql」または PostgreSQL シェルを使用して、Mattermost の PostgreSQL データベースとユーザーを作成します。最後に、新しいユーザーによる PostgreSQL への認証も確認します。

以下の「psql」コマンドを使用して、PostgreSQL シェルにログインします。

sudo -u postgres psql

次に、次のクエリを実行して、新しいデータベース 'mattermostdb' と、パスワード 'password' を持つ新しいユーザー 'mmuser' を作成します。

CREATE DATABASE mattermostdb;
CREATE USER mmuser WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE mattermostdb to mmuser;

データベースとユーザーを作成したら、以下のクエリを実行して、PostgreSQL サーバーで使用可能なデータベースとユーザーを一覧表示します。

\du
\l

次の出力では、データベース 'mattermostdb' とユーザー 'mmuser' が PostgreSQL サーバーで使用できることがわかります。

ここで「quit」と入力して PostgreSQL を終了します。

次に、以下の「psql」コマンドを実行して、ユーザー「mmuser」としてデータベース「mattermostdb」にログインします。プロンプトが表示されたら、パスワードを入力します。

sudo -u postgres psql --host=localhost --dbname=mattermostdb --username=mmuser --password

最後に、「\conninfo' 以下のクエリ。ユーザー「mmuser」としてデータベース「mattermostdb」にログインしていることを確認してください。

\conninfo

Mattermostをダウンロード中

データベースの準備ができたら、Mattermost をダウンロードし、データ ディレクトリを作成し、Mattermost ドメイン名とデータベースとして PostgreSQL を設定してから、Mattermost に対する適切な権限と所有権を設定します。

まず、以下の「useradd」コマンドを実行して、システム上に新しい「mattermost」ユーザーを作成します。

sudo useradd --system --user-group mattermost

以下の 'wget' コマンドを使用して Mattermost バイナリ ファイルをダウンロードします。次に、'tar' コマンドを使用して Mattermost を抽出します。

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

次に、以下のコマンドを使用して、抽出したディレクトリを「/opt/mattermost」に移動します。

mv mattermost /opt/

次に、ユーザー データを保存するための新しいデータ ディレクトリ '/var/mattermost/data' を作成します。

sudo mkdir -p /opt/mattermost/data

その後、デフォルト設定「/opt/mattermost/config/config.json」を「nano」エディタで編集します。

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

ServiceSettings」セクション内の「SiteURL」行にドメイン名を入力します。

"ServiceSettings": {
 "SiteURL": "mattermost.howtoforge.local",

SqlSettings」セクションで、PostgreSQL データベースの詳細を使用して詳細データベースを変更します。

"SqlSettings": {
 "DriverName": "postgres",
 "DataSource": "postgres://mmuser:password@localhost/mattermostdb?sslmode=disable&connect_timeout=10&binary_parameters=yes",

ファイルを保存し、終了したら終了します。

最後に、次のコマンドを実行して、「/opt/mattermost」ディレクトリの所有権をユーザー「mattermost」に変更し、そのディレクトリへの書き込みアクセスを有効にします。

sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R g+w /opt/mattermost

さらに、テスト目的で、以下のコマンドを使用して Mattermost を手動で起動できます。

cd /opt/mattermost
sudo -u mattermost ./bin/mattermost

Mattermost を systemd サービスとして実行する

このセクションでは、Mattermost 用の新しい systemd サービス ファイルを作成します。これにより、Mattermost がバックグラウンドで実行されるようになり、「systemctl」コマンドを使用して簡単に管理できるようになります。

「nano」エディターを使用して、新しい systemd サービス ファイル「/etc/systemd/system/mattermost.service」を作成します。

sudo nano /etc/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

ファイルを保存し、終了したらエディタを終了します。

次に、以下の「systemctl」コマンドを実行して、systemd マネージャーをリロードします。

sudo systemctl daemon-reload

最後に、次のコマンドを使用して 'mattermost' サービスを開始して有効にし、サービスが実行されていることを確認します。

sudo systemctl enable --now mattermost
sudo systemctl status mattermost

Mattermost が実行されている場合は、画面に次の出力が表示されます。

Nginx をリバース プロキシとして設定する

この時点で、Mattermost は起動して実行されています。これから、Certbot 経由で Mattermost の SSL/TLS 証明書を生成し、Nginx をリバース プロキシとして設定します。したがって、ドメイン名がサーバーの IP アドレスを指していることを確認してください。

Nginx をセットアップする前に、以下の 'certbot' コマンドを実行して、Mattermost インストール用の SSL/TLS 証明書を生成します。必ず電子メール アドレスとドメイン名を自分の詳細情報に変更してください。

sudo systemctl stop nginx
sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email  -d mattermost.howtoforge.local

次に、「nano」を使用してデフォルトの Nginx 構成ファイル「/etc/nginx/nginx.conf」を開きます。

sudo nano /etc/nginx/nginx.conf

次の行を「include /etc/nginx/conf.d/*.conf;」行の前に挿入します。

server_names_hash_bucket_size 64;
include /etc/nginx/conf.d/*.conf;

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

次に、次の「nano」エディタを使用して、新しい Nginx サーバー ブロック構成「/etc/nginx/sites-available/mattermost」を作成します。

sudo nano /etc/nginx/sites-available/mattermost

次の構成を挿入し、ドメイン名を自分の情報に変更してください。

upstream backend {
server 127.0.0.1:8065;
keepalive 32;
}
server {
listen 80 default_server;
server_name mattermost.howtoforge.local;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name mattermost.howtoforge.local;
http2_push_preload on; # Enable HTTP/2 Server Push
ssl_certificate /etc/letsencrypt/live/mattermost.howtoforge.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mattermost.howtoforge.local/privkey.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;
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 $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 60s;
send_timeout 300s;
lingering_timeout 5s;
proxy_connect_timeout 90s;
proxy_send_timeout 300s;
proxy_read_timeout 90s;
proxy_http_version 1.1;
proxy_pass http://backend;
}
location / {
client_max_body_size 100M;
proxy_set_header Connection "";
proxy_set_header Host $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_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 "";
}

ファイルを保存してエディタを終了します。

次に、以下のコマンドを実行して「mattermost」サーバー ブロックをアクティブにし、Nginx 構文を確認します。 Nginx 構文が適切であれば、「構文は問題ありません - テストは成功しました」 などのメッセージが表示されます。

sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
sudo nginx -t

最後に、以下の「systemctl」コマンドを実行して、Nginx Web サーバーを再起動します。これにより、HTTPS も有効になり、Mattermost のインストールの準備が整います。

sudo systemctl start nginx

Mattermost へのアクセス

Web ブラウザを開いて、ドメイン名 https://mattermost.howtoforge.local/ にアクセスします。ここから、Mattermost で最初のワークスペースを作成できます。

  • [ブラウザで表示] をクリックして Mattermost をセットアップします。
  • アカウントの詳細を入力し、[アカウントを作成] をクリックします。
  • 組織名を入力し、[続行] をクリックします。
  • [セットアップを完了] をクリックして設定を完了します。

これで、ワークスペースの次のダッシュボードが表示されます。

結論

おめでとう! Ubuntu 24.04 サーバーへの Mattermost のインストールが完了しました。 Mattermost は、データベースとして PostgreSQL、リバース プロキシとして Nginx を使用して実行されています。また、Let's Encrypt の SSL を使用して Mattermost を保護しました。

関連記事: