ウェブサイト検索

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


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

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

  • Ubuntu 24.04 (ノーブル・ナンバット)
  • Ubuntu 22.04 (ジャミー・ジェリーフィッシュ)
  • Ubuntu 20.04 (フォーカルフォッサ)

このページで

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

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

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

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

前提条件

このチュートリアルを始める前に、以下のものを準備してください:

  • Ubuntu 24.04サーバー
  • 管理者権限を持つ非ルートユーザー
  • ドメイン名がサーバーのIPアドレスを指している

依存関係をインストール中

Mattermostをインストールするには、PostgreSQLデータベースサーバー、Nginxウェブサーバー、Certbotを含む依存関係をサーバーにインストールする必要があります。

まず、以下の&apost;apt'コマンドを実行して、Ubuntuパッケージインデックスを更新し、PostgreSQL、Nginxウェブサーバー、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ウェブサーバーの状態を確認してください。あなたのUbuntuシステムでNginxが実行され、エンABLEDされているのがわかります。

sudo systemctl is-enabled nginx
sudo systemctl status nginx

PostgreSQLデータベースとユーザーの設定

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

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

sudo -u postgres psql

次のクエリを実行して、新しいデータベース「mattermostdb」と、新しいユーザー「mmuser」をパスワード「password」で作成してください。

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

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

\du
\l

次の出力では、データベース「mattermostdb」とユーザー「mmuser」がPostgreSQLサーバーで利用可能であることが分かります。

今、PostgreSQLから退出するには「quit」と入力してください。

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

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

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

\conninfo

Mattermostをダウンロードしています

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

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

sudo useradd --system --user-group mattermost

以下の<em>wget</em>コマンドを使用してMattermostのバイナリファイルをダウンロードしてください。その後、<em>tar</em>コマンドを使って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

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

このセクションでは、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

デフォルトのNginx設定ファイル「/etc/nginx/nginx.conf」を「nano」を使って開いてください。

sudo nano /etc/nginx/nginx.conf

<em>include /etc/nginx/conf.d/*.conf;</em> の前に次の行を挿入してください。

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

作業が終わったら、ファイルを保存して終了してください。

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

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ウェブサーバーを再起動します。これで、MattermostのインストールはHTTPSも有効になり、準備完了です。

sudo systemctl start nginx

Mattermostにアクセスする

ウェブブラウザを開いて、あなたのドメイン名 https://mattermost.howtoforge.local/ にアクセスしてください。ここから、Mattermostで初めてのワークスペースを作成することができます。

  • ブラウザで表示をクリックしてMattermostを設定します。
  • アカウントの詳細を入力し、'アカウントを作成'をクリックしてください。
  • 組織名を入力して、'続行'をクリックしてください。
  • 設定を完了するをクリックしてください。

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

結論

おめでとうございます!Ubuntu 24.04サーバーにMattermostのインストールを完了しました。MattermostはデータベースとしてPostgreSQL、リバースプロキシとしてNginxを使用して動作しています。また、Let's EncryptからのSSLでMattermostを保護しました。

関連記事: