GitLab Mattermost

Offering: Self-managed

GiltLab Mattermost 서비스를 GitLab 서버에서 실행할 수 있습니다. Mattermost는 GitLab이 포함된 단일 응용 프로그램의 일부가 아닙니다. Mattermost와 GitLab 간에 좋은 통합이 있으며 Linux 패키지를 통해 설치할 수 있습니다. 그러나 Mattermost는 별도의 회사에서 제공하는 별도의 응용 프로그램입니다. GitLab 지원팀은 GitLab과의 통합을 넘어서는 Mattermost 관련 질문에 대해 도움을 드릴 수 없습니다. Mattermost 자체에 도움이 필요한 경우, 커뮤니티 지원 리소스를 참조하십시오.

Prerequisites

각 GitLab Mattermost 릴리스는 Linux용 AMD 64 칩셋에서 컴파일되고 수동으로 테스트됩니다. Raspberry Pi와 같은 ARM 칩셋 및 운영 체제는 지원되지 않습니다.

시작하기

GitLab Mattermost는 기본적으로 비활성화되어 있습니다. 활성화하려면 다음을 수행하십시오.

  1. /etc/gitlab/gitlab.rb 파일을 편집하고 Mattermost 외부 URL을 추가하십시오:

    mattermost_external_url 'https://mattermost.example.com'
    
  2. GitLab을 다시 구성하십시오:

    sudo gitlab-ctl reconfigure
    
  3. https://mattermost.example.com에서 GitLab Mattermost에 연결할 수 있는지 확인하고, GitLab에 연결할 권한이 부여되었는지 확인하십시오. GitLab과 Mattermost를 인가하는 것은 사용자가 GitLab을 SSO 공급자로 사용할 수 있도록 합니다.

Linux 패키지가 같은 서버에서 실행 중이면 GitLab Mattermost를 자동으로 GitLab과 연결하려고 시도합니다.

자동 인가는 GitLab 데이터베이스에 액세스 권한이 필요합니다. GitLab 데이터베이스에 액세스 할 수 없는 경우, GitLab Mattermost 인가 섹션에 설명된 프로세스를 사용하여 GitLab Mattermost를 수동으로 인가해야 합니다.

Mattermost 구성

GitLab 11.0부터 Mattermost는 Mattermost 시스템 콘솔을 사용하여 구성할 수 있습니다. Mattermost 설정 목록 및 그 위치에 대한 자세한 내용은 Mattermost 설문서에서 사용할 수 있습니다.

시스템 콘솔을 사용하는 것이 좋지만, Mattermost 구성은 다음 옵션 중 하나를 사용하여도 가능합니다.

  1. /var/opt/gitlab/mattermost/config.json을 편집하여 Mattermost 구성을 직접 변경합니다.
  2. gitlab.rbmattermost['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.crtmattermost.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를 실행하십시오.

외부 PostgreSQL 서비스로 GitLab Mattermost 실행

기본적으로 Mattermost는 Linux 패키지에 번들된 PostgreSQL 서비스를 사용합니다. Mattermost를 외부 PostgreSQL 서비스와 함께 사용하려면 해당 구성이 필요합니다. GitLab에서 사용되는 기존 외부 PostgreSQL 연결 구성은 Mattermost로 자동으로 상속되지 않습니다.

  1. /etc/gitlab/gitlab.rb를 편집하고 다음 구성을 지정하십시오.

    mattermost['sql_driver_name'] = 'postgres'
    mattermost['sql_data_source'] = "user=gitlab_mattermost host=<hostname-of-postgresql-service> port=5432 sslmode=required dbname=<mattermost_production> password=<user-password>"
    
  2. user 값과 password 값과 일치하는 PostgreSQL 사용자를 만들고 mattermost['sql_data_source']에서 정의한 dbname 값을 만드십시오.
  3. 사용된 dbname 값과 일치하는 PostgreSQL 데이터베이스를 만드십시오.
  4. 새로 만든 데이터베이스에 대한 사용 권한을 부여하십시오.

  5. 변경 사항을 적용하려면 GitLab을 다시 구성하고 Mattermost를 다시 시작하십시오.

    sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart mattermost
    

GitLab Mattermost를 별도의 서버에서 실행하는 방법

만약 GitLab 및 GitLab Mattermost를 두 개의 별도 서버에서 실행하려는 경우, GitLab 서비스는 여전히 GitLab Mattermost 서버에 설정되지만 사용자 요청을 받지 않거나 시스템 리소스를 사용하지 않습니다. 다음의 설정 및 구성 세부 정보를 사용하여 GitLab Mattermost 서버에서 Linux 패키지에 번들로 제공되는 GitLab 서비스를 비활성화할 수 있습니다.

mattermost_external_url 'http://mattermost.example.com'

# GitLab 서비스를 Mattermost 서버에서 중지합니다
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의 설정 > 애플리케이션 영역에서 수행할 수 있습니다. 그런 다음 아래 단계를 따라 승인을 완료합니다.

GitLab Mattermost 승인

GitLab의 설정 > 애플리케이션 영역으로 이동합니다. 새 애플리케이션을 만들고 Redirect URI에 다음을 사용합니다 (https를 사용하는 경우 http를 대체합니다):

http://mattermost.example.com/signup/gitlab/complete
http://mattermost.example.com/login/gitlab/complete

신뢰됨기밀 설정을 선택해야 합니다. 범위에서 read_user를 선택합니다. 그런 다음 애플리케이션 저장을 선택합니다.

애플리케이션이 생성되면 Application IDSecret가 제공됩니다. 필요한 다른 정보는 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 패키지는 mattermost라는 사용자 및 그룹을 생성합니다. 이러한 사용자의 숫자 식별자를 /etc/gitlab/gitlab.rb에 지정할 수 있습니다. 다음과 같이 설정합니다:

mattermost['uid'] = 1234
mattermost['gid'] = 1234

변경 사항을 적용하려면 sudo gitlab-ctl reconfigure를 실행합니다.

사용자 정의 환경 변수 설정

필요한 경우 /etc/gitlab/gitlab.rb를 통해 Mattermost가 사용할 사용자 정의 환경 변수를 설정할 수 있습니다. 이것은 Mattermost 서버가 기업 인터넷 프록시 뒤에서 운영될 때 유용합니다. 예를 들어, /etc/gitlab/gitlab.rbmattermost['env'] 및 해시값을 제공합니다.

mattermost['env'] = {"HTTP_PROXY" => "my_proxy", "HTTPS_PROXY" => "my_proxy", "NO_PROXY" => "my_no_proxy"}

변경 사항을 적용하려면 sudo gitlab-ctl reconfigure를 실행합니다.

번들 PostgreSQL 데이터베이스에 연결

기본 Linux 패키지 데이터베이스 구성을 사용하고 번들 PostgreSQL 데이터베이스에 연결해야 하는 경우, PostgreSQL 수퍼 사용자로 연결할 수 있습니다:

sudo gitlab-psql -d mattermost_production

GitLab Mattermost 백업

GitLab Mattermost는 일반 Linux 패키지 백업 Rake 작업에 포함되지 않습니다.

일반적인 Mattermost 백업 및 재해 복구 문서는 백업해야 하는 내용을 안내하는 데 사용할 수 있습니다.

번들 PostgreSQL 데이터베이스 백업

기본 Linux 패키지 데이터베이스 구성을 사용하고 번들 PostgreSQL 데이터베이스를 백업해야 하는 경우, 다음 명령을 사용하여 백업할 수 있습니다:

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의 백업을 만든 경우, 다음 명령을 실행하여 복원할 수 있습니다:

# 데이터베이스 연결을 끊기 위해 Mattermost를 중지합니다
sudo gitlab-ctl stop mattermost

# Mattermost 데이터베이스 삭제
sudo -u gitlab-psql /opt/gitlab/embedded/bin/dropdb -U gitlab-psql -h /var/opt/gitlab/postgresql -p 5432 mattermost_production

# Mattermost 데이터베이스 생성
sudo -u gitlab-psql /opt/gitlab/embedded/bin/createdb -U gitlab-psql -h /var/opt/gitlab/postgresql -p 5432 mattermost_production

# 데이터베이스 복원 수행
# 백업 파일은 /tmp/mattermost_dbdump_2021-08-05.sql.gz를 본인의 백업 파일로 대체하세요
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"

# `data` 디렉터리와 `config.json` 복원
# 백업 파일은 /tmp/mattermost_data_2021-08-09.gz를 본인의 백업 파일로 대체하세요
sudo tar -xzvf /tmp/mattermost_data_2021-08-09.gz -C /var/opt/gitlab/mattermost

# 필요한 경우 권한 수정
sudo chown -R mattermost:mattermost /var/opt/gitlab/mattermost/data
sudo chown mattermost:mattermost /var/opt/gitlab/mattermost/config.json

# Mattermost 시작
sudo gitlab-ctl start mattermost

Mattermost 명령줄 도구 (CLI)

mmctl은 Mattermost 서버를 위한 CLI 도구로 로컬에 설치되어 Mattermost API를 사용하지만 원격으로도 사용할 수 있습니다. Mattermost를 로컬 연결 또는 GitLab SSO가 아닌 로컬 로그인 자격 증명으로 구성해야 합니다. 실행 파일은 /opt/gitlab/embedded/bin/mmctl에 위치합니다.

로컬 연결을 통해 mmctl 사용

로컬 연결을 위해서는 mmctl 실행 파일과 Mattermost가 동일한 서버에서 실행되어야 합니다. 로컬 소켓을 활성화하려면:

  1. /var/opt/gitlab/mattermost/config.json을 편집하고 다음 라인을 추가합니다:

    {
        "ServiceSettings": {
            ...
            "EnableLocalMode": true,
            "LocalModeSocketLocation": "/var/tmp/mattermost_local.socket",
            ...
        }
    }
    
  2. 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)
로컬 인스턴스에는 4명의 사용자가 있습니다

원격 연결을 통해 mmctl 사용

원격 연결 또는 소켓을 사용할 수 없는 로컬 연결의 경우, SSO 사용자가 아닌 관리자 권한을 가진 사용자를 만들고 그 자격 증명을 사용하여 mmctl을 인증합니다:

$ /opt/gitlab/embedded/bin/mmctl auth login http://mattermost.example.com

연결 이름: test
사용자 이름: local-user
암호:
 "test"의 자격 증명: "localuser@http://mattermost.example.com"() 저장됨

GitLab 및 Mattermost 통합 구성

플러그인을 사용하여 Mattermost를 사용하여 이슈, 병합 요청 및 풀 요청에 대한 알림을 받을 수 있으며, 병합 요청 리뷰, 읽지 않은 메시지 및 작업 할당에 대한 개인 알림도 받을 수 있습니다. 슬래시 명령을 사용하여 이슈 생성, 보기 및 배포 트리거와 같은 작업을 실행하거나 GitLab Mattermost 슬래시 명령를 사용할 수 있습니다.

플러그인과 슬래시 명령은 함께 또는 개별적으로 사용할 수 있습니다.

이메일 통지

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 업그레이드

참고: Mattermost 버전을 업그레이드할 때, 중요한 업그레이드 노트를 확인하여 수행해야 하는 변경 사항이나 마이그레이션을 해결해야 합니다.

GitLab Mattermost는 일반적인 리눅스 패키지 업데이트 프로세스를 통해 업그레이드할 수 있습니다. 이전 버전의 GitLab을 업그레이드할 때 Mattermost 구성 설정이 GitLab 외부에서 변경되지 않은 경우에만 업데이트 프로세스를 사용할 수 있습니다. 즉, Mattermost config.json 파일에 직접 또는 Mattermost 시스템 콘솔을 통해 변경 사항이 저장되지 않은 경우입니다.

만약 gitlab.rb를 사용하여 Mattermost를 구성한 경우, 리눅스 패키지를 사용하여 GitLab을 업그레이드한 다음 gitlab-ctl reconfigure를 실행하여 GitLab Mattermost를 최신 버전으로 업그레이드할 수 있습니다.

이것이 해당되지 않는 경우, 두 가지 옵션이 있습니다:

  1. gitlab.rb을 변경하여 config.json에 수행한 변경 사항을 업데이트합니다. 이것은 config.json에 있는 모든 설정이 gitlab.rb에 있는 것은 아니기 때문에 일부 매개변수를 추가해야 할 수 있습니다. 완료되면 리눅스 패키지를 통해 GitLab Mattermost를 한 버전에서 다음 버전으로 업그레이드할 수 있어야 합니다.
  2. 리눅스 패키지가 제어하는 디렉토리 외부에서 Mattermost를 마이그레이션하여 별도로 관리하고 업그레이드할 수 있도록 합니다. Mattermost 구성 설정 및 데이터를 다른 디렉토리나 리눅스 패키지와 독립적인 서버로 이동하려면 Mattermost 마이그레이션 가이드에 따르세요.

이전 버전에 대한 전체 업그레이드 공지 및 특별 고려 사항의 목록은 Mattermost 설명서를 참조하십시오.

리눅스 패키지와 함께 제공된 GitLab Mattermost 버전

다음은 GitLab 14.0 이후의 Mattermost 버전 변경 목록입니다:

GitLab 버전 Mattermost 버전 참고
16.10 9.5  
16.9 9.4  
16.7 9.3  
16.6 9.1  
16.5 9.0  
16.4 8.1  
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 데이터베이스에 연결하십시오.

참고: Mattermost 업그레이드 노트는 PostgreSQL과 MySQL 데이터베이스를 사용할 때 다른 영향을 야기한다고 합니다. Linux 패키지에 포함된 GitLab Mattermost는 PostgreSQL 데이터베이스를 사용합니다.

OAuth 2.0 순서도

다음 이미지는 GitLab이 Mattermost에 대한 OAuth 2.0 제공자로 작동하는 시퀀스 다이어그램입니다. 이로서 통합 작동에 대한 오류를 해결하는 데 사용할 수 있습니다.

sequenceDiagram User->>Mattermost: GET https://mm.domain.com Note over Mattermost, GitLab: 액세스 코드 획들 Mattermost->>GitLab: GET https://gitlab.domain.com/oauth/authorize Note over User, GitLab: GitLab 사용자 로그인 (필요한 경우) Note over GitLab: GitLab은 client_id가 OAuth 애플리케이션과 일치하는지 확인 GitLab->>User: GitLab은 사용자에게 Mattermost OAuth 앱 승인 요청 User->>GitLab: 사용자가 '허용'을 선택 Note over GitLab: GitLab은 redirect_uri가 유효한 URL 목록과 일치하는지 확인 GitLab->>User: 302 redirect: https://mm.domain.com/signup/gitlab/complete User->>Mattermost: GET https://mm.domain.com/signup/gitlab/complete Note over Mattermost, GitLab: 액세스 코드를 액세스 토큰으로 교환 Mattermost->>GitLab: POST http://gitlab.domain.com/oauth/token GitLab->>GitLab: Doorkeeper::TokensController#35;create GitLab->>Mattermost: 액세스 토큰 Note over Mattermost, GitLab: Mattermost는 GitLab 사용자를 조회 Mattermost->>GitLab: GET https://gitlab.domain.com/api/v4/user GitLab->>Mattermost: 사용자 세부정보 Mattermost->>User: Mattermost/GitLab 사용자 준비

커뮤니티 지원 자료

GitLab Mattermost 배포에 대한 도움과 지원을 위해 다음을 참조하세요: