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)があるようだが、
必要パッケージ、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
この後色々とやってみたのだけれど…知識不足で設定完了せず。