GitLab과 Mattermost에 letsencrypt를 끼얹자.

아래 내용은 GitLab을 Ubuntu 16.04에서 $ sudo apt-get install gitlab-ce 명령으로 설치한 기준으로 작성되었습니다.

GitLab과 Rocket.Chat은 나쁘지 않은 조합이었으나 GitLab이 이미 설치되어 있다면 수월하게 Mattermost를 설치하고 관리할 수 있는데 Rocket.Chat을 굳이 사용하여 관리 포인트를 늘릴 이유는 없을 것 같았다.
그래서 Rocket.Chat을 제거하고 Mattermost를 설치 했다.

Mattermost와 GitLab은 계정 정보 공유가 가능했기 때문에 Mattermost에서 GitLab의 데이타에 접근할때 추가적인 로그인 없이 가능하여 이용하는 입장에서도 편리함이 추가되었다. 이 점은 Slack보다 잇점이었기 때문에 업무용 채팅은 Mattermost로 확정했다.

설치는 이미 설치된 GitLab 서버에 한 줄만 추가하여 주면 되었기에 매우 쉽다.

$ sudo vim /etc/gitlab/gitlab.rb

[code]
mattermost_external_url “http://(mattermost.domain.com)”
[/code]

Mattermost 주소로 사용할 URL만 넣어 준 후

$ sudo gitlab-ctl reconfigure

GitLab 재설정 명령만 넣어 주면 된다.

GitLab과 Mattermost에 letsencrypt를 설정하여 https로 이용하는 방법은, certbot을 이용한다.
letsencrypt를 이용해보았다면 certbot은 익숙할 것이다.
certbot은 letsencrypt에서 발급하는 인증서를 자동으로 발급/갱신하여 주는데 아래의 방법을 이용하면 GitLab과 Mattermost에서도 자동으로 발급/갱신 기능을 이용할 수 있다.

우선 certbot을 설치 한다.

$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot

다음은 letsencrypt에서 인증서 부정 발급을 막기 위해 발급하려는 도메인에 실제 연결된 서버인지 확인하기 위한 과정이 있는데, 이를 위해 GitLab이 제어하는 nginx에 조금의 설정이 필요하다.

우선 certbot이 자동생성하는 검증 파일이 생성될 디렉토리를 생성한다.

$ sudo mkdir -p /var/www/letsencrypt

해당 경로로 http 원격 접근이 가능하도록 GitLab의 nginx 설정을 수정한다.

$ sudo vim /etc/gitlab/gitlab.rb

[code]
nginx[‘custom_gitlab_server_config’] = “location ^~ /.well-known { root /var/www/letsencrypt; }”
mattermost_nginx[‘custom_gitlab_mattermost_server_config’] = “location ^~ /.well-known { root /var/www/letsencrypt; }”
[/code]

GitLab 뿐 아니라 Mattermost도 인증서 발급받기 위해 두 줄을 추가해 준다.

$ sudo gitlab-ctl reconfigure

nginx를 재설정 & 재시작 해준다.

이제 certbot에 GitLab과 Mattermost에 연결된 두 도메인에 대한 검증, 발급 등 자동 설정 명령을 내린다.

$ sudo certbot certonly –webroot –webroot-path=/var/www/letsencrypt -d (gitlab.domain.com)
$ sudo certbot certonly –webroot –webroot-path=/var/www/letsencrypt -d (mattermost.domain.com)

IMPORTANT NOTES:
– Congratulations! …

같은 문구를 두 번 보았다면 설정이 제대로 된 것이다. 중요한 것은 Congratulations! 부분이다.

자 이제 발급된 그리고 자동으로 갱신될 인증서를 GitLab 설정에 추가하고 GitLab을 재설정 한 후 https를 즐기면 된다.

$ sudo vim /etc/gitlab/gitlab.rb

다시 GitLab 설정을 열어, 기존에 설정된 http로 시작하는 url을 https로 수정한다.

[code]
external_url “https://(gitlab.domain.com)”
mattermost_external_url “https://(mattermost.domain.com)”
[/code]

http가 https로 리다이렉트 되는 설정을 추가 한다.

[code]
nginx[‘redirect_http_to_https’] = true
mattermost_nginx[‘redirect_http_to_https’] = true
[/code]

마지막으로 인증서 경로를 설정한다.

[code]
nginx[‘ssl_certificate’] = “/etc/letsencrypt/live/(gitlab.domain.com)/fullchain.pem”
nginx[‘ssl_certificate_key’] = “/etc/letsencrypt/live/(gitlab.domain.com)/privkey.pem”
mattermost_nginx[‘ssl_certificate’] = “/etc/letsencrypt/live/(mattermost.domain.com)/fullchain.pem”
mattermost_nginx[‘ssl_certificate_key’] = “/etc/letsencrypt/live/(mattermost.domain.com)/privkey.pem”
[/code]

$ sudo gitlab-ctl reconfigure

GitLab을 재설정하고 https로 연결이 잘 되는 지 확인하자. 잘 접속이 된다면 모든 과정은 끝났다.

추가적으로 GitLab과 Mattermost가 이미 연동되면서 설정된 url이 http로 되어 있는데 리다이렉트 설정이 되어 있어 큰 문제는 없지만 가급적이면 변경해 주는 것이 좋다.

GitLab에서는 Admin area > Applications > System OAuth applications 에서 수정해주면 되며
Mattermost에서는 System Console > AUTHENTICATION > GitLab 에서 수정해주면 된다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다