はじめに
Mattermost をオンプレで構築してみました。備忘録に
📌 構築環境
- OS: Ubuntu 24.04.2 LTS
- Docker(Docker Engine / Docker Compose)インストール済み
- OpenSSH インストール済み
Mattermost の Docker 構成を GitHub からクローンする
Mattermost 公式が Docker ベースの構築用リポジトリを公開しています。
git clone https://github.com/mattermost/docker
完了すると docker/ ディレクトリが作成されます。
.env ファイルを作成する
docker/ ディレクトリ内に env.example があるので、これを .env としてコピーします。
cp env.example .env
この .env に Mattermost のバージョン・DBの設定・TLS設定などが読み込まれるため、必要に応じて編集してください。
同梱の NGINX を使って TLS(HTTPS)対応させる
Mattermost の Docker 構成には NGINX のコンテナが含まれており、HTTPS で公開できます。
設定を変更する場合は nginx/ ディレクトリ内を編集します。
例:ポート番号を変えたい場合
nginx/conf.d/mattermost.conf を編集して listen ポートを変更できます。
また、自己署名証明書や Let's Encrypt を使いたい場合は nginx/ssl 配下に配置すればOKです。
今回は step-ca を使って証明書を発行しています。
Docker Compose で起動する
cd ~/mattermost-docker
初回起動はイメージを pull して DB 構築まで入るため少し時間がかかります。
mattermostと同時にnginxも立ち上げます。
docker compose -f docker-compose.yml -f docker-compose.nginx.yml up -d
状態を確認:
docker ps
app、db、nginx などのコンテナが Up になっていればOKです。
ブラウザからアクセスして初期設定
https://<サーバのIPまたはFQDN>/
へアクセスします。
初回アクセスで管理者アカウントを作成し、チーム名や基本設定を行います。
よくあるつまずきポイント
443ポートが既に使われていた
NGINX が起動しない場合は以下でポート競合を確認します:
sudo lsof -i :443
TLS証明書の読み込みエラー
証明書ファイルのパーミッションは以下推奨:
chmod 600 nginx/ssl/*.key
自己署名 TLS 証明書を作成する(必要な場合)
社内ネットワークのみで利用する場合など、外部の認証局を使わずに 自己署名証明書(Self-signed certificate) を作成して NGINX に設定することもできます。
以下は nginx/ssl/ に証明書を配置する例です。
- 証明書用のディレクトリを作成
mkdir -p nginx/ssl
cd nginx/ssl
- OpenSSL で自己署名証明書を作成(有効期限365日)
openssl req -x509 -nodes -newkey rsa:2048 \
-keyout mattermost.key \
-out mattermost.crt \
-days 365
コマンド実行中に以下の項目を聞かれますが、必要最低限でOKです。
Country Name (2 letter code) [AU]: JP
State or Province Name (full name) []: Tokyo
Locality Name (eg, city) []: Chiyoda
Organization Name (eg, company) []: MyCompany
Organizational Unit Name (eg, section) []: IT
Common Name (e.g. server FQDN or YOUR name) []: mattermost.local ←重要
Email Address []:
※ Common Name(CN)にはアクセス時に使用する FQDN または IP アドレスを必ず指定してください
- パーミッションの調整(NGINX エラー防止)
chmod 600 mattermost.key
chmod 644 mattermost.crt
- NGINX の設定に証明書を反映
nginx/conf.d/mattermost.conf を編集します。
ssl_certificate /etc/nginx/ssl/mattermost.crt;
ssl_certificate_key /etc/nginx/ssl/mattermost.key;
Docker では nginx/ssl ディレクトリが /etc/nginx/ssl にそのままマウントされるため、このパスで問題ありません。
- NGINX を再起動
docker compose restart nginx
これで自己署名証明書を使った HTTPS アクセスが可能になります。
(ブラウザでは「安全でない証明書」と表示されますが、社内用途なら問題ありません)
step-caを使用した場合はルート証明書を各クライアントにインストールしましょう。