DockerLinux

Mattermost(Slackクローン)をDockerでオンプレに構築する

Docker

皆さん、Mattermostはご存じでしょうか?

Mattermostはオープンソースで開発されているSlackクローンのチャットツールです。

オンプレ内部だけで完結しますので、セキュリティ上の理由などから社外のサービスを使うことができない企業などでチャットを使いたい場合に利用することができます。

これまでは、Skypeやメールをコミュニケーションの手段として主に使っていたのですが、Skypeのチャットは過去の投稿などは消えてしまうのでルーム的な使い方ができません。

そんな状態でテレワークを開始したのですが、なかなかスムーズにコミュニケーションをとることができなかったため、オンプレのクローズ内で構築できるチャットツールとしてMattermostの導入を行いました。

なお、Gitlab OmnibasにはMattermostの機能が内包されている(デフォルトでは無効化)のでもしすでにGitlabを使っている場合には、そちらの有効化も合わせて検討してください。

今回はDockerで簡単にMattermostを構築することができたのでそのメモとなります。

試した環境

・CentOS7
※DockerやDocker-composeなどはインストール済み

以下の記事でCentOS7にdockerとdocker-composeをインストールしていますので参考にどうぞ

無償版のTeam Edition、有償版の Enterprise Edition

Mattermostには、2つのEditionがあります。

基本的なチャット機能を備えた無償版の「Team Edition」と企業利用で必要なセキュリティ、コンプライアンスおよび各種サポートを備えた有償版の「Enterprise Edition」があります

通常使うだけならば無償版の機能だけで充分に使うことができます。

Mattermostをインストールする

Mattermostのインストール方法

Mattermostのインストール方法は大きく分けて3つあります。

①通常のアプリインストール(tar.gzアーカイブなどからのインストール)
②Docker Previewインストール(評価用などで簡単に構築可能)
③Docker Production Installation(複数のコンテナで構築される、本番用としても利用可能)

今回は③を採用することにして、無料版での構築を試してみます。

イメージをgit cloneで取得

GitHub - mattermost/mattermost-docker: Deprecated
Deprecated. Contribute to mattermost/mattermost-docker development by creating an account on GitHub.

ではインストールするためのDockerイメージを取得します。今回は/root/docokerの下に構築します。

# cd /root/docker
# git clone https://github.com/mattermost/mattermost-docker.git

docker-compose.yamlの修正

続けてdocker-compse.yamlを修正します。変更した部分だけ記載します。

デフォルトだとEnterpriseEdtionがインストールされるため、無料版に変更するためeditionをteamの部分のコメントを外してます。

あとはポートがぶつからないように変更しました。

# cd /var/docker/mattermost-docker
# vi docker-compose.yml

  app:
    build:
      context: app
      # uncomment following lines for team edition or change UID/GID
      args:
        - edition=team
・
・
  web:
    build: web
    ports:
      - "8080:80"
      - "8444:443"

パーミッションの修正

Mattermostで利用するフォルダを作成して、パーミッションを設定します。

# mkdir -pv ./volumes/app/mattermost/{data,logs,config,plugins,client-plugins}
# chown -R 2000:2000 ./volumes/app/mattermost/

パーミッションを設定しないと以下の様なエラーで起動に失敗します(docker-compose logs)
app_1 | No configuration file /mattermost/config/config.json
app_1 | Creating a new one
app_1 | cp: can’t create ‘/mattermost/config/config.json’: Permission denied
app_1 | /entrypoint.sh: line 44: can’t create /mattermost/config/config.json.tmp: Permission denied

Dockerコンテナのビルド/起動

コンテナのビルド/起動を行います。初回はイメージとってきたりするので結構時間かかります。

# docker-compose up -d
# docker-compose ps
         Name                      Command                    State                              Ports
-------------------------------------------------------------------------------------------------------------------------
mattermost-docker_app_1   /entrypoint.sh mattermost   Up (health: starting)   8000/tcp
mattermost-docker_db_1    /entrypoint.sh postgres     Up (health: starting)   5432/tcp
mattermost-docker_web_1   /entrypoint.sh              Up (health: starting)   0.0.0.0:8444->443/tcp, 0.0.0.0:8080->80/tcp

Mattermostを使ってみる

初回ログオン

それでは作成したMattermostコンテナにアクセスしてみます。

初回にアクセスするとユーザーの作成を求められるので作成します。

ユーザーが作成できたらチームを作成します。

チームができると以下の様な基本画面が表示されます。

次にチャネルという実際のチャットルームを作成していきます。

チャネルを作成してみます。

これでチャネル単位でチャットすることができるようになりました。

ユーザー追加

新しいユーザーをチームに追加したい場合は、「チーム招待用リンク」を作成して
このリンクURLをユーザーにメール等で通知して、ユーザー登録をしてもらう形になります。

このURLを追加したいユーザーへ連絡します。

新しいユーザーがアクセスすると同様にユーザーを作成できます。

チャットを投稿してみます。見やすくて最高です。絵文字やReplyなども使えてコミュニケーションもはかどりそうですね。

言語設定

Mattermostは、多言語に対応していて、もちろん日本語も利用可能です。
「Account Settings > Display > Language」から表示言語を変更することができます。

テーマ変更

「Account Settings > Display > Theme」ダークモードなどに変更できます。

まとめ

やはりDockerは便利です。かなりの短期間でMattermostの構築ができました。

これをチームメンバー間で使うことでテレワークしていても気軽に連絡を取ることができてコミュニケーションの活性化が図れると思います。

最低限のルールなどは決めたうえでどんどん使っていきましょう。

Dockerのオススメ勉強方法

私がオススメするDocker初心者向けの最初に購入すべき書籍は「さわって学ぶクラウドインフラ docker基礎からのコンテナ構築です。

さわって学ぶクラウドインフラ docker基礎からのコンテナ構築

本書ではDockerの基本的な概念などの座学ももちろんありますが、実際に、Dockerのインストール方法やWebサーバーをコンテナで構築するハンズオンを通じて学習することができるため、特に初心者の方はは分かりやすい内容となっています。

以上

コメント