0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Mattermost Docker】ローカルでDiscordやSlackみたいなコミュニケーションツールサーバをたてる

Posted at

背景

Discordに代わる、LAN内で完結できる通話アプリが欲しかったので。
外部に公開する予定はないので、ローカルIP & オレオレ証明書 で建てます。

動作環境

  • Ubuntu 24.04.1 LTS
  • Docker version 27.3.1

開放されるポート

  • 80/tcp
  • 443/tcp
  • 8443/tcp
  • 8443/udp

デプロイ

リポジトリ取得

ターミナルで Mattermost リポジトリをディレクトリ ./mattermost にクローンし、ディレクトリに入る。

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

起動に必要なディレクトリを作成し、権限を変更する。

mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
sudo chown -R 2000:2000 ./volumes/app/mattermost

環境設定ファイル変更

.env サンプルファイルをコピーする。

cp env.example .env

.env ファイルを修正する。
MATTERMOST_IMAGE_TAG に設定する値はそのままでもいいが、一応 mattermost/mattermost-enterprise-edition Tags | Docker Hub から新しめの TAG を指定しておく。

vi .env
.env
# ドメイン名をろーかるIPに変更
DOMAIN=mm.example.com
↓
DOMAIN=<サーバのローカルIPアドレス>

# タイムゾーンを JST(東京) に変更
TZ=UTC
↓
TZ=Asia/Tokyo

# Mattermost イメージのバージョンを変更
MATTERMOST_IMAGE_TAG=10.1.3

オレオレ証明書作成

証明書を配置するディレクトリを作成する。

mkdir -p ./volumes/web/cert

秘密鍵を作成する。

openssl genrsa -out ./volumes/web/cert/key-no-password.pem 2048

CSRを作成する。

openssl req -new -key ./volumes/web/cert/key-no-password.pem -out ./volumes/web/cert/cert.csr

# 以下の質問に答える(オレオレ証明書なので基本適当でよい)
Country Name (2 letter code) [AU]:JP                         # 国名(一応日本を指定)
State or Province Name (full name) [Some-State]:             # 都道府県(空欄)
Locality Name (eg, city) []:                                 # 市町村(空欄)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:  # 会社名(空欄)
Organizational Unit Name (eg, section) []:                   # 部署・部門名(空欄)
Common Name (e.g. server FQDN or YOUR name) []:<サーバのローカルIPアドレス>   # コモンネーム
Email Address []:                                            # メールアドレス(空欄)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:                                     # パスワード(空欄)
An optional company name []:                                 # 会社の略称

上で作成した秘密鍵とCSRを使い証明書を発行する。
外部に公開しないので、有効期限は3650日とする。

openssl x509 -days 3650 -req -sha256 -signkey ./volumes/web/cert/key-no-password.pem -in ./volumes/web/cert/cert.csr -out ./volumes/web/cert/cert.pem

設定ファイル取得

設定ファイルを作成してもらうため、コンテナを立ち上げる。
https を使用するので、nginx 入りのコンテナを使用する。

sudo docker compose -f docker-compose.yml -f docker-compose.nginx.yml up -d

必要なファイルが作成されたので、一度コンテナを停止する。

sudo docker compose -f docker-compose.yml -f docker-compose.nginx.yml down

設定ファイル変更

Mattermost の設定ファイルを変更する。

sudo vi ./volumes/app/mattermost/config/config.json
config.json
# 87行目 メール招待を無効にする
        "EnableEmailInvitations": true,
        
        "EnableEmailInvitations": false,

# 256行目 メール通知を無効にする
        "SendEmailNotifications": true,
        
        "SendEmailNotifications": false,

# 277行目 プレビューモードと表示されるバナーを無効にする
        "EnablePreviewModeBanner": true,
        
        "EnablePreviewModeBanner": false,

# 278行目 サーバ証明書の検証をスキップする
        "SkipServerCertificateVerification": false,
        
        "SkipServerCertificateVerification": true,

# 417, 418行目 デフォルトのロケールを日本に変更
        "DefaultServerLocale": "en",
        "DefaultClientLocale": "en",
        
        "DefaultServerLocale": "ja",
        "DefaultClientLocale": "ja",

コンテナ起動

コンテナを起動する

sudo docker compose -f docker-compose.yml -f docker-compose.nginx.yml up -d

Mattermostサーバーの作成と参加

ブラウザから https://<ローカルIPアドレス> へアクセスすると、アカウントの作成と1個目のMattermostサーバの作成が促される。
(サーバ証明書の警告が出るが無視)

あとがき

ローカル to ローカル だけで通話したいという状況は特殊だが需要はここにある。
Discordのノイズキャンセリングってかなり優秀だった。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?