Mattermost

提供: ArchWiki
ナビゲーションに移動 検索に移動

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