Mattermostでチャットシステムを構築してみた(Docker編)

Mattermost(マターモースト)という、オープンソースのチャットサービスがあります。
私はVPS上に構築して運用しているのですが、Docker上で動かすこともできるとのことで試してみました。

環境情報

サーバー AWS EC2(t3.micro)
OS Ubuntu 22.04

ほぼ初期状態のEC2インスタンスです。

インストール手順

公式に詳細な手順が載っています。
基本的にはそれに沿って進めていきます。

  1. Dockerのインストール
    下記のコマンドを実行してDockerをインストールして起動します。

    sudo apt update
    sudo apt install docker.io
    sudo systemctl start docker
  2. Docker Composeのインストール
    GitHub上のComposeリポジトリのリリースページから最新のバイナリをダウンロードします。
    GitHub

    Define and run multi-container applications with Docker - do…

    ダウンロードしたバイナリを「docker-compose」にrenameし、実行属性を付与します。

    chmod +x docker-compose

    当該バイナリを「/usr/local/bin」ディレクトリに移動します。

    sudo mv docker-compose /usr/local/bin/
  3. プログラムの配置
    適当なディレクトリで下記のコマンドを実行してGitHubからプログラムをcloneし、ディレクトリを移動します。

    git clone https://github.com/mattermost/docker
    cd docker

    .envファイルをコピーします。

    cp env.example .env

    .envファイルを編集します。
    DOMAINの部分にドメイン名を設定します。
    また、TZの部分に「Asia/Tokyo」を設定するとログに出力される時刻が日本時間になるようです。

    必要となるディレクトリの作成及びパーミッションの変更を行います。

    mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
    sudo chown -R 2000:2000 ./volumes/app/mattermost
  4. SSL証明書の取得
    下記のコマンドを実行してSSL証明書を取得します。(Let’s Encryptを使用)
    <YOUR_MM_DOMAIN>の部分は.envファイルのDOMAINに指定したものにします。

    bash scripts/issue-certificate.sh -d <YOUR_MM_DOMAIN> -o ${PWD}/certs

    .envファイルを編集します。
    上の方にあるCERT_PATH及びKEY_PATHをコメントアウトし、その下にあるCERT_PATH及びKEY_PATHを有効化します。

    #CERT_PATH=./volumes/web/cert/cert.pem
    #KEY_PATH=./volumes/web/cert/key-no-password.pem
    #GITLAB_PKI_CHAIN_PATH=<path_to_your_gitlab_pki>/pki_chain.pem
    CERT_PATH=./certs/etc/letsencrypt/live/${DOMAIN}/fullchain.pem
    KEY_PATH=./certs/etc/letsencrypt/live/${DOMAIN}/privkey.pem

    このままだとパーミッションの関係で証明書が読めないので変更します。

    sudo chmod +rx certs/etc/letsencrypt/live
    sudo chmod +rx certs/etc/letsencrypt/archive
  5. Mattermostのデプロイ
    下記のコマンドを実行してMattermostを起動します。

    sudo docker-compose -f docker-compose.yml -f docker-compose.nginx.yml up -d
  6. 管理用アカウントの作成
    問題なくコンテナが起動したらブラウザで「https://<YOUR_MM_DOMAIN>/」にアクセスします。
    <YOUR_MM_DOMAIN>の部分は.envファイルのDOMAINに指定したものにします。

    初期画面

    必要な情報を入力して「Create Account」をクリックすると管理用アカウントが作成されます。
    あとは必要な設定を行っていきます。


まとめ

ホスト側(当記事においてはAWS EC2のインスタンス)の環境構築(webサーバーやDBのインストールなど)を行うことなくMattermostを導入することができました。
この手軽さがコンテナの利点だと思います。

この記事が自分専用のチャットシステムを構築したい方の参考になれば幸いです。
また、他にもいくつかMattermost関連の記事があります。
こちらもあわせてご覧ください。

関連記事

Mattermost(マターモースト)という、オープンソースのチャットサービスがあると聞き、面白そうだったのでVPS上に構築してみました。 [blogcard url=https://mattermost.com] 非常に分かり[…]

関連記事

前回はMattermostのシステムをサーバーにインストールするところまでを記事にまとめました。 [sitecard subtitle=関連記事 url=https://twinturbo-power.com/2021/02/matt[…]

関連記事

Mattermost(マターモースト)という、オープンソースのチャットサービスをVPS上に構築しました。 これをそのままそっくり別のVPSに移したのでその際の手順を記事にしたいと思います。 大まかな作業の流れ 基本的にはこちらのインス[…]

関連記事

Mattermost(マターモースト)という、オープンソースのチャットサービスをVPS上に構築して運用しています。 今まではv5系で運用していたのですが、2021年10月13日にv6系がリリースされました。 早速アップデートしてみた[…]