💻

Install Mattermost 5.7.0 on CentOS 7

2020/10/23に公開

Mattermost

この記事について

本記事は、CentOS 7.x への Mattermost のインストールについて記載しています。
Production Docker でのインストールではない のでご了承ください。

※Production Docker での Mattermost インストールも今後やる予定です。

対象読者

  • 社内のコミュニケーションツールの導入を検討している方
  • 無料版 Slack の制限に困っている方
  • お金かけずに Slack 製品版と同じようなことをしたい方

Mattermost とは

Mattermost(マターモスト/マッターモスト)とは、Mattermost, Inc. によって提供されている
OSS(オープンソース)セルフホスティング式チャットサービス です。
世間ではよく**「Slack のクローン」**とか「Slack風チャットツール」と見做されてます。

※いわゆる、GitHub でいうところの GitLab みたいなもの
※GitLab Mattermost は、Mattermost のディストリビューション

エディション

下記の、2つのエディションが提供されています。有償サポートを契約したい場合は
Enterprise Edition のライセンスを購入することになります。
※本稿では、無償版を使用します。
Mattermost Server ライセンス情報 (2019/1/24 現在)

  • 無償版:Open Source Team Edition (MIT License)
  • 商用版:Enterprise Edition

無償版のライセンスについては、

  • サーバーサイド:MIT License
  • そのほか:Apache License 2.0

で提供されています。

インストール

基本的に、公式ガイド に記載されている手順通りに進めます。

環境

  • OS:CentOS 7.5
  • DB:MySQL 8.0
  • Mattermost:5.7.0

OS の最新化

最新のセキュリティパッチがないか確認しておきます。

# yum update
# yum upgrade

MySQL のインストール

MySQL 8.0 のインストールについては、こちら を参照してください。

MySQL 8.0 のインストールが終了したら、Mattermost のための設定を行います。

データベースの作成

mysql> CREATE DATABASE mattermost;

ユーザーの作成

mmuser のパスワードは任意で変更してください。

mysql> CREATE USER 'mmuser'@'%' IDENTIFIED BY 'Passw0rd';
mysql> GRANT ALL PRIVILEGES ON mattermost.* TO 'mmuser'@'%';

Mattermost Server のインストール

※最新バージョン情報については、公式サイト を確認してください。

# wget https://releases.mattermost.com/5.7.0/mattermost-team-5.7.0-linux-amd64.tar.gz
# tar -xvzf mattermost-team-5.7.0-linux-amd64.tar.gz

# mv mattermost /opt
# mkdir /opt/mattermost/data
# useradd --system --user-group mattermost
# chown -R mattermost:mattermost /opt/mattermost
# chmod -R g+w /opt/mattermost

データベースドライバの設定

Mattermost が使用するリポジトリデータベースの設定を行います。
/opt/mattermost/config/config.json ファイルの SqlSettings -> DataSource の内容を変更します。

  • <mmuser-password>:mmuser のパスワード
  • <host-name-or-IP>:OS のホスト名、もしくはIPアドレス
  • <database>:作成したデータベース名(mattermost)
mmuser:<mmuser-password>@tcp(<host-name-or-IP>:3306)/<database>?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s
/opt/mattermost/config/config.json (例)
"SqlSettings": {
  "DriverName": "mysql",                                                                                                  
  "DataSource": "mmuser:Passw0rd@tcp(127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
  "DataSourceReplicas": [],
  "DataSourceSearchReplicas": [],
  "MaxIdleConns": 20,
  "ConnMaxLifetimeMilliseconds": 3600000,
  "MaxOpenConns": 300,
  "Trace": false,
  "AtRestEncryptKey": "",
  "QueryTimeout": 30
},

Mattermost Server の起動

Mattermost Server が正常に起動するか確認します。

# cd /opt/mattermost/
# sudo -u mattermost ./bin/mattermost

コマンド実行後、以下のようなログが出力されます。
"Server is listening on [::]:8065" というメッセージが表示されたら、Ctrl + C キーで
サーバーを停止します。

{"level":"info","ts":1548264846.4320586,"caller":"utils/i18n.go:78","msg":"Loaded system translations for 'en' from '/opt/mattermost/i18n/en.json'"}
{"level":"info","ts":1548264846.432194,"caller":"app/app.go:143","msg":"Server is initializing..."}
{"level":"info","ts":1548264846.4383147,"caller":"sqlstore/supplier.go:207","msg":"Pinging SQL master database"}
{"level":"info","ts":1548264846.8107371,"caller":"sqlstore/upgrade.go:105","msg":"The database schema has been set to version 5.7.0"}
{"level":"error","ts":1548264848.1348784,"caller":"commands/server.go:79","msg":"SiteURL must be set. Some features will operate incorrectly if the SiteURL is not set. See documentation for details: http://about.mattermost.com/default-site-url"}
{"level":"info","ts":1548264848.1349447,"caller":"commands/server.go:82","msg":"Current version is 5.7.0 (5.7.0/Wed Jan 16 05:14:31 UTC 2019/7e5fda43bda67cd061e527b64046f241c2d6cc32/none)"}
{"level":"info","ts":1548264848.1349573,"caller":"commands/server.go:83","msg":"Enterprise Enabled: false"}
{"level":"info","ts":1548264848.1349666,"caller":"commands/server.go:84","msg":"Current working directory is /opt/mattermost"}
{"level":"info","ts":1548264848.1350036,"caller":"commands/server.go:85","msg":"Loaded config file from /opt/mattermost/config/config.json"}
{"level":"info","ts":1548264848.1352186,"caller":"filesstore/localstore.go:33","msg":"Able to write files to local storage."}
{"level":"info","ts":1548264848.135848,"caller":"app/migrations.go:25","msg":"Migrating roles to database."}
{"level":"info","ts":1548264848.1536536,"caller":"sqlstore/post_store.go:1286","msg":"Post.Message supports at most 16383 characters (65535 bytes)"}
{"level":"info","ts":1548264848.1853576,"caller":"app/migrations.go:101","msg":"Migrating emojis config to database."}
{"level":"info","ts":1548264848.1905212,"caller":"app/plugin.go:130","msg":"Starting up plugins"}
{"level":"info","ts":1548264849.9646518,"caller":"app/server.go:166","msg":"Starting Server..."}
{"level":"info","ts":1548264849.9655108,"caller":"app/server.go:226","msg":"Server is listening on [::]:8065"}
{"level":"info","ts":1548264849.9720645,"caller":"app/web_hub.go:75","msg":"Starting 4 websocket hubs"}
{"level":"info","ts":1548264850.0070567,"caller":"jobs/workers.go:68","msg":"Starting workers"}
{"level":"info","ts":1548264850.0080998,"caller":"jobs/schedulers.go:72","msg":"Starting schedulers."}

サービス登録

サーバー起動時に、Mattermost が自動起動するための設定を行います。

/etc/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=syslog.target network.target mysqld.service

[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
ExecStart=/opt/mattermost/bin/mattermost
PIDFile=/var/spool/mattermost/pid/master.pid
TimeoutStartSec=3600
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target
# chmod 664 /etc/systemd/system/mattermost.service
# systemctl daemon-reload
# systemctl enable mattermost
# systemctl start mattermost

ファイアウォールの設定

Mattermost を使用するためのファイアウォール設定を行います。

# firewall-cmd --zone=public --add-service=http --permanent
# firewall-cmd --zone=public --add-service=https --permanent
# firewall-cmd --zone=public --add-port=8065/tcp --permanent
# firewall-cmd --reload

アクセス確認

curlコマンドを実行して、HTML情報が取得できるか確認します。

  • <host-name-or-IP>:OS のホスト名、もしくはIPアドレス
# curl http://<host-name-or-IP>:8065/

HTML情報を正常に取得できた場合は、ブラウザから上記URLにアクセスし
初期セットアップを行ってください。

関連リンク

参考情報

Discussion