Mattermostを試してみる

Slackが便利。少し前に耳にしたが…今用意している仕組みと何が違うの?と聞くと、相手がログインしていなくてもメッセージを気軽に出せることかなー、だったので気にしていなかった。

ところが、最近再び社内でクローズアップされてきている。ちょっと調べてみると、色々と便利そうではあるが、始めようとすると費用感をどうにかする必要がある。

ならばMattermostをインストールして試してみよう、ということになった。




まずは何者かを調べてみようと思ったら…色々とまとめてくれている人がいた。

SlackクローンのMattermostを使ってみる – 導入、初期設定編-

で、ここで基礎知識を得て色々とたどってみたところ、

Installing Mattermost on Ubuntu 16.04 LTS

にインストール方法が書いてあることを確認。

■MySQL設定

既に運用中のシステムを使うが、これにはUbuntu16とMySQLが導入済み。

ユーザーとデータベースを作る。

$ mysql -u root -p
mysql> create user 'mmuser'@'localhost' identified by 'mmuser-password';
mysql> create database mattermost;
mysql> grant all privileges on mattermost.* to 'mmuser'@'localhost';
mysql> quit

■Mattermost Server のダウンロードと展開。

ここからダウンロードしてくる。

Download – Mattermost

この日のバージョンは Latest Release: 4.7.2 となっていた。

これを展開する。

これを、ドキュメントとは違っているけど、/usr/shareに移動。

$ tar zxvf mattermost-4.7.2-linux-amd64.tar.gz
$ sudo mv mattermost /usr/share/

ユーザを作って持ち主を変え、グループに書き込み権限を付ける。

$ sudo useradd --system --user-group mattermost
$ sudo chown -R mattermost:mattermost /usr/share/mattermost/
$ sudo chmod -R g+w /usr/share/mattermost/

■Databaseドライバ設定

/usr/share/mattermost/config/config.json を開き、赤文字部分を編集する。
…
    "SqlSettings": {
        "DriverName": "mysql",
        "DataSource": "mmuser:mostest@tcp(dockerhost:3306)/mattermost_test?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",
        "DataSourceReplicas": [],
        "DataSourceSearchReplicas": [],
        "MaxIdleConns": 20,
        "MaxOpenConns": 300,
        "Trace": false,
        "AtRestEncryptKey": "",
        "QueryTimeout": 30
…

mostest はパスワードに、dockerhost は localhost に、mattermostはデータベース名の mattermost に書き換える。

■起動するかどうかを試す

とりあえず起動してみる感じ。これで黄色部分が表示されたらOKらしく、[CTRL]+Cで

$ cd /usr/share/mattermost/
$ sudo -u mattermost ./bin/platform
[2018/03/06 08:02:39 JST] [INFO] Loaded system translations for 'en' from '/usr/share/mattermost/i18n/en.json'
[2018/03/06 08:02:39 JST] [INFO] Server is initializing...
…
[2018/03/06 08:02:42 JST] [INFO] Starting Server...
[2018/03/06 08:02:42 JST] [INFO] Server is listening on [::]:8065
[2018/03/06 08:02:42 JST] [INFO] API version 3 is scheduled for deprecation. Please see https://api.mattermost.com for details.
[2018/03/06 08:02:42 JST] [INFO] Starting 4 websocket hubs
[2018/03/06 08:02:43 JST] [INFO] Starting workers
[2018/03/06 08:02:43 JST] [INFO] Starting schedulers.
^C(ここで表示が止まった。マニュアルに沿って割り込みを入れた)
[2018/03/06 08:09:22 JST] [INFO] Stopping schedulers.
…
[2018/03/06 08:09:22 JST] [INFO] Server stopped

■自動起動するように設定する

systemd の unit ファイルを作るそうで…

$ sudo touch /lib/systemd/system/mattermost.service
$ sudo vi /lib/systemd/system/mattermost.service

中身はこれを貼り付ける。Administrator Guide から変えた場所は赤文字。

[Unit]
Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.service

[Service]
Type=simple
ExecStart=/usr/share/mattermost/bin/platform
Restart=always
RestartSec=10
WorkingDirectory=/usr/share/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=mysql.service

unitを追加、起動、確認、サービスの有効化。

$ sudo systemctl daemon-reload
$ sudo systemctl start mattermost.service
$ sudo systemctl status mattermost.service
 mattermost.service - Mattermost
 Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; vendor preset: enabled)
 Active: active (running) since 火 2018-03-06 08:43:36 JST; 31s ago
…
$ sudo systemctl enable mattermost.service

ということで、サービスの登録までできた模様。

■接続して確かめつつ最初の設定

http://hogeserver:8065

最初に作られるユーザーは system_admin 権限になる模様。

そのため、root@hogeserver.hogeddns.jp なアカウントを作ってみた。

ログインしたら「Go to System Console」で設定開始。

後は追々設定していけばいいだろう。

GENERAL -> Configuration
  Site URL: https://mm.hogeserver.hogeddns.jp

GENERAL -> Localization
  Default Server Language: 日本語
  Default Client Language: 日本語

NOTIFICATIONS -> Email
  Enable Email Notifications: true
  Notification Display Name: Hogeserver master
  Notification From Address: webmaster@hogeserver.hogeddns.jp
  Notification Fotter Mailling Address: このサービスはHogeserverで運用しています。
  SMTP Server: hogeserver.hogeddns.jp <- localhostでもいいかもしれない
  SMTP Server Port: 25 等々

■Apache設定

443ポートでサービス公開しようと思う。

Openmeetingsの設定を参考にして、mmという仮想ホストを作り…

mattermost.conf
#
# Mattermost
#

<VirtualHost *:443>
        ServerName mm.hogeserver.hogeddns.jp
        ServerAdmin webmaster@hogeserver.hogeddns.jp

        ProxyPreserveHost on
        RewriteEngine on
        RewriteCond %{HTTP:Upgrade} =websocket [NC]
        RewriteRule /(.*)           ws://mm.hogeserver.hogeddns.jp:8065/$1 [P,L]
        RewriteCond %{HTTP:Upgrade} !=websocket [NC]
        RewriteRule /(.*)           http://mm.hogeserver.hogeddns.jp:8065/$1 [P,L]
        ProxyPassReverse / http://mm.hogeserver.hogeddns.jp:8065/
        ProxyPassReverse / ws://mm.hogeserver.hogeddns.jp:8065/

        Header edit Content-Security-Policy ws: wss:

        ErrorLog  ${APACHE_LOG_DIR}/mattermost-error.log
        CustomLog ${APACHE_LOG_DIR}/mattermost-access.log combined

        SSLEngine on
        SSLCertificateFile    /etc/ssl/private/any-hogeserver.crt
        SSLCertificateKeyFile /etc/ssl/private/any-hogeserver.key
</VirtualHost>

接続・利用に問題なし、とみられる。


■全文検索対応(部分一致で検索ができるようにする)

入れなくても部分一致検索ができるようなら、何もしなくていいと思う。

できないような気がしたので挑戦。

Mroonga v8.00 documentation >> 2.インストール >> 2.4. Ubuntu

Mattermostの日本語メッセージ全文検索対応まとめ(MySQL編)

$ sudo add-apt-repository -y ppa:groonga/ppa
$ sudo apt update
$ sudo apt-get install -V mysql-server-mroonga

$ mysql mattermost -u mmuser -p
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
…
| Mroonga            | YES     | CJK-ready fulltext search, column store                        | NO           | NO   | NO         |
…
mysql> alter table `Posts` engine = Mroonga;
mysql> quit

$ sudo apt install groonga-tokenizer-mecab
$ mysql mattermost -u mmuser -p
mysql> alter table `Posts` DROP INDEX idx_posts_message_txt;
mysql> alter table `Posts` add fulltext index idx_posts_message_txt (`Message`) comment 'parser "TokenMecab"';

$ sudo apt install mecab mecab-ipadic

/etc/mysql/my.cnf に以下を追加。
[mysqld]
character-set-server=utf8
skip-character-set-client-handshake
default-storage-engine=INNODB
# MeCab Full-Text Parser Plugin Settings
loose-mecab-rc-file=/etc/mecabrc
innodb_ft_min_token_size=1

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8

MySQLの再起動。

$ sudo service mysql restart
$ sudo service mattermost restart

先日、MySQLのバージョンアップが提供された。

導入したところ、Mroongaが外れてしまう問題が発生、インストール用のSQLを流し込んで復活させた。

たしか、mysql_install_db というSQLを流し込んだはず…


使ってみた印象。

文字を書き込めて検索できて、必要ならメールを飛ばせて、画面も簡単に貼り付けられる…ということで、IRCよりかなり便利に使えている。

オンプレでこうしたコミュニケーション手段を持つことができるのはいい、と思うのだった。


★以下はやりかけ、上手く動作させるまでに至らなかった。

■Dockerインストール

いざとなったら会話がしたい。ということで、WebRTCが要求するDockerをインストールする。

DockerはCommunity Edition(CE)とEnterprise Edition(EE)があるようだが、

Get Docker CE for Ubuntu

必要パッケージ、GPGキー、リポジトリを導入。

$ sudo apt update
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  → これは結局全てインストール済みだった
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
pub 4096R/0EBFCD88 2017-02-22
    フィンガー・プリント = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) <docker@docker.com>
sub 4096R/F273FCD8 2017-02-22
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Dockerのインストールとテスト。

$ sudo apt update
$ sudo apt-get install docker-ce
$ sudo docker run hello-world

これで色々と試してみたけど、ビデオ通話ができない。

docker を使って mattermost-webrtc というのを実行しなければならないらしい。

$ sudo docker run --name mattermost-webrtc -p 7088:7088 -p 7089:7089 -p 8188:8188 -p 8189:8189 -d mat
termost/webrtc:latest

この後色々とやってみたのだけれど…知識不足で設定完了せず。

お気軽にどうぞ ~ 投稿に関するご意見・感想・他

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です