チャットルーム的なものが欲しかったので、Rocket.chatと悩んだ末、MySQLが使えるMattermostにしました。
一応公式にもマニュアルはありますが、結構詰まった(丸1日かけてしまった…)のでメモ書きを残しておきます。
下準備
Goをインストール
MySQLのアップデート
Ver.5.6が必要。
ちなみにバージョンが古いと起動時に
Failed to create index Error 1214: The used table type doesn't support FULLTEXT indexes
というエラーが出ます。
通常の方法だとまだ5.5.55しか入らないので、
http://www.debiantutorials.com/install-mysql-server-5-6-debian-7-8/
を参考に5.7.18までアップデートした。
E: Sub-process /usr/bin/dpkg returned an error code (1)
というエラーが出たが、とりあえず入ったみたいなので放置。
Mattermostのインストール
基本的に取ってきて置くだけ。公式マニュアル
https://docs.mattermost.com/install/prod-debian.html
の「Set up Mattermost Server」のセクションを読む。
~~ディレクトリ全体を実行用ユーザーの所有にしておく。~~結局うまく動かなくてsudoで起動したので要らないかも。
Apache
サブドメインと仮想サーバーなどを用意しておく。
ヴァーチャルホストの設定ファイルの書き方は以下が参考になりました。
エラーメッセージをメモし忘れましたが、ProxyのところでSyntaxエラーが出たら
sudo a2enmod proxy_http
MySQLの設定とデータベースへの接続
データベースとユーザーを作っておく。
CREATE DATABASE データベース名;
GRANT ALL PRIVILEGES ON データベース名.* TO 'MySQLユーザー名'@'localhost' IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
Mattermost設定ファイルは /opt/mattermost/config/config.json
"DriverName": "mysql"
はそのまま。
"DataSource": "MySQLユーザー名:パスワード@tcp(localhost:3306)/データベース名?charset=utf8mb4,utf8",
ポートや書き方を間違えると
- default addr for network 'localhost' unknown
- Failed to ping DB err:dial tcp [::1]:8065: getsockopt: connection refused
- packets.go:33: unexpected EOF
Failed to ping DB err:driver: bad connection
等のエラーが出ます。とりあえず3306にしたら接続できました。
他にもURLの設定など、
https://docs.mattermost.com/administration/config-settings.html
を見ながらお好みで。
ポートを開ける
tcp:8065 を開ける。GCEの場合はコンソールでの設定も忘れない。
起動
sudo /opt/mattermost/bin/platform &
バックグラウンド起動にしないとプロセス切ったら落ちます。
上のコマンドで動かないときは以下を確認。
- /opt/mattermost/logs/mattermost.log の所有者がmattermostになっているか
- 今作業しているユーザーがmattermostグループに入っているか
管理画面からの設定
config.jsonを書き換えなくてもコンソールから出来るようになる。
サーバーの再起動が必要なものもあるが、その旨書いておいてくれる親切仕様。
メール認証をしたい場合、GCEの場合はMailgunなどを経由してメールを送信することになる。ポートはこの時自分で決めた物を使うこと。
しかもTLSだとうまくいかなかった。PLAINで接続できた。
未解決エラー
[EROR] Unable to setup forwarding
このエラーは出ていても動く。
https://github.com/mattermost/platform/blob/master/app/server.go
の172行目。とりあえず"Forward80To443": false
に戻したら消えた。