Mattermost

From ArchWiki
Jump to navigation Jump to search

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 を使うことで翻訳とプルリクエストをテストできます。