GitLab Mattermost

Offering: Self-managed

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

사전 요구 사항

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

시작하기

GitLab Mattermost는 자체 가상 호스트에서 실행될 것으로 예상됩니다. DNS 설정에서 동일한 머신을 가리키는 두 개의 항목이 필요합니다. 예를 들어, gitlab.example.commattermost.example.com입니다.

GitLab Mattermost는 기본적으로 비활성화되어 있습니다. 활성화하려면:

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

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

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

Linux 패키지는 애플리케이션이 동일한 서버에서 실행되는 경우 GitLab Mattermost를 자동으로 GitLab과 인증하려고 시도합니다.

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

Mattermost 구성

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

시스템 콘sole을 사용하는 것이 권장되지만, 다음 옵션 중 하나를 사용하여 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를 실행하여 변경 사항을 적용합니다.

GitLab Mattermost를 외부 PostgreSQL 서비스로 실행하기

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

  1. /etc/gitlab/gitlab.rb를 편집하고 다음 구성을 지정합니다:

    mattermost['sql_driver_name'] = 'postgres'
    mattermost['sql_data_source'] = "user=gitlab_mattermost host=<postgresql-service의-호스트명> port=5432 sslmode=required dbname=<mattermost_production> password=<사용자-비밀번호>"
    
  2. mattermost['sql_data_source']에서 정의한 user 값과 password 값에 맞는 PostgreSQL 사용자를 생성합니다.

  3. 사용된 dbname 값에 맞는 PostgreSQL 데이터베이스를 생성합니다.

  4. 생성된 데이터베이스와 dbname에 대한 권한이 user에게 있는지 확인합니다.

  5. GitLab을 재구성하고 변경 사항을 적용하기 위해 Mattermost를 재시작합니다:

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

GitLab Mattermost를 독립 서버에서 실행하기

GitLab과 GitLab Mattermost를 두 개의 별도 서버에서 실행하려는 경우, GitLab 서비스는 여전히 GitLab Mattermost 서버에 설정되어 있지만 사용자 요청을 처리하지 않거나 시스템 리소스를 소모하지 않습니다. GitLab Mattermost 서버에서 GitLab 서비스가 리눅스 패키지에 내장되어 비활성화되도록 다음 설정과 구성 세부정보를 사용할 수 있습니다.

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

# Mattermost 서버에서 GitLab 서비스 중지
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에 가입하도록 요구하며 이메일 가입 옵션을 비활성화합니다. Mattermost의 GitLab SSO에 대한 문서를 참조하세요.

GitLab과 GitLab Mattermost를 수동으로 (재)인증하기

GitLab Mattermost 재인증하기

GitLab Mattermost를 재인증하려면 먼저 기존 인증을 취소해야 합니다. 이는 GitLab의 Settings > Applications 영역에서 수행할 수 있습니다. 그런 다음 아래 단계를 따라 인증을 완료하세요.

GitLab Mattermost 인증하기

GitLab의 Settings > Applications 영역으로 이동합니다. 새 애플리케이션을 생성하고 Redirect URI에 다음을 사용합니다(HTTPS를 사용하는 경우 httphttps로 변경합니다):

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

신뢰할 수 있는기밀 설정을 선택해야 합니다. Scopes에서 read_user를 선택합니다. 그런 다음 Save application을 선택합니다.

애플리케이션이 생성되면 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가 올바르게 구성되어야 합니다.

숫자 사용자 및 그룹 식별자 지정

리눅스 패키지는 mattermost라는 사용자와 그룹을 생성합니다. 이러한 사용자에 대한 숫자 식별자를 /etc/gitlab/gitlab.rb에 다음과 같이 지정할 수 있습니다:

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

변경 사항을 적용하려면 sudo gitlab-ctl reconfigure를 실행하세요.

사용자 정의 환경 변수 설정

필요한 경우 Mattermost에서 사용할 사용자 정의 환경 변수를 /etc/gitlab/gitlab.rb를 통해 설정할 수 있습니다. 이는 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 데이터베이스에 연결

번들된 PostgreSQL 데이터베이스에 연결해야 하고 기본 리눅스 패키지 데이터베이스 구성을 사용하고 있다면 PostgreSQL 슈퍼유저로 연결할 수 있습니다:

sudo gitlab-psql -d mattermost_production

GitLab Mattermost 백업

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

일반 Mattermost 백업 및 재해 복구 문서를 가이드로 사용하여 백업해야 할 내용을 확인할 수 있습니다.

번들된 PostgreSQL 데이터베이스 백업

번들된 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 설정

이 설정은 시스템 관리자가 Mattermost 시스템 콘솔을 통해 구성합니다.

환경 > SMTP 탭에서 SMTP 공급자가 제공한 SMTP 자격증명을 입력하거나 127.0.0.1과 포트 25를 입력하여 sendmail을 사용할 수 있습니다. 필요한 특정 설정에 대한 자세한 내용은 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.rbconfig.json에 적용한 변경 사항으로 업데이트합니다. 이는 config.json의 모든 설정이 gitlab.rb에서 사용할 수 있는 것은 아니기 때문에 일부 매개변수를 추가해야 할 수도 있습니다. 완료되면, 리눅스 패키지는 GitLab Mattermost를 한 버전에서 다음 버전으로 업그레이드할 수 있어야 합니다.

  2. Mattermost를 리눅스 패키지가 관리하는 디렉토리 외부로 마이그레이션하여 독립적으로 관리하고 업그레이드할 수 있게 합니다. Mattermost 마이그레이션 가이드를 따라 Mattermost 구성 설정과 데이터를 리눅스 패키지와 독립적인 다른 디렉토리나 서버로 이동합니다.

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

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 데이터베이스를 사용할 때의 서로 다른 영향을 언급합니다. 리눅스 패키지에 포함된 GitLab Mattermost는 PostgreSQL 데이터베이스를 사용합니다.

리눅스 패키지는 Mattermost 팀 에디션 을 포함하고 있으며, 이는 무료 오픈 소스 에디션으로 상업적 기능이 포함되어 있지 않습니다.

Mattermost 엔터프라이즈 에디션로 업그레이드하려면 Mattermost 업그레이드 문서를 참조하세요.

OAuth 2.0 시퀀스 다이어그램

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

%%{init: { "fontFamily": "GitLab Sans" }}%% sequenceDiagram accTitle: GitLab as OAuth 2.0 provider 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 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 배포와 관련하여 도움과 지원을 받으려면 다음을 참조하세요: