「Mattermost」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「Tips and tricks」を「ヒントとテクニック」に置換)
(同期)
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]] をインストールしてください。
 
* [[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 イメージには依存パッケージが全てバンドルされているため、作業が楽です。
Mattermost はデータベースとして [[PostgreSQL]] または [[MySQL]]/MariaDB のどちらかを必要とします。以下のどちらかのセクションに従って設定してから [[#Mattermost の設定]]に進んでください。
 
   
  +
そのかわりデータベースバックエンドやウェブサーバーを選択することはできません。docker イメージで提供されているものを使うしかありません。
==== PostgreSQL ====
 
   
  +
* [[Docker#インストール|Docker]] をインストール。
user$ sudo -i -u postgres
 
  +
* ソースをダウンロード:
postgres$ psql
 
  +
:{{bc|<nowiki>
  +
$ git clone https://github.com/mattermost/mattermost-docker.git
  +
</nowiki>}}
  +
* Team エディションの場合、{{ic|docker-compose.yml}} ファイルを編集して次の行をコメントアウト: {{ic|dockerfile: Dockerfile-enterprise}}
  +
* 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/}} を開く。
{{bc|1=
 
postgres=# CREATE DATABASE mattermost;
 
postgres=# CREATE USER mmuser WITH PASSWORD 'mmuser_password';
 
postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost TO mmuser;
 
postgres=# \q
 
postgres$ exit
 
}}
 
   
  +
TLS やメールの設定方法やエンタープライズ機能の有効化、Docker Compose によって複数のサーバーノードを使う方法は [https://docs.mattermost.com/install/prod-docker.html 公式ガイド] を参照してください。
通常ユーザーから新しいユーザーとデータベースが機能することを確認:
 
   
  +
[https://hub.docker.com/r/mattermost/ Mattermost 公式の Docker Hub ページ] で提供されている Docker イメージは複数存在します。[https://github.com/mattermost/mattermost-docker Mattermost Docker イメージのリポジトリ] も参照。
psql --host=127.0.0.1 --dbname=mattermost --username=mmuser --password
 
   
  +
=== AUR を使う ===
{{bc|1=
 
  +
mattermost=> \q
 
  +
{{aur|mattermost}} パッケージを[[インストール]]してください。または {{aur|mattermost-git}} で開発版をインストールできます。
}}
 
  +
  +
* インストールすると {{ic|mattermost}} ユーザーとグループが作成されます。
  +
* mattermost のディレクトリは {{ic|/var/lib/mattermost}} に作成され所有者は {{ic|mattermost:root}} となります。
  +
  +
[[#データベースの設定]]に進んでください。
  +
  +
==== データベースの設定 ====
  +
  +
Mattermost はデータベースバックエンドを必要とします。データベースを同じマシンで実行する場合、最初に [[MySQL]]/MariaDB または [[PostgreSQL]] をインストールしてください。以下のセクションのどちらかに従ってから [[#Mattermost の設定]]に進んでください。
  +
  +
公式サポートされているのは MySQL ですが、公式ガイドは PostgreSQL を使います。
   
==== MySQL/MariaDB ====
+
===== MySQL/MariaDB =====
   
 
{{hc|$ mysql -u root -p|
 
{{hc|$ mysql -u root -p|
CREATE DATABASE mattermost;
+
CREATE DATABASE mattermostdb;
 
CREATE USER mmuser IDENTIFIED BY 'mmuser_password';
 
CREATE USER mmuser IDENTIFIED BY 'mmuser_password';
GRANT ALL ON mattermost.* TO mmuser;
+
GRANT ALL ON mattermostdb.* TO mmuser;
exit;
 
 
}}
 
}}
   
=== Mattermost の設定 ===
+
===== PostgreSQL =====
   
  +
1. [[PostgreSQL#PostgreSQL のインストール|PostgreSQL]] をインストール。
設定ファイルは {{ic|/etc/webapps/mattermost/config.json}} に存在します。
 
   
  +
2. {{ic|postgres}} ユーザーでサーバーに接続:
使用しているデータベースにあわせて2箇所変更する必要がある部分があります:
 
   
  +
:{{bc|sudo -u postgres psql}}
{{ic|"DriverName": "..."}} の設定:
 
* MySQL の場合 (デフォルト)、{{ic|"mysql"}} に設定してください。
 
* PostgreSQL の場合、{{ic|"postgres"}} に設定してください ({{ic|postgre'''sql'''}} ではありません)。
 
   
  +
3. Mattermost データベースを作成:
接続文字列 {{ic|"DataSource": "..."}} はデータベースとユーザーの設定に合わせてください:
 
  +
* MySQL の場合、{{ic|1="'''mmuser''':'''mmuser_password'''@unix(/run/mysqld/mysqld.sock)/'''mattermost'''?charset=utf8mb4,utf8"}} などに設定してください。
 
  +
:{{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}} を抜ける。
  +
  +
{{Note|Mattermost と PostgreSQL が同一マシン上にある場合、Unix ソケットを使用するほうが高速かつセキュアです。}}
  +
  +
====== TCP ソケットを使う ======
  +
  +
5. [[PostgreSQL#リモートホストから PostgreSQL にアクセスできるように設定]]に書かれているように設定。
  +
  +
6. 動作を確認:
  +
  +
:{{bc|1=$ psql --host=''ip_address'' --dbname=mattermostdb --username=mmuser --password}}
  +
  +
====== Unix ソケットを使う ======
  +
  +
5. {{ic|/var/lib/postgres/data/pg_ident.conf}} に以下の行を追加して Unix ユーザーの {{ic|mattermost}} を PostgreSQL ユーザーの {{ic|mmuser}} にマッピング:
  +
  +
:{{bc|mattermap mattermost mmuser}}
  +
  +
6. {{ic|/var/lib/postgres/data/pg_hba.conf}} に以下の行を追加して Unix ソケットを設定:
  +
  +
:{{bc|1=local mattermostdb mattermost peer map=mattermap}}
  +
  +
7. {{ic|postgresql.service}} を[[再起動]]。
  +
  +
8. 動作を確認:
  +
  +
:{{bc|1=$ sudo -u mattermost psql --dbname=mattermostdb --username=mattermost}}
  +
  +
[[#Mattermost の設定]]に進んでください。
  +
  +
==== Mattermost の設定 ====
  +
  +
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 の場合:
 
* PostgreSQL の場合:
** ネットワークソケットを使用する場合は {{ic|1="postgres://'''mmuser''':'''mmuser_password'''@127.0.0.1:5432/'''mattermost'''?sslmode=disable&connect_timeout=10"}} などに設定してください。
+
** TCP ソケット: {{ic|1=postgres://'''mmuser''':'''mmuser_password'''@127.0.0.1:5432/'''mattermostdb'''?sslmode=disable&connect_timeout=10}}
** Unix ソケットを使用する場合は {{ic|1="postgres:///mattermost?host=/run/postgresql"}} に設定してください。{{ic|1="postgres:"}} の後には3つのスラッシュが必要で {{ic|1="mattermost"}} はデータベースの名前、{{ic|1="/run/postgresql"}} はソケットが含まれているディレクトリに置き換えてください。
+
** Unix ソケット: {{ic|1=postgres:///'''mattermostdb'''?host=/run/postgresql}} ({{ic|postgres:}} の後にスラッシュが3つ必要です。{{ic|mattermostdb}} はデータベースの名前、{{ic|/run/postgresql}} は Unix ソケットがるディレクトリです)
   
{{Note|{{ic|mmuser_password}} はユーザーに設定したパスワードに置き換えてください。}}
+
{{Note|{{ic|mmuser_password}} はユーザーパスワードに置き換えてください。}}
   
  +
{{ic|mattermost.service}} を[[起動]]・[[有効化]]して http://localhost:8065/ を開いてください。
== Mattermost の起動 ==
 
   
  +
== Mattermost のセットアップ ==
パッケージには {{ic|mattermost.service}} が含まれています。通常のデーモンと同じように[[起動]]・[[有効化]]してください。
 
   
  +
1. Mattermost を開いてチームとユーザーを作成。
== テスト ==
 
   
  +
2. システムの最初のユーザーには自動的に {{ic|system_admin}} ロールが割り当てられ、システムコンソールにアクセスすることができます。
ブラウザを起動して http://localhost:8065/ を開いてください。Mattermost のチャットスタートページが開くはずです。
 
  +
  +
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}} を[[再起動]]。
   
 
== ヒントとテクニック ==
 
== ヒントとテクニック ==
   
=== リバースウェブプロキシによる TLS/SSL ===
+
=== リバースプロキシによる 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]] を設定。
Mattermost の [[Android]] や [[iOS のアップグレード|iOS]] アプリでは自己署名の TLS/SSL 鍵をサポートしていないため、リバースウェブプロキシを使用することを推奨します。
 
   
  +
==== Lighttpd2 ====
* [[Nginx]]
 
* [[Apache]]
 
* [[Lighttpd]] または {{AUR|lighttpd2-git}}
 
   
  +
Mattermost のプロキシとして {{AUR|lighttpd2-git}} を使用する設定例では証明書が {{ic|/etc/lighttpd2/certs/lighttpd2.pem}} にあることが前提となっています。
==== Lighttpd2 による TLS/SSL ====
 
   
  +
プロキシをバーチャルホストに転送したい場合は [http://doc.lighttpd.net/lighttpd2/mod_vhost.html mod_vhost] を参照。
{{AUR|lighttpd2-git}} を使用して Mattermost のプロキシとして動作させる例:
 
   
{{hc|/etc/lighttpd2/lighttpd.conf|2=
+
{{hc|/etc/lighttpd2/lighttpd.conf|<nowiki>
 
setup {
 
setup {
   
129行目: 290行目:
   
 
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] を参照してください。
 

2017年12月23日 (土) 23:29時点における版

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 を使う

mattermostAUR パッケージをインストールしてください。または 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再起動

ヒントとテクニック

リバースプロキシによる 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 を使うことで翻訳とプルリクエストをテストできます。