Mattermost
- Mattermost はオープンソースで、セルフホスト型の Slack クローンです。
- プロプライエタリな SaaS メッセージングの代替として、Mattermost はチームコミュニケーションをひと処に集めて、全ての情報を検索・閲覧しやすくします。
目次
インストール
mattermostAUR パッケージをインストールしてください。
設定
データベースの設定
Mattermost はデータベースとして PostgreSQL または MySQL/MariaDB のどちらかを必要とします。以下のどちらかのセクションに従って設定してから #Mattermost の設定に進んでください。
PostgreSQL
user$ sudo -i -u postgres postgres$ psql
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
通常ユーザーから新しいユーザーとデータベースが機能することを確認:
psql --host=127.0.0.1 --dbname=mattermost --username=mmuser --password
mattermost=> \q
MySQL/MariaDB
$ mysql -u root -p
CREATE DATABASE mattermost; CREATE USER mmuser IDENTIFIED BY 'mmuser_password'; GRANT ALL ON mattermost.* TO mmuser; exit;
Mattermost の設定
設定ファイルは /etc/webapps/mattermost/config.json
に存在します。
使用しているデータベースにあわせて2箇所変更する必要がある部分があります:
"DriverName": "..."
の設定:
- MySQL の場合 (デフォルト)、
"mysql"
に設定してください。 - PostgreSQL の場合、
"postgres"
に設定してください (postgresql
ではありません)。
接続文字列 "DataSource": "..."
はデータベースとユーザーの設定に合わせてください:
- MySQL の場合、
"mmuser:mmuser_password@unix(/run/mysqld/mysqld.sock)/mattermost?charset=utf8mb4,utf8"
などに設定してください。 - PostgreSQL の場合:
- ネットワークソケットを使用する場合は
"postgres://mmuser:mmuser_password@127.0.0.1:5432/mattermost?sslmode=disable&connect_timeout=10"
などに設定してください。 - Unix ソケットを使用する場合は
"postgres:///mattermost?host=/run/postgresql"
に設定してください。"postgres:"
の後には3つのスラッシュが必要で"mattermost"
はデータベースの名前に、"/run/postgresql"
はソケットが含まれているディレクトリに置き換えてください。
- ネットワークソケットを使用する場合は
Mattermost の起動
パッケージには mattermost.service
が含まれています。通常のデーモンと同じように起動・有効化してください。
テスト
ブラウザを起動して http://localhost:8065/ を開いてください。Mattermost のチャットスタートページが開くはずです。
ヒントとテクニック
リバースウェブプロキシによる TLS/SSL
Mattermost の Android や iOS アプリでは自己署名の TLS/SSL 鍵をサポートしていないため、リバースウェブプロキシを使用することを推奨します。
- Nginx
- Apache
- Lighttpd または lighttpd2-gitAUR
Lighttpd2 による TLS/SSL
lighttpd2-gitAUR を使用して Mattermost のプロキシとして動作させる例:
/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";
証明書は /etc/lighttpd2/certs/lighttpd2.pem
に配置します。proxy "127.0.0.1:8065"
行をバーチャルホストのドメインに変えたい場合は mod_vhost を参照してください。