「Mattermost」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:インターネットアプリケーション en:Mattermost [http://www.mattermost.org/ Mattermost のホームページ] より: :Mattermost はオー...」)
 
(→‎Mattermost のセットアップ: === Plugins === を追加)
 
(4人の利用者による、間の5版が非表示)
1行目: 1行目:
[[Category:インターネットアプリケーション]]
+
[[Category:ウェブアプリケーション]]
 
[[en:Mattermost]]
 
[[en:Mattermost]]
 
[http://www.mattermost.org/ Mattermost のホームページ] より:
 
[http://www.mattermost.org/ Mattermost のホームページ] より:
5行目: 5行目:
 
:Mattermost はオープンソースで、セルフホスト型の Slack クローンです。
 
:Mattermost はオープンソースで、セルフホスト型の Slack クローンです。
 
:プロプライエタリな SaaS メッセージングの代替として、Mattermost はチームコミュニケーションをひと処に集めて、全ての情報を検索・閲覧しやすくします。
 
:プロプライエタリな SaaS メッセージングの代替として、Mattermost はチームコミュニケーションをひと処に集めて、全ての情報を検索・閲覧しやすくします。
  +
  +
この記事では Mattermost サーバーをインストール・設定する方法を説明します。
   
 
== インストール ==
 
== インストール ==
   
  +
Mattermost サーバーをインストールする方法は2つあります:
{{Note|
 
* Mattermost はデータベースバックエンドを必要とします。データベースを同一のマシンで動作させる場合、まず [[MySQL]] か [[PostgreSQL]] をインストールしてください。公式ガイドでは PostgreSQL を使用しているため、このページでも PostgreSQL を使います。
 
* [[Docker]] を使うことで Mattermost を簡単にインストールする方法があります。[http://docs.mattermost.com/install/docker-local-machine.html#arch ワンラインインストール] が強力です。}}
 
   
  +
* [[Docker]] を使用して [[#Docker を使う]]で説明している手順に従う。
{{AUR|mattermost}} パッケージを[[インストール]]してください。
 
  +
* [[AUR]] パッケージを使用して [[#AUR を使う]]で説明している手順に従う。
   
  +
[[Electron]] ベースのデスクトップクライアントは {{aur|mattermost-desktop}} パッケージでインストールできます。
== 設定 ==
 
   
=== データベースの設定 ===
+
=== Docker を使う ===
   
  +
Docker を使用する場合、手動でデータベースサーバーをインストールして Mattermost の依存パッケージを設定する必要がありません。docker イメージには依存パッケージが全てバンドルされているため、作業が楽です。
==== PostgreSQL ====
 
   
  +
そのかわりデータベースバックエンドやウェブサーバーを選択することはできません。docker イメージで提供されているものを使うしかありません。
user$ sudo -i -u postgres
 
postgres$ psql
 
   
  +
* [[Docker#インストール|Docker]] をインストール。
{{bc|1=
 
  +
* ソースをダウンロード:
postgres=# CREATE DATABASE mattermost;
 
  +
:{{bc|<nowiki>
postgres=# CREATE USER mmuser WITH PASSWORD 'mmuser_password';
 
  +
$ git clone https://github.com/mattermost/mattermost-docker.git
postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
 
  +
</nowiki>}}
postgres=# \q
 
  +
* Team エディションの場合、{{ic|docker-compose.yml}} ファイルを編集して次の行をコメントアウト: {{ic|dockerfile: Dockerfile-enterprise}}
postgres$ exit
 
  +
* docker コンテナをビルド・起動:
}}
 
  +
:{{bc|<nowiki>
  +
$ cd mattermost-docker
  +
$ docker-compose build
  +
$ docker-compose up -d
  +
$ docker run --name mattermost-preview -d --publish 8065:8065 mattermost/mattermost-preview
  +
</nowiki>}}
   
  +
* ブラウザで {{ic|http://localhost:8065/}} を開く。
通常ユーザーから新しいユーザーとデータベースが機能することを確認:
 
   
  +
TLS やメールの設定方法やエンタープライズ機能の有効化、Docker Compose によって複数のサーバーノードを使う方法は [https://docs.mattermost.com/install/prod-docker.html 公式ガイド] を参照してください。
psql --host=127.0.0.1 --dbname=mattermost --username=mmuser --password
 
   
  +
[https://hub.docker.com/r/mattermost/ Mattermost 公式の Docker Hub ページ] で提供されている Docker イメージは複数存在します。[https://github.com/mattermost/mattermost-docker Mattermost Docker イメージのリポジトリ] も参照。
{{bc|1=
 
  +
mattermost=> \q
 
  +
=== AUR を使う ===
  +
  +
{{Pkg|mattermost}} パッケージを[[インストール]]してください。または {{aur|mattermost-git}} で開発版をインストールできます。
  +
  +
* インストールすると {{ic|mattermost}} ユーザーとグループが作成されます。
  +
* mattermost のディレクトリは {{ic|/var/lib/mattermost}} に作成され所有者は {{ic|mattermost:root}} となります。
  +
  +
[[#データベースの設定]]に進んでください。
  +
  +
== データベースの設定 ==
  +
  +
Mattermost はデータベースバックエンドを必要とします。データベースを同じマシンで実行する場合、最初に [[MySQL]]/MariaDB または [[PostgreSQL]] をインストールしてください。以下のセクションのどちらかに従ってから [[#Mattermost の設定]]に進んでください。
  +
  +
公式サポートされているのは MySQL ですが、公式ガイドは PostgreSQL を使います。
  +
  +
=== MySQL/MariaDB ===
  +
  +
{{hc|$ mysql -u root -p|
  +
CREATE DATABASE mattermostdb;
  +
CREATE USER mmuser IDENTIFIED BY 'mmuser_password';
  +
GRANT ALL ON mattermostdb.* TO mmuser;
 
}}
 
}}
   
=== Mattermost の設定 ===
+
=== PostgreSQL ===
   
  +
1. [[PostgreSQL#PostgreSQL のインストール|PostgreSQL]] をインストール。
設定ファイルは {{ic|/etc/webapps/mattermost/config.json}} に存在します。
 
   
  +
2. {{ic|postgres}} ユーザーでサーバーに接続:
変更する必要がある部分は2箇所です。
 
   
  +
:{{bc|sudo -u postgres psql}}
PostgreSQL を使用する場合は、以下の文字列を:
 
   
  +
3. Mattermost データベースを作成:
"DriverName": "mysql"
 
   
  +
:{{bc|<nowiki>CREATE DATABASE mattermostdb;
以下のように変更してください:
 
  +
CREATE USER mmuser WITH PASSWORD 'mmuser_password';
  +
GRANT ALL PRIVILEGES ON DATABASE mattermostdb to mmuser;
  +
</nowiki>}}
   
  +
4. {{ic|\q}} で {{ic|psql}} を抜ける。
"DriverName": "postgres"
 
   
  +
{{Note|Mattermost と PostgreSQL が同一マシン上にある場合、Unix ソケットを使用するほうが高速かつセキュアです。}}
{{Note|"postgresql" ではなく "postgres" と記入することに注意してください。}}
 
   
  +
==== TCP ソケットを使う ====
そして {{ic|"DataSource": "..."}} という文字列を実際に使用するデータベースとユーザーの設定に書き換えてください:
 
   
  +
5. [[PostgreSQL#リモートホストから PostgreSQL にアクセスできるように設定]]に書かれているように設定。
"DataSource": "postgres://mmuser:mmuser_password@127.0.0.1:5432/mattermost?sslmode=disable&connect_timeout=10"
 
   
  +
6. 動作を確認:
{{Note|{{ic|mmuser_password}} はユーザーに設定したパスワードに置き換えてください。}}
 
   
  +
:{{bc|1=$ psql --host=''ip_address'' --dbname=mattermostdb --username=mmuser --password}}
== Mattermost の起動 ==
 
   
  +
==== Unix ソケットを使う ====
パッケージには {{ic|mattermost}} サービスが含まれています。通常のデーモンと同じように[[起動]]・[[有効化]]してください。
 
   
  +
5. {{ic|/var/lib/postgres/data/pg_ident.conf}} に以下の行を追加して Unix ユーザーの {{ic|mattermost}} を PostgreSQL ユーザーの {{ic|mmuser}} にマッピング:
== テスト ==
 
   
  +
:{{bc|mattermap mattermost mmuser}}
ブラウザを起動して [http://127.0.0.1:8065/ http://127.0.0.1:8065/] を開いてください。Mattermost のチャットスタートページが開くはずです。
 
   
  +
6. {{ic|/var/lib/postgres/data/pg_hba.conf}} に以下の行を追加して Unix ソケットを設定:
== Tips and tricks ==
 
   
  +
:{{bc|1=local mattermostdb mattermost peer map=mattermap}}
=== リバースウェブプロキシによる TLS/SSL ===
 
   
  +
7. {{ic|postgresql.service}} を[[再起動]]。
Mattermost の [[Android]] や [[iOS のアップグレード|iOS]] アプリでは自己署名の TLS/SSL 鍵をサポートしていないため、リバースウェブプロキシを使用することを推奨します。
 
   
  +
8. 動作を確認:
* [[Nginx]]
 
* [[Apache]]
 
* [[Lighttpd]] または {{AUR|lighttpd2-git}}
 
   
  +
:{{bc|1=$ sudo -u mattermost psql --dbname=mattermostdb --username=mattermost}}
==== Lighttpd2 による TLS/SSL ====
 
   
  +
[[#Mattermost の設定]]に進んでください。
{{AUR|lighttpd2-git}} を使用して Mattermost のプロキシとして動作させる例:
 
   
  +
==== Mattermost の設定 ====
{{hc|/etc/lighttpd2/lighttpd.conf|2=
 
  +
  +
Mattermost は {{ic|/etc/webapps/mattermost/config.json}} で設定します。文字列はクォートで囲う必要があります。
  +
  +
使用するデータベースにあわせて設定する必要があります。
  +
  +
{{ic|DriverName}} の設定: MySQL の場合は {{ic|mysql}}、PostgreSQL の場合は {{ic|postgres}} に設定。
  +
  +
{{ic|DataSource}} の設定:
  +
* MySQL の場合、{{ic|1='''mmuser''':'''mmuser_password'''@unix(/run/mysqld/mysqld.sock)/'''mattermostdb'''?charset=utf8mb4,utf8}} に設定。
  +
* PostgreSQL の場合:
  +
** TCP ソケット: {{ic|1=postgres://'''mmuser''':'''mmuser_password'''@127.0.0.1:5432/'''mattermostdb'''?sslmode=disable&connect_timeout=10}}
  +
** Unix ソケット: {{ic|1=postgres:///'''mattermostdb'''?host=/run/postgresql}} ({{ic|postgres:}} の後にスラッシュが3つ必要です。{{ic|mattermostdb}} はデータベースの名前、{{ic|/run/postgresql}} は Unix ソケットがあるディレクトリです)
  +
  +
{{Note|{{ic|mmuser_password}} はユーザーのパスワードに置き換えてください。}}
  +
  +
{{ic|mattermost.service}} を[[起動]]・[[有効化]]して http://localhost:8065/ を開いてください。
  +
  +
== Mattermost のセットアップ ==
  +
  +
1. Mattermost を開いてチームとユーザーを作成。
  +
  +
2. システムの最初のユーザーには自動的に {{ic|system_admin}} ロールが割り当てられ、システムコンソールにアクセスすることができます。
  +
  +
3. {{ic|town-square}} チャンネルからドロップダウンをクリックして {{ic|System Console}} オプションを選択。
  +
  +
4. {{ic|Notification > Email}} の設定を更新して SMTP メールサービスを設定。以下は AmazonSES を使用する例:
  +
  +
:* {{ic|Send Email Notifications}} を {{ic|true}} に設定
  +
:* {{ic|Require Email Verification}} を {{ic|true}} に設定
  +
:* {{ic|Feedback Name}} を {{ic|No-Reply}} に設定
  +
:* {{ic|Feedback Email}} を {{ic|mattermost@example.com}} に設定
  +
:* {{ic|SMTP Username}} を {{ic|[YOUR_SMTP_USERNAME]}} に設定
  +
:* {{ic|SMTP Password}} を {{ic|[YOUR_SMTP_PASSWORD]}} に設定
  +
:* {{ic|SMTP Server}} を {{ic|email-smtp.us-east-1.amazonaws.com}} に設定
  +
:* {{ic|SMTP Port}} を {{ic|465}} に設定
  +
:* {{ic|Connection Security}} を {{ic|TLS}} に設定
  +
:* 設定を保存
  +
  +
5. {{ic|File > Storage}} から {{ic|Local Directory Location}} の設定を {{ic|./data/}} から {{ic|/mattermost/data}} に変更。
  +
  +
6. {{ic|General > Logging}} から {{ic|Log to The Console}} を {{ic|false}} に設定。
  +
  +
7. 他の設定も自由に変更してください。
  +
  +
8. {{ic|mattermost.service}} を[[再起動]]。
  +
  +
=== Plugins ===
  +
  +
Plugins are enabled by default, but require access to the plugins directory which needs to be created with the correct owner:
  +
{{bc|<nowiki>
  +
$ mkdir /usr/share/webapps/mattermost/client/plugins
  +
$ chown mattermost:mattermost /usr/share/webapps/mattermost/client/plugins
  +
</nowiki>}}
  +
  +
== ヒントとテクニック ==
  +
  +
=== リバースプロキシによる HTTPS ===
  +
  +
自己署名 TLS 証明書をサポートしていない Android や iOS アプリから安全に Mattermost サーバーにアクセスしたい場合、リバースウェブプロキシを設定する方法があります [https://docs.mattermost.com/install/config-proxy-nginx.html?highlight=proxy#configuring-nginx-as-a-proxy-for-mattermost-server]。
  +
  +
プロキシの主な利点:
  +
  +
* SSL ターミネーション
  +
* HTTP から HTTPS にリダイレクト
  +
* ポート 80 を 8065 にマッピング
  +
* 標準的なリクエストログ
  +
  +
大抵のウェブサーバーでプロキシを使えます。
  +
  +
==== nginx ====
  +
  +
1. [[nginx]] をインストール・設定 ({{Pkg|nginx-mainline}} を推奨)。
  +
  +
2. ドメイン名 (例: {{ic|mattermost.example.com}}) からサーバーへのアクセスを設定。
  +
  +
3. インターネットから Mattermost サーバーへのプロキシ接続を nginx に設定。nginx の設定ファイル {{ic|/etc/nginx/sites-available/mattermost}} を作成・編集:
  +
  +
:{{bc|<nowiki>
  +
upstream backend {
  +
server 127.0.0.1:8065;
  +
}
  +
  +
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.example.com;
  +
  +
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;
  +
proxy_read_timeout 600s;
  +
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_pass http://backend;
  +
}
  +
}
  +
</nowiki>}}
  +
  +
4. mattermost サーバーを有効化:
  +
  +
:{{bc|<nowiki>
  +
# mkdir /etc/nginx/servers-enabled
  +
# ln -s /etc/nginx/servers-available/mattermost /etc/nginx/server-enabled/mattermost
  +
</nowiki>}}
  +
  +
5. {{ic|nginx.service}} を[[再起動]]。
  +
  +
6. プロキシ経由で Mattermost にアクセスできることを確認:
  +
  +
:{{bc|curl http://localhost/}}
  +
  +
: {{ic|Mattermost}} というタイトルのページが表示されるはずです。
  +
  +
7. [[Let’s Encrypt]] を設定。
  +
  +
==== Lighttpd2 ====
  +
  +
Mattermost のプロキシとして {{AUR|lighttpd2-git}} を使用する設定例では証明書が {{ic|/etc/lighttpd2/certs/lighttpd2.pem}} にあることが前提となっています。
  +
  +
プロキシをバーチャルホストに転送したい場合は [http://doc.lighttpd.net/lighttpd2/mod_vhost.html mod_vhost] を参照。
  +
  +
{{hc|/etc/lighttpd2/lighttpd.conf|<nowiki>
 
setup {
 
setup {
   
122行目: 298行目:
   
 
proxy "127.0.0.1:8065";
 
proxy "127.0.0.1:8065";
  +
</nowiki>}}
}}
 
  +
  +
=== 翻訳とプルリクエストのテスト ===
   
  +
非公式スクリプト [https://github.com/wget/mattermost-prepare-pkgbuild mattermost-prepare-pkgbuild] を使うことで翻訳とプルリクエストをテストできます。
証明書は {{ic|/etc/lighttpd2/certs/lighttpd2.pem}} に配置します。{{ic|proxy "127.0.0.1:8065"}} 行をバーチャルホストのドメインに変えたい場合は [http://doc.lighttpd.net/lighttpd2/mod_vhost.html mod_vhost] を参照してください。
 

2021年7月25日 (日) 17:49時点における最新版

Mattermost のホームページ より:

Mattermost はオープンソースで、セルフホスト型の Slack クローンです。
プロプライエタリな SaaS メッセージングの代替として、Mattermost はチームコミュニケーションをひと処に集めて、全ての情報を検索・閲覧しやすくします。

この記事では Mattermost サーバーをインストール・設定する方法を説明します。

インストール

Mattermost サーバーをインストールする方法は2つあります:

Electron ベースのデスクトップクライアントは mattermost-desktopAUR パッケージでインストールできます。

Docker を使う

Docker を使用する場合、手動でデータベースサーバーをインストールして Mattermost の依存パッケージを設定する必要がありません。docker イメージには依存パッケージが全てバンドルされているため、作業が楽です。

そのかわりデータベースバックエンドやウェブサーバーを選択することはできません。docker イメージで提供されているものを使うしかありません。

  • Docker をインストール。
  • ソースをダウンロード:
$ git clone https://github.com/mattermost/mattermost-docker.git 
  • Team エディションの場合、docker-compose.yml ファイルを編集して次の行をコメントアウト: dockerfile: Dockerfile-enterprise
  • docker コンテナをビルド・起動:
$ cd mattermost-docker
$ docker-compose build
$ docker-compose up -d
$ docker run --name mattermost-preview -d --publish 8065:8065 mattermost/mattermost-preview

TLS やメールの設定方法やエンタープライズ機能の有効化、Docker Compose によって複数のサーバーノードを使う方法は 公式ガイド を参照してください。

Mattermost 公式の Docker Hub ページ で提供されている Docker イメージは複数存在します。Mattermost Docker イメージのリポジトリ も参照。

AUR を使う

mattermost パッケージをインストールしてください。または mattermost-gitAUR で開発版をインストールできます。

  • インストールすると mattermost ユーザーとグループが作成されます。
  • mattermost のディレクトリは /var/lib/mattermost に作成され所有者は mattermost:root となります。

#データベースの設定に進んでください。

データベースの設定

Mattermost はデータベースバックエンドを必要とします。データベースを同じマシンで実行する場合、最初に MySQL/MariaDB または PostgreSQL をインストールしてください。以下のセクションのどちらかに従ってから #Mattermost の設定に進んでください。

公式サポートされているのは MySQL ですが、公式ガイドは PostgreSQL を使います。

MySQL/MariaDB

$ mysql -u root -p
CREATE DATABASE mattermostdb;
CREATE USER mmuser IDENTIFIED BY 'mmuser_password';
GRANT ALL ON mattermostdb.* TO mmuser;

PostgreSQL

1. PostgreSQL をインストール。

2. postgres ユーザーでサーバーに接続:

sudo -u postgres psql

3. Mattermost データベースを作成:

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

4. \qpsql を抜ける。

ノート: Mattermost と PostgreSQL が同一マシン上にある場合、Unix ソケットを使用するほうが高速かつセキュアです。

TCP ソケットを使う

5. PostgreSQL#リモートホストから PostgreSQL にアクセスできるように設定に書かれているように設定。

6. 動作を確認:

$ psql --host=ip_address --dbname=mattermostdb --username=mmuser --password

Unix ソケットを使う

5. /var/lib/postgres/data/pg_ident.conf に以下の行を追加して Unix ユーザーの mattermost を PostgreSQL ユーザーの mmuser にマッピング:

mattermap    mattermost    mmuser

6. /var/lib/postgres/data/pg_hba.conf に以下の行を追加して Unix ソケットを設定:

local    mattermostdb    mattermost    peer    map=mattermap

7. postgresql.service再起動

8. 動作を確認:

$ sudo -u mattermost psql --dbname=mattermostdb --username=mattermost

#Mattermost の設定に進んでください。

Mattermost の設定

Mattermost は /etc/webapps/mattermost/config.json で設定します。文字列はクォートで囲う必要があります。

使用するデータベースにあわせて設定する必要があります。

DriverName の設定: MySQL の場合は mysql、PostgreSQL の場合は postgres に設定。

DataSource の設定:

  • MySQL の場合、mmuser:mmuser_password@unix(/run/mysqld/mysqld.sock)/mattermostdb?charset=utf8mb4,utf8 に設定。
  • PostgreSQL の場合:
    • TCP ソケット: postgres://mmuser:mmuser_password@127.0.0.1:5432/mattermostdb?sslmode=disable&connect_timeout=10
    • Unix ソケット: postgres:///mattermostdb?host=/run/postgresql (postgres: の後にスラッシュが3つ必要です。mattermostdb はデータベースの名前、/run/postgresql は Unix ソケットがあるディレクトリです)
ノート: mmuser_password はユーザーのパスワードに置き換えてください。

mattermost.service起動有効化して http://localhost:8065/ を開いてください。

Mattermost のセットアップ

1. Mattermost を開いてチームとユーザーを作成。

2. システムの最初のユーザーには自動的に system_admin ロールが割り当てられ、システムコンソールにアクセスすることができます。

3. town-square チャンネルからドロップダウンをクリックして System Console オプションを選択。

4. Notification > Email の設定を更新して SMTP メールサービスを設定。以下は AmazonSES を使用する例:

  • Send Email Notificationstrue に設定
  • Require Email Verificationtrue に設定
  • Feedback NameNo-Reply に設定
  • Feedback Emailmattermost@example.com に設定
  • SMTP Username[YOUR_SMTP_USERNAME] に設定
  • SMTP Password[YOUR_SMTP_PASSWORD] に設定
  • SMTP Serveremail-smtp.us-east-1.amazonaws.com に設定
  • SMTP Port465 に設定
  • Connection SecurityTLS に設定
  • 設定を保存

5. File > Storage から Local Directory Location の設定を ./data/ から /mattermost/data に変更。

6. General > Logging から Log to The Consolefalse に設定。

7. 他の設定も自由に変更してください。

8. mattermost.service再起動

Plugins

Plugins are enabled by default, but require access to the plugins directory which needs to be created with the correct owner:

$ mkdir /usr/share/webapps/mattermost/client/plugins
$ chown mattermost:mattermost /usr/share/webapps/mattermost/client/plugins

ヒントとテクニック

リバースプロキシによる HTTPS

自己署名 TLS 証明書をサポートしていない Android や iOS アプリから安全に Mattermost サーバーにアクセスしたい場合、リバースウェブプロキシを設定する方法があります [1]

プロキシの主な利点:

  • SSL ターミネーション
  • HTTP から HTTPS にリダイレクト
  • ポート 80 を 8065 にマッピング
  • 標準的なリクエストログ

大抵のウェブサーバーでプロキシを使えます。

nginx

1. nginx をインストール・設定 (nginx-mainline を推奨)。

2. ドメイン名 (例: mattermost.example.com) からサーバーへのアクセスを設定。

3. インターネットから Mattermost サーバーへのプロキシ接続を nginx に設定。nginx の設定ファイル /etc/nginx/sites-available/mattermost を作成・編集:

upstream backend {
    server 127.0.0.1:8065;
}

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.example.com;

    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;
        proxy_read_timeout 600s;
        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_pass http://backend;
    }
}

4. mattermost サーバーを有効化:

# mkdir /etc/nginx/servers-enabled
# ln -s /etc/nginx/servers-available/mattermost /etc/nginx/server-enabled/mattermost

5. nginx.service再起動

6. プロキシ経由で Mattermost にアクセスできることを確認:

curl http://localhost/
Mattermost というタイトルのページが表示されるはずです。

7. Let’s Encrypt を設定。

Lighttpd2

Mattermost のプロキシとして lighttpd2-gitAUR を使用する設定例では証明書が /etc/lighttpd2/certs/lighttpd2.pem にあることが前提となっています。

プロキシをバーチャルホストに転送したい場合は mod_vhost を参照。

/etc/lighttpd2/lighttpd.conf
setup {

    module_load [
        "mod_accesslog",
        "mod_proxy",
        "mod_openssl"
    ];

    openssl [
        "listen" => "0.0.0.0:443",
        "listen" => "[::]:443",
        "pemfile" => "/etc/lighttpd2/certs/lighttpd2.pem",
        "options" => ["ALL", "NO_TICKET"],
        "verify" => true,
        "verify-any" => true,
        "verify-depth" => 9
    ];

    listen "0.0.0.0:80";
    listen "[::]:80";

    log ["debug" => "", default => "/var/log/lighttpd2/error.log"];
    accesslog "/var/log/lighttpd2/access.log";
    accesslog.format "%h %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}\"";

    static.exlude_extensions [ ".php", ".pl", ".fcgi", "~", ".inc" ];

}

openssl.setenv "client-cert";
keepalive.timeout 360;

docroot "/srv/http";
index [ "index.php", "index.html", "index.htm" ];

include "/etc/lighttpd2/mimetypes.conf";

proxy "127.0.0.1:8065";

翻訳とプルリクエストのテスト

非公式スクリプト mattermost-prepare-pkgbuild を使うことで翻訳とプルリクエストをテストできます。