- 前提条件
- 利用を開始
- Mattermost の設定
- HTTPS での GitLab Mattermost の実行
- GitLab Mattermost を自前のサーバーで動かす
- GitLab Mattermost を GitLab で手動 (再) 認証します。
- ユーザーとグループの識別子を数値で指定します。
- カスタム環境変数の設定
- 同梱の PostgreSQL データベースへの接続
- GitLab Mattermost のバックアップ
- GitLab Mattermost のリストア
- Mattermost コマンドラインツール(CLI)
- GitLab と Mattermost インテグレーションの設定
- メール通知
- GitLab Mattermost のアップグレード
- OAuth 2.0 シーケンス図
- コミュニティサポートリソース
GitLab Mattermost
GitLab Mattermostサービスを GitLab サーバ上で実行することができます。MattermostはGitLabのような単一のアプリケーションの一部ではありません。MattermostとGitLabの間には良いインテグレーションがあり、私たちのLinuxパッケージでインストールすることができます。しかし、Mattermostは別会社の別アプリケーションです。GitLab サポートでは、GitLab とのインテグレーション以外の Mattermost 固有の質問にはお答えできません。Mattermost 自体についてのヘルプが必要な場合は、コミュニティサポートリソースをご覧ください。
前提条件
GitLab Mattermost の各リリースは、Linux 用 AMD 64 チップセット上でコンパイルされ、手動でテストされています。Raspberry Pi のような ARM チップセットとオペレーションシステムはサポートされていません。
利用を開始
GitLab Mattermost は独自のバーチャルホスト上で動作することを想定しています。DNS 設定では、同じマシンを指す2つのエントリーが必要です。例えば、gitlab.example.com
とmattermost.example.com
。
GitLab Mattermost はデフォルトでは無効になっています。有効にするには
-
/etc/gitlab/gitlab.rb
を編集し、Mattermost の外部 URL を追加します:mattermost_external_url 'https://mattermost.example.com'
-
GitLab を再設定します:
sudo gitlab-ctl reconfigure
-
GitLab Mattermost が
https://mattermost.example.com
に到達可能で、GitLab への接続が認証されていることを確認します。GitLab で Mattermost を認証することで、ユーザーは GitLab を SSO プロバイダとして使用できるようになります。
Linux パッケージは、アプリケーションが同じサーバー上で実行されている場合、GitLab Mattermost を GitLab で自動的に認証しようとします。
自動承認には GitLab データベースへのアクセスが必要です。GitLab データベースが利用できない場合は、Authorize GitLab Mattermost セクションで説明するプロセスを使って GitLab Mattermost を手動で認証して GitLab にアクセスする必要があります。
Mattermost の設定
GitLab 11.0 から、Mattermost は Mattermost システムコンソールを使って設定することができます。Mattermost の設定と設定場所の一覧は、Mattermost ドキュメントにあります。
システムコンソールの使用を推奨しますが、以下のオプションのいずれかを使用して Mattermost を設定することもできます:
-
/var/opt/gitlab/mattermost/config.json
を使用して Mattermost 設定を直接編集します。 -
gitlab.rb
のmattermost['env']
設定を変更することで、Mattermost の実行に使用される環境変数を指定します。この方法で設定された設定は、システムコンソールから無効になり、Mattermost を再起動しない限り変更できません。
HTTPS での GitLab Mattermost の実行
SSL 証明書と SSL 証明書キーを/etc/gitlab/ssl
の内部に配置します。ディレクトリが存在しない場合は作成してください:
sudo mkdir -p /etc/gitlab/ssl
sudo chmod 755 /etc/gitlab/ssl
sudo cp mattermost.gitlab.example.key mattermost.gitlab.example.crt /etc/gitlab/ssl/
/etc/gitlab/gitlab.rb
、以下の設定を指定します:
mattermost_external_url 'https://mattermost.gitlab.example'
mattermost_nginx['redirect_http_to_https'] = true
証明書と鍵にmattermost.gitlab.example.crt
とmattermost.gitlab.example.key
という名前を付けていない場合は、以下のようにフルパスも追加する必要があります。
mattermost_nginx['ssl_certificate'] = "/etc/gitlab/ssl/mattermost-nginx.crt"
mattermost_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/mattermost-nginx.key"
ここで、mattermost-nginx.crt
はSSL証明書、mattermost-nginx.key
はSSL鍵です。
設定が完了したら、sudo gitlab-ctl reconfigure
を実行して変更を適用します。
GitLab Mattermost を自前のサーバーで動かす
GitLabとGitLab Mattermostを別々のサーバーで実行したい場合、GitLabサービスはGitLab Mattermostサーバー上でセットアップされたままですが、ユーザーリクエストを受け付けず、システムリソースを消費しません。GitLab Mattermost サーバー上で以下の設定と構成の詳細を使用することで、Linux パッケージにバンドルされている GitLab サービスを効果的に無効にすることができます。
mattermost_external_url 'http://mattermost.example.com'
# Shut down GitLab services on the Mattermost server
gitlab_rails['enable'] = false
redis['enable'] = false
postgres_exporter['enable'] = false
grafana['enable'] = false
その後、GitLab Mattermost の作成セクションの適切な手順に従ってください。最後に、GitLab とのインテグレーションを有効にするには、GitLab サーバーで以下を追加します:
gitlab_rails['mattermost_host'] = "https://mattermost.example.com"
デフォルトでは、GitLab Mattermost は全てのユーザーに GitLab でのサインアップを要求し、メールによるサインアップオプションは無効にしています。GitLab SSO に関する Mattermost のドキュメントを参照してください。
GitLab Mattermost を GitLab で手動 (再) 認証します。
GitLab Mattermostの再認証
GitLab Mattermost を再承認するには、まず既存の承認を取り消す必要があります。これは GitLab のSettings > Applicationsエリアで行えます。その後、以下の手順に従って作成者の認証を完了させてください。
GitLab Mattermost を認証します。
GitLab のSettings > Applicationsエリアに移動します。新しいアプリケーションを作成し、Redirect URIには以下を使用します(HTTPS を使用する場合はhttp
をhttps
に置き換えてください):
http://mattermost.example.com/signup/gitlab/complete
http://mattermost.example.com/login/gitlab/complete
必ずTrustedandConfidentialを選択してください。Scopesで、read_user
を選択します。そしてSaveapplication を選択します。
アプリケーションが作成されると、Application ID
とSecret
が提供されます。もう一つ必要な情報は、GitLab インスタンスの URL です。GitLab Mattermost が稼働しているサーバーに戻り、/etc/gitlab/gitlab.rb
の設定ファイルを、上記で受け取った値を使って以下のように編集します:
mattermost['gitlab_enable'] = true
mattermost['gitlab_id'] = "12345656"
mattermost['gitlab_secret'] = "123456789"
mattermost['gitlab_scope'] = "read_user"
mattermost['gitlab_auth_endpoint'] = "http://gitlab.example.com/oauth/authorize"
mattermost['gitlab_token_endpoint'] = "http://gitlab.example.com/oauth/token"
mattermost['gitlab_user_api_endpoint'] = "http://gitlab.example.com/api/v4/user"
変更を保存し、sudo gitlab-ctl reconfigure
を実行します。エラーがなければ、GitLab と GitLab Mattermost は正しく設定されているはずです。
ユーザーとグループの識別子を数値で指定します。
Linux pacakage は、ユーザーとグループmattermost
を作成します。これらのユーザーには、/etc/gitlab/gitlab.rb
で以下のように数値識別子を指定できます:
mattermost['uid'] = 1234
mattermost['gid'] = 1234
sudo gitlab-ctl reconfigure
を実行して変更を適用します。
カスタム環境変数の設定
必要に応じて、/etc/gitlab/gitlab.rb
.N /etc/gitlab/gitlab.rb
ET を介して Mattermost が使用するカスタム環境変数を設定することができます。/etc/gitlab/gitlab.rb
これは、Mattermost サーバーが企業のインターネットプロキシの後ろでオペレーションされている場合に便利です。 /etc/gitlab/gitlab.rb
mattermost['env']
/etc/gitlab/gitlab.rb
に /etc/gitlab/gitlab.rb
ハッシュ値を指定します。例えば
mattermost['env'] = {"HTTP_PROXY" => "my_proxy", "HTTPS_PROXY" => "my_proxy", "NO_PROXY" => "my_no_proxy"}
sudo gitlab-ctl reconfigure
を実行して変更を適用します。
同梱の PostgreSQL データベースへの接続
同梱のPostgreSQLデータベースに接続する必要があり、デフォルトのLinuxパッケージのデータベース設定を使用している場合、PostgreSQLのスーパーユーザとして接続することができます:
sudo gitlab-psql -d mattermost_production
GitLab Mattermost のバックアップ
GitLab Mattermost は通常のLinux パッケージのバックアップRake タスクには含まれていません。
一般的な Mattermost のバックアップとディザスタリカバリのドキュメントは、バックアップが必要なもののガイドとして使用できます。
バンドルされている PostgreSQL データベースのバックアップ
バンドルされているPostgreSQLデータベースをバックアップする必要があり、デフォルトのLinuxパッケージのデータベース設定を使用している場合は、このコマンドを使用してバックアップできます:
sudo -i -u gitlab-psql -- /opt/gitlab/embedded/bin/pg_dump -h /var/opt/gitlab/postgresql mattermost_production | gzip > mattermost_dbdump_$(date --rfc-3339=date).sql.gz
data
ディレクトリとconfig.json
Mattermost にはdata
ディレクトリとconfig.json
ファイルがあり、これらもバックアップする必要があります:
sudo tar -zcvf mattermost_data_$(date --rfc-3339=date).gz -C /var/opt/gitlab/mattermost data config.json
GitLab Mattermost のリストア
以前にGitLab Mattermost のバックアップを作成している場合は、以下のコマンドを実行して復元することができます:
# Stop Mattermost so we don't have any open database connections
sudo gitlab-ctl stop mattermost
# Drop the Mattermost database
sudo -u gitlab-psql /opt/gitlab/embedded/bin/dropdb -U gitlab-psql -h /var/opt/gitlab/postgresql -p 5432 mattermost_production
# Create the Mattermost database
sudo -u gitlab-psql /opt/gitlab/embedded/bin/createdb -U gitlab-psql -h /var/opt/gitlab/postgresql -p 5432 mattermost_production
# Perform the database restore
# Replace /tmp/mattermost_dbdump_2021-08-05.sql.gz with your backup
sudo -u mattermost sh -c "zcat /tmp/mattermost_dbdump_2021-08-05.sql.gz | /opt/gitlab/embedded/bin/psql -U gitlab_mattermost -h /var/opt/gitlab/postgresql -p 5432 mattermost_production"
# Restore the data directory and config.json
# Replace /tmp/mattermost_data_2021-08-09.gz with your backup
sudo tar -xzvf /tmp/mattermost_data_2021-08-09.gz -C /var/opt/gitlab/mattermost
# Fix permissions if required
sudo chown -R mattermost:mattermost /var/opt/gitlab/mattermost/data
sudo chown mattermost:mattermost /var/opt/gitlab/mattermost/config.json
# Start Mattermost
sudo gitlab-ctl start mattermost
Mattermost コマンドラインツール(CLI)
mmctl
は、ローカルにインストールして Mattermost API を使用する Mattermost サーバー用の CLI ツールですが、リモートで使用することもできます。Mattermost をローカル接続用に設定するか、ローカルのログイン認証情報で管理者として認証する必要があります(GitLab SSO ではありません)。実行ファイルは/opt/gitlab/embedded/bin/mmctl
にあります。
mmctl
をローカル接続で使用します。
ローカル接続では、mmctl
バイナリと Mattermost を同じサーバから実行する必要があります。ローカルソケットを有効にするには
-
/var/opt/gitlab/mattermost/config.json
を編集し、以下の行を追加します:{ "ServiceSettings": { ... "EnableLocalMode": true, "LocalModeSocketLocation": "/var/tmp/mattermost_local.socket", ... } }
-
Mattermost を再起動します:
sudo gitlab-ctl restart mattermost
その後、sudo /opt/gitlab/embedded/bin/mmctl --local
を使用して、Mattermost インスタンスでmmctl
コマンドを実行できます。
例えば、ユーザーのリストを表示するには、次のようにします:
$ sudo /opt/gitlab/embedded/bin/mmctl --local user list
13dzo5bmg7fu8rdox347hbfxde: appsbot (appsbot@localhost)
tbnkwjdug3dejcoddboo4yuomr: boards (boards@localhost)
wd3g5zpepjgbfjgpdjaas7yj6a: feedbackbot (feedbackbot@localhost)
8d3zzgpurp85zgf1q88pef73eo: playbooks (playbooks@localhost)
There are 4 users on local instance
リモート接続でmmctl
。
リモート接続やローカル接続でソケットを使用できない場合は、非SSOユーザーを作成し、そのユーザーに管理者権限を与えてください。その認証情報を使ってmmctl
を認証することができます:
$ /opt/gitlab/embedded/bin/mmctl auth login http://mattermost.example.com
Connection name: test
Username: local-user
Password:
credentials for "test": "local-user@http://mattermost.example.com" stored
GitLab と Mattermost インテグレーションの設定
プラグインを使って Mattermost を購読すると、イシュー、マージリクエスト、プルリクエストに関する通知や、マージリクエストレビュー、未読メッセージ、タスク割り当てに関する個人通知を受け取ることができます。スラッシュコマンドを使用して、イシューの作成や閲覧、デプロイのトリガーなどのアクションを実行したい場合は、GitLabMattermost のスラッシュコマンドを使用します。
プラグインとスラッシュコマンドは一緒に使うことも、個別に使うこともできます。
メール通知
GitLab MattermostのSMTP設定
これらの設定は、システム管理者が Mattermost システムコンソールから行います。システムコンソールの 環境 > SMTPタブで、SMTP プロバイダから与えられた SMTP 認証情報を入力するか、sendmail
を使用する場合は127.0.0.1
とポート25
を入力します。必要な特定の設定の詳細については、Mattermost ドキュメントを参照してください。
これらの設定は/var/opt/gitlab/mattermost/config.json
でも設定できます。
電子メールのバッチ処理
この機能を有効にすると、ユーザーは電子メール通知を受け取る頻度を制御できます。
メールバッチは、Mattermostシステムコンソールで 環境 > SMTPタブに移動し、メールバッチの有効化設定をTrueに設定することで有効にできます。
この設定は/var/opt/gitlab/mattermost/config.json
でも設定できます。
GitLab Mattermost のアップグレード
GitLab Mattermost は、通常の Linux パッケージアップデートプロセスでアップグレードできます。以前のバージョンの GitLab をアップグレードする場合、GitLab の外部で Mattermost の設定が変更されていない場合にのみ、アップデートプロセスを使用できます。つまり、Mattermostconfig.json
ファイルに config.json
変更が加えられていないことconfig.json
- 直接、または .Mattermostシステムコンソール経由で config.json
。
gitlab.rb
を使って Mattermost の設定のみを行った場合は、Linux パッケージを使って GitLab をアップグレードし、gitlab-ctl reconfigure
を実行して GitLab Mattermost を最新バージョンにアップグレードすることができます。
そうでない場合は、2つの選択肢があります:
- に加えられた変更で
gitlab.rb
を更新します。gitlab.rb
config.json
のすべての設定がconfig.json
利用できるconfig.json
わけではないので、いくつかのパラメータを追加する必要があるかもconfig.json
しれません。完了したら、Linux パッケージは GitLab Mattermost をあるバージョンから次のバージョンにアップグレードできるはずです。 - Mattermost を Linux パッケージが管理するディレクトリの外にマイグレーションし、独立して管理・アップグレードできるようにしましょう。Mattermost マイグレーションガイドに従って、Mattermost の設定やデータを Linux パッケージから独立した別のディレクトリやサーバーに移行してください。
アップグレードに関する注意事項の完全なリストと、古いバージョンに対する特別な考慮事項については、Mattermost ドキュメントを参照してください。
GitLab Mattermost は Linux パッケージに同梱されています。
以下は GitLab 14.0 以降の Mattermost のバージョン変更のリストです:
GitLabバージョン | Mattermost バージョン | 備考 |
---|---|---|
16.3 | 8.0 | |
16.0 | 7.10 | |
15.11 | 7.9 | |
15.10 | 7.8 | |
15.9 | 7.7 | |
15.7 | 7.5 | |
15.6 | 7.4 | |
15.5 | 7.3 | |
15.4 | 7.2 | |
15.3 | 7.1 | |
15.2 | 7.0 | |
15.1 | 6.7 | |
15.0 | 6.6 | |
14.10 | 6.5 | |
14.9 | 6.4 | |
14.8 | 6.3 | |
14.7 | 6.2 | |
14.6 | 6.1 | 6.0の代わりに6.1にアップデートしました。アップグレードノートを参照してください。 |
14.4 | 5.39 | |
14.3 | 5.38 | |
14.2 | 5.37 | |
14.1 | 5.36 | |
14.0 | 5.35 |
GitLab Mattermostを14.6にアップグレードする場合
GitLab 14.6 には Mattermost 6.1 が同梱されており、Mattermost 6.0 のデータベースマイグレーションが長く続く可能性があります。アップグレードに関する情報や、マイグレーションによるダウンタイムを減らす方法については、両バージョンの重要なアップグレードノートをお読みください。手動でのマイグレーションが必要な場合は、同梱の PostgreSQL データベースに接続してください。
OAuth 2.0 シーケンス図
次の図は、GitLab が Mattermost の OAuth 2.0 プロバイダとしてどのように動作するかのシーケンス図です。インテグレーションを動作させる際のエラーのトラブルシューティングに利用できます:
コミュニティサポートリソース
GitLab Mattermostデプロイに関するヘルプやサポートについては、こちらをご覧ください: