Mattermost(マターモースト)というオープンソースのチャットサービスをDocker上で動かしてみたいです!
私はVPS上に構築して運用しているのですが、Docker上で動かすこともできるとのことで試してみました。
環境情報
サーバー | AWS EC2(t3.micro) |
OS | Ubuntu 22.04 |
ほぼ初期状態のEC2インスタンスです。
インストール手順
公式に詳細な手順が載っています。
基本的にはそれに沿って進めていきます。
下記のコマンドを実行してDockerをインストールして起動します。
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
GitHub上のComposeリポジトリのリリースページから最新のバイナリをダウンロードします。
ダウンロードしたバイナリを「docker-compose」にrenameし、実行属性を付与します。
chmod +x docker-compose
当該バイナリを「/usr/local/bin」ディレクトリに移動します。
sudo mv docker-compose /usr/local/bin/
適当なディレクトリで下記のコマンドを実行して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
下記のコマンドを実行して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
下記のコマンドを実行してMattermostを起動します。
sudo docker-compose -f docker-compose.yml -f docker-compose.nginx.yml up -d
問題なくコンテナが起動したらブラウザで「https://<YOUR_MM_DOMAIN>/」にアクセスします。
<YOUR_MM_DOMAIN>の部分は.envファイルのDOMAINに指定したものにします。
必要な情報を入力して「Create Account」をクリックすると管理用アカウントが作成されます。
あとは必要な設定を行っていきます。
まとめ
ホスト側(当記事においてはAWS EC2のインスタンス)の環境構築(webサーバーやDBのインストールなど)を行うことなくMattermostを導入することができました。
この手軽さがコンテナの利点だと思います。
この記事が自分専用のチャットシステムを構築したい方の参考になれば幸いです。
また、他にもいくつかMattermost関連の記事があります。
こちらもあわせてご覧ください。
コメント
コメント一覧 (2件)
初めまして。
こちらの記事を拝見して、無事 mattermostを dockerで建てることができました。
日本語での有益な情報がなかったので大変助かりました。
一つ質問があるのですが、letsencryptの自動更新はこの場合にどのように対応されていますか?
dockerを停止して、”scripts/issue-certificate.sh”を実行し、再度dockerを上げるというのをcronなどで組むのが良いでしょうか?
お手隙の時に教えていただければ幸いです。
t28様
コメントありがとうございます。
当記事をご覧いただきありがとうございます。
お役に立ったようで嬉しく思います。
Let’s Encrypt発行のSSL証明書の更新ですが、ホストマシンでdockerコマンドを使って行うのがいいみたいです。
2022年10月30日12時に公開される記事で扱っていますのでぜひご覧ください。
上記のコマンドをホストマシンのsystemdやcronなどで定期実行することで自動更新が実現できるかなと思います。
こちらのサイトが参考になりました。
https://github.com/mattermost/docker/blob/main/docs/issuing-letsencrypt-certificate.md