GitLab Mattermost

Offering: 자체 관리

GitLab 서버에서 GitLab Mattermost 서비스를 실행할 수 있습니다. Mattermost는 GitLab의 일부가 아닙니다. Mattermost and GitLab 사이에는 좋은 통합이 있으며 Linux 패키지를 통해 설치할 수 있습니다. 그러나 Mattermost는 별도의 회사에서 제공하는 별개의 애플리케이션입니다. GitLab 지원팀은 GitLab과의 통합을 넘어서는 Mattermost-specific 질문에 대해 도움을 드릴 수 없습니다. Mattermost 자체에 도움이 필요한 경우 커뮤니티 지원 리소스를 참조하십시오.

사전 요구 사항

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 Mattermost를 GitLab과 승인하려고 시도합니다.

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

Mattermost 구성

Mattermost는 Mattermost 시스템 콘솔을 사용하여 구성할 수 있습니다. Mattermost 설정 및 설정 위치의 상세한 목록은 Mattermost 문서에서 확인할 수 있습니다.

시스템 콘솔을 사용하는 것이 권장되지만 다음 옵션 중 하나를 사용하여 Mattermost를 구성할 수도 있습니다:

  1. /var/opt/gitlab/mattermost/config.json을 통해 Mattermost 구성을 직접 편집합니다.
  2. 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.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에서 사용되는 기존 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 값과 일치하는 PostgreSQL 데이터베이스를 만듭니다.
  3. userdbname에 대한 권한을 가지고 있는지 확인합니다.

  4. 변경 사항을 적용하려면 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

그런 다음 Authorize GitLab Mattermost section에서 적절한 단계를 따릅니다. 마지막으로 GitLab과의 통합을 가능하게 하려면 GitLab 서버에 다음을 추가하십시오:

gitlab_rails['mattermost_host'] = "https://mattermost.example.com"

기본적으로 GitLab Mattermost는 모든 사용자가 GitLab으로 가입하도록 요구하고 이메일에 의한 가입을 비활성화합니다. Mattermost의 GitLab SSO 문서를 참조하십시오.

GitLab Mattermost 수동 (다시) 인가

GitLab Mattermost 다시 인가

GitLab Mattermost를 다시 인가하려면 먼저 기존 인가를 철회해야 합니다. 이 작업은 GitLab의 설정 > 응용프로그램 영역에서 수행할 수 있습니다. 그런 다음 아래 단계를 따라 인가를 완료하세요.

GitLab Mattermost 인가

GitLab의 설정 > 응용프로그램 영역으로 이동합니다. 새 응용프로그램을 생성하고 Redirect URI에 다음을 사용하세요(https를 사용하는 경우 httphttps로 바꿉니다):

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

TrustedConfidential 설정을 선택해야 합니다. Scopes에서 read_user를 선택합니다. 그런 다음 응용프로그램 저장을 선택합니다.

응용프로그램이 생성되면 응용프로그램 ID시크릿이 제공됩니다. 또한 필요한 다른 정보 중 하나는 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를 실행합니다.

사용자 정의 환경 변수 설정

필요한 경우 Mattermost가 기업 인터넷 프록시 뒤에서 운영되는 경우 사용자 정의 환경 변수를 /etc/gitlab/gitlab.rb를 통해 지정할 수 있습니다. 예를 들어, mattermost['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"

# 데이터 디렉터리와 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"의 자격 증명: "local-user@http://mattermost.example.com"() 저장되었습니다

GitLab 및 Mattermost 통합 구성

플러그인을 사용하여 Mattermost를 구독하여 이슈, 병합 요청 및 풀 요청에 대한 알림뿐만 아니라 병합 요청 리뷰, 읽지 않은 메시지 및 작업 할당과 관련된 개인 알림을 받을 수 있습니다. 작업 만들기 및 보기와 배포 트리거와 같은 작업을 수행하기 위해 슬래시 명령을 사용하려면 GitLab Mattermost 슬래시 명령을 사용하세요.

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

이메일 알림

GitLab Mattermost를 위한 SMTP 설정 구성

이러한 설정은 시스템 관리자가 System Console을 통해 구성합니다. 시스템 콘솔환경 > SMTP 탭에서 SMTP 공급업체에서 제공하는 SMTP 자격 증명 또는 sendmail을 사용하기 위해 127.0.0.1과 포트 25를 입력할 수 있습니다. 필요한 구체적인 설정에 대한 자세한 정보는 Mattermost 문서에서 확인할 수 있습니다.

또한 이러한 설정은 /var/opt/gitlab/mattermost/config.json에서 구성할 수 있습니다.

이메일 배치

이 기능을 활성화하면 사용자가 이메일 알림을 받는 주기를 제어할 수 있습니다.

이메일 배치는 시스템 콘솔환경 > SMTP 탭으로 이동하여 이메일 배치 사용 설정을 True로 설정함으로써 활성화할 수 있습니다.

이 설정은 /var/opt/gitlab/mattermost/config.json에서도 구성할 수 있습니다.

GitLab Mattermost 업그레이드

참고: Mattermost 버전을 업그레이드할 때는 반드시 중요한 업그레이드 노트를 확인하여 변경 사항이나 이주가 필요한 사항을 주소화해야 합니다.

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

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

그렇지 않는 경우에는 두 가지 옵션이 있습니다:

  1. config.json에서 수행한 변경 내용을 gitlab.rb로 업데이트합니다. 일부 설정은 config.json에 사용 가능하지 않은 매개변수를 추가해야 할 수 있습니다. 완료되면 Linux 패키지를 사용하여 GitLab Mattermost를 이전 버전에서 다음 버전으로 업그레이드할 수 있어야 합니다.
  2. Mattermost를 Linux 패키지로 제어되는 디렉토리 외부로 이주하여 독립적으로 관리 및 업그레이드할 수 있도록 합니다. Mattermost 구성 설정 및 데이터를 Linux 패키지와는 독립적인 다른 디렉토리나 서버로 옮기기 위해 Mattermost Migration Guide를 참조하세요.

더 오래된 버전에 대한 완전한 업그레이드 공지 및 특별 고려 사항 목록은 Mattermost 문서를 참조하세요.

Linux 패키지로 제공되는 GitLab Mattermost 버전 및 에디션

다음은 GitLab 15.0부터 Mattermost 버전 변경 목록입니다.

GitLab 버전 Mattermost 버전 노트
17.3 9.10  
17.2 9.9  
17.1 9.8  
17.0 9.7  
16.11 9.6  
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  

참고: Mattermost 업그레이드 노트는 PostgreSQL과 MySQL 데이터베이스를 사용할 때 다른 영향을 나타냅니다. Linux 패키지에 번들로 제공되는 GitLab Mattermost는 PostgreSQL 데이터베이스를 사용합니다.

Linux 패키지에는 무료 오픈 소스 에디션인 Mattermost 팀 에디션이 번들로 제공되며 상용 기능이 포함되어 있지 않습니다. Mattermost 엔터프라이즈 에디션으로 업그레이드하려면 Mattermost 업그레이드 문서를 참조하세요.

OAuth 2.0 시퀀스 다이어그램

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

%%{init: { "fontFamily": "GitLab Sans" }}%% sequenceDiagram accTitle: OAuth 2.0 제공자로서의 GitLab accDescr: 사용자가 Mattermost를 통해 GitLab에 인증할 때 발생하는 일련의 작업들. 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 리다이렉트: 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 배포에 대한 도움과 지원은 다음을 참조하세요: