slackクローンのOSS mattermost をdockerで立てるメモ。
mattermostはslackを使えないケース(オフライン環境)でのchat opsに重宝する。
参考
https://docs.mattermost.com/install/docker-local-machine.html
https://docs.mattermost.com/install/prod-docker.html
https://github.com/mattermost/mattermost-docker-preview
mattermostをdockerで立てる方法は2つある。
- docker-composeを使った、multi-node production版
https://github.com/mattermost/mattermost-docker - docker runコマンド一発で起動できるLocal Machine Setup(Preview Mode)版
https://github.com/mattermost/mattermost-docker-preview
とりあえず使ってみる感じなので後者で。
#インストール
githubで公開されてる公式イメージのdockerfileはこんな感じ。
dbはmysql。
# Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
# See License.txt for license information.
FROM mysql:5.7
# Install ca-certificates to support TLS of Mattermost v3.5
RUN apt-get update && apt-get install -y ca-certificates
#
# Configure SQL
#
ENV MYSQL_ROOT_PASSWORD=mostest
ENV MYSQL_USER=mmuser
ENV MYSQL_PASSWORD=mostest
ENV MYSQL_DATABASE=mattermost_test
#
# Configure Mattermost
#
WORKDIR /mm
# Copy over files
ADD https://releases.mattermost.com/4.3.1/mattermost-team-4.3.1-linux-amd64.tar.gz .
RUN tar -zxvf ./mattermost-team-4.3.1-linux-amd64.tar.gz
ADD config_docker.json ./mattermost/config/config_docker.json
ADD docker-entry.sh .
RUN chmod +x ./docker-entry.sh
ENTRYPOINT ./docker-entry.sh
# Create default storage directory
RUN mkdir ./mattermost-data
VOLUME ./mattermost-data
# Ports
EXPOSE 8065
カスタマイズしたい場合はcloneしてビルドすれば良い
git clone https://github.com/mattermost/mattermost-docker-preview.git
dockerがインストール済みであれば、以下コマンドで起動完了
docker run --name mattermost-preview -d --publish 8065:8065 mattermost/mattermost-preview
#基本設定
ログインし、初期アカウント作成
メールアドレスは適当でOK。usernameとpasswordを入れて Create Account。
初期ユーザはadminとかrootとか適当に。(後で変更可能)
次に [create a new team]で Team を作成する。
情報共有するプロジェクトや開発チーム単位で任意に。
メイン画面がこちら↓
tutorialは適当にskipできる。
Public Channelsにはデフォルトで[Off Topic]と[Town Square]が用意されてる。
これらはTeamの全ユーザで共有することを目的とし、ユーザは自動で追加される標準チャネル。
Private Channelsは、Team内でもメンバーを限定して共有したい場合に利用する。
チャネルは任意で追加/削除/rename等が可能。
Direct Messagesは、ユーザ間の個別メッセージ用。
初回利用時は、メインページ上部に邪魔な青い警告バーが表示される。
管理者用のSystem Consoleの設定で非表示にできる。
警告1)
「Please configure your Site URL in the System Console.」
→[General] - [Configuration] - [Site URL]を登録してSAVE
警告2)
「Preview Mode: Email notifications have not been configured」
→[Notification] - [Email] - [Enable Email Notifications:]をenableにしてSAVE
###管理画面 [System Console]
管理者用のSystem Consoleは以下。
次のような設定が可能
・ログイン認証をGitLabアカウントと連携する設定
・Mail通知連携の設定
・外部Gitサービスやクラウドサービスなどと連携するためのWebhook設定
・ユーザ権限変更、パスワードリセット、無効化
・チャネル作成数上限設定
・他
###ユーザ追加
なお、ユーザ追加は管理画面で簡単に一括でできると思いきや、基本的に招待機能を使う必要がある。
メール連携設定をしなくても可能で、その場合はメインメニューの「Get Team Invite Link」でアカウント登録用URLにアクセスし、1ユーザずつアカウントを追加する。
登録の際、メールアドレス入力が必要だが、メール認証は不要なので、適当で可。
また、SMTPの設定をしていれば、「Send Email Invite」でメールで招待通知を出せる。
###バックアップ
なお、この設定ではバックアップを考慮しておらず、データはコンテナ内に保持される。
適宜データフォルダ(mottermostとmysql)をホストマウントして、バックアップするなどの対策が必要。
#Web Hook
Incoming WebHooks機能で、任意のチャネルに外部からbot的に投稿することができる。
Admin権限のあるユーザのメニューから [Integrations] - [Incoming Webhooks]で、外部からHTTP POSTする URLを生成できる。
※Incoming WebHooks機能の有効化やユーザ権限の変更は、System Consoleから。
参考
https://docs.mattermost.com/developer/webhooks-incoming.html
curlコマンドで以下のように実行すると、例えば外部からアラートなどを投稿ができる。
テキストをカスタマイズすれば、ChatOps的に使えるはず。
curl -i -X POST -d 'payload={"text": "Hello World!"}' http://{your-mattermost-site}/hooks/{Webhooks URL}