본문 바로가기

IT/NAS

[자작NAS] 14. 우분투에 Docker로 GitLab 설치하기

GitLab으로 깃 서버(Git Server)를 구축할 수 있습니다.

직접 호스팅이 가능하기 때문에 프로젝트를 직접 관리할 수 있는 장점이 있습니다.

도커(Docker)를 통해 GitLab을 쉽고 빠르게 설치하는 방법입니다.


1. 도커에서 이미지 받고 설치하기

도커에서 GitLab Community Edition을 다운로드 받을 수 있습니다.

아래 링크에서 GitLab Community Edition을 확인할 수 있습니다.

https://hub.docker.com/r/gitlab/gitlab-ce/

아래 명령어를 입력해서 이미지를 받습니다.

sudo docker pull gitlab/gitlab-ce

도커 컨테이너 생성을 위해서 디렉토리를 생성이 필요하면 추가합니다.

sudo mkdir -p /data/gitlab/config
sudo mkdir -p /data/gitlab/logs
sudo mkdir -p /data/gitlab/data

아래 명령어로 GitLab 컨테이너를 생성할 수 있습니다.

sudo docker run -d -p 443:443 -p 80:80 -p 22:22 --name gitlab -v /data/gitlab/config:/etc/gitlab -v /data/gitlab/logs:/var/log/gitlab -v /data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest

도커 컨테이너 내부에서 사용하는 포트 자체를 변경해서 아래와 같이 입력해서 생성하는 것도 가능합니다.

sudo docker run -d -p 8929:8929 -p 2289:2289 --name gitlab -v /data/gitlab/config:/etc/gitlab -v /data/gitlab/logs:/var/log/gitlab -v /data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest

포트를 변경해서 생성한 경우 아래 명령어를 입력해서 내부에서 사용하는 포트를 변경합니다.

sudo docker exec -it gitlab nano /etc/gitlab/gitlab.rb

/etc/gitlab/gitlab.rb 파일 수정으로 포트 설정을 변경할 수 있습니다.

먼저 웹서버 포트를 변경하기 위해서 Ctrl + W로 주석 처리된 external_url부분을 찾아서 수정합니다.

http://IP주소(URL):8929로 변경하면 됩니다.

다음으로 SSH 포트를 변경을 위해 gitlab_rails['gitlab_shell_ssh_port'] 부분을 검색합니다.

포트를 수정하고 다음으로 이메일 발송을 위한 SMTP 설정을 합니다.

구글 gmail을 사용하려면 아래와 같이 입력하면 됩니다.

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "my.email@gmail.com"
gitlab_rails['smtp_password'] = "my-gmail-password"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'

아웃룩 등의 다른 이메일 설정은 아래 링크에서 확인 가능합니다.

https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/smtp.md

그리고 GitHub와 Bitbucket에서 프로젝트를 가져오기 위해서 아래와 같이 설정합니다.

다음과 같이 gitlab_rails['omniauth_enabled'] 등의 설정을 하면 됩니다.

gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = false
gitlab_rails['omniauth_external_providers'] = ['bitbucket', 'github']

파일을 저장(Ctrl + X, Y, Enter)한 이후에 gmail은 추가 설정이 필요합니다.

아래 링크에서 보안 수준이 낮은 앱 허용: 사용으로 설정해야 합니다.

https://myaccount.google.com/security

하단에 있는 보안 수준이 낮은 앱 허용을 사용으로 변경합니다.

메일 연동까지 완료되면 컨테이너를 다시 시작합니다.

sudo docker restart gitlab

설정이 되면 gitlab-rails console 명령어 이후 테스트용 메일을 보내볼 수 있습니다.

sudo docker exec -it gitlab gitlab-rails console

실행하고 다음과 같이 입력해서 메일이 수신되면 됩니다.

Notify.test_email('destination_email@address.com', 'Message Subject', 'Message Body').deliver_now

받을 주소를 'destination_email@address.com'에 입력해서 확인하면 됩니다.

마지막으로 SSH 사용을 위해서 컨테이너 내부의 SSH 포트 설정을 변경합니다.

nano /etc/ssh/sshd_config

포트를 상단에서 바로 확인이 가능한데 위에서 입력한 2289를 입력하고 저장하면 됩니다.

정상적으로 설정이 완료되면 SSH를 재시작해줍니다.

service ssh restart

SSH 키 등록을 통해서 GitLab을 사용할 수 있게 됩니다.


2. GitLab 접속하기

GitLab이 정상적으로 실행되면 IP와 포트로 GitLab 웹페이지에 접속할 수 있습니다.

가장 먼저 사용할 비밀번호를 입력해서 설정해야 합니다.

비밀번호를 두 번 동일하게 입력하고 Change your password를 누릅니다.

비밀번호를 변경한 관리자 계정의 로그인 정보를 입력하고 Sign in을 누릅니다.

ID

root

Password

입력한 비밀번호

Register를 눌러서 간단하게 새로운 계정을 등록하는 것도 가능합니다.

성공적으로 GitLab이 실행되는 것을 확인할 수 있습니다.


3. GitLab 기본 설정

각 계정은 기본적으로 10개의 프로젝트를 생성할 수 있습니다.

홈화면에서 'You can create up to 10 projects.'라고 표시가 됩니다.

관리자 계정에서는 각 계정의 최대 생성 프로젝트의 수를 설정할 수 있습니다.

관리자 계정은 우측 상단에 설정 버튼이 표시됩니다.

설정 > Overview > Users로 이동하면 각 계정 옆에 Edit 버튼이 표시됩니다.

설정 중간의 Access 하위의 Projects limit라는 설정이 10으로 설정되어 있습니다.

원하는 수치로 변경이 가능하며 하단의 Save Changes를 눌러서 저장합니다.

그 외에도 각 계정의 그룹 생성 권한관리자 권한 등을 추가할 수 있습니다.

관리자 계정에서 모든 계정의 프로젝트 수 제한 설정이 가능합니다.

그리고 가입 제한을 설정할 수 있는데 특정 이메일 도메인으로 가입을 제한하는 것도 가능합니다.

회사 등의 이메일 주소로 가입을 제한할 수 있습니다.

기본적인 GitLab 설정이 완료되면 Git으로 소스 관리가 가능해집니다.