Gitlab 안전하게 설치하는 방법 (튜토리얼)

프로젝트 관리를 위해 GitLab을 사용하기로 결정했지만, GitLab을 안전하게 설치하는 방법을 모르겠습니까? GitLab을 설치하는 것은 복잡한 과정이며, 올바르게 수행하지 않으면 데이터가 위험에 빠질 수 있습니다. 하지만 걱정하지 마세요, 여기로 오신 것을 환영합니다!

이 튜토리얼에서는 GitLab을 안전하게 설치하는 전체 과정을 배울 수 있으므로 SSL 암호화를 설정하고 GitLab을 최적의 성능으로 구성할 수 있습니다.

흥미로우신가요? 바로 시작해 보세요!

전제 조건

이 튜토리얼은 실습을 위한 것입니다. 따라하려면 다음 사항이 필요합니다:

  • A Linux server with root access – This demo uses Ubuntu 20.04 LTS, but any Linux distribution will work.

GitLab Community Edition 설치

FQDN(Fully Qualified Domain Name)과 서버를 준비했으므로, 이제 GitLab을 설치할 차례입니다. GitLab을 설치하는 여러 가지 방법이 있지만, 이 튜토리얼에서는 개발자가 제공하는 GitLab 저장소를 사용하여 설치하는 방법에 초점을 맞춥니다.

GitLab은 두 가지 배포로 제공됩니다:

  • GitLab Community Edition (CE) – 오픈 소스 및 커뮤니티 지원 버전을 선호하는 사용자를 위한 것입니다.
  • GitLab Enterprise Edition (EE) – GitLab Enterprise Edition이 제공하는 추가 기능이 필요한 사용자를 위한 것입니다.

그러나 이 데모에서는 개발 환경에서 애플리케이션을 테스트하기 위해 Community Edition을 사용합니다.

1. 터미널을 열고 아래의 apt update 명령을 실행하여 시스템이 모든 최신 소프트웨어 업데이트에 액세스할 수 있는지 확인합니다.

apt update 명령은 apt 유틸리티가 사용하는 패키지 인덱스 파일을 업데이트하여 사용 가능한 패키지에 대한 정보를 검색합니다.

sudo apt update -y
Updating your package index

2. 다음으로, 아래의 apt install 명령을 실행하여 GitLab 설치에 필요한 다음 필수 종속성(curl)을 다운로드하고 설치합니다:

  • openssh-server 패키지 – 원격 로그인 액세스를 제공하기 위한 OpenSSH 서버 데몬 및 관련 도구(호스트 키 관리 도구 및 서버 등)가 포함되어 있습니다.
  • ca-certificates 패키지 – CA 인증서 목록을 포함하고 있습니다. 이 패키지는 서버에서 HTTPS 지원을 활성화하기 위한 필수 파일을 제공합니다.
sudo apt install curl openssh-server ca-certificates -y
Installing the required dependencies

3. 아래의 curl 명령을 실행하여 GitLab에서 설치 스크립트를 다운로드하십시오 (curl) (https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce). 그런 다음 명령은 설치 스크립트를 셸 스크립트로 저장하고 슈퍼 사용자로 실행합니다 (sudo bash).

sudo curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

curl 명령이 완료되면 다음 출력이 표시됩니다.

Adding the GitLab repository to your system

4. 아래의 apt-cache 명령을 실행하여 GitLab 저장소가 성공적으로 추가되었는지 확인하십시오.

apt-cache policy docker-ce
Verifying if GitLab Repository Exists

5. 이제 apt update 명령을 다시 실행하여 사용 가능한 패키지 목록을 업데이트하십시오. 이 명령은 GitLab을 설치할 때 시스템이 새로 추가된 GitLab 저장소를 사용하도록 보장합니다.

sudo apt update -y

6. 마지막으로 아래의 apt install 명령을 실행하여 시스템에 GitLab (gitlab-ce)을 설치하십시오.

sudo apt install gitlab-ce -y
Installing GitLab

설치는 시간이 걸리겠지만 설치가 완료되면 다음 출력이 표시됩니다. 이 출력은 이제 시스템에 GitLab이 성공적으로 설치되었음을 확인합니다.

Getting the Welcome Page after Installing GitLab

GitLab 설치 구성

이제 시스템에 GitLab이 설치되어 있지만 GitLab을 사용하기 전에 몇 가지 구성 변경이 필요합니다. GitLab의 구성 파일(/etc/gitlab/gitlab.rb)에는 GitLab 서버의 환경과 관련이 없는 전역 설정이 포함되어 있습니다.

GitLab의 구성 파일을 수정하여 FQDN 도메인 이름 및 도메인에 대한 안전한 연결을 설정합니다.

1. 즐겨 사용하는 텍스트 편집기에서 /etc/gitlab/gitlab.rb 구성 파일을 엽니다.

GitLab 구성 파일에서 가장 중요한 항목 중 하나는 아래에 표시된 external url 지시문입니다. 이 지시문을 통해 사용자가 웹 브라우저를 통해 GitLab에 액세스할 수 있습니다.

external url 지시문의 값을 http://gitlab.example.com에서 https://gitlab.yourdomain.com(여기서 yourdomain.com은 FQDN 도메인 이름입니다)로 변경합니다.

Setting FQDN domain name in the external URL directive

2. 다음으로, 아래에 위치한 Let’s Encrypt 통합 섹션으로 이동하여 다음과 같이 지시문을 구성합니다:

  • letsencrypt['enable'] 지시문의 주석을 제거하여 nil에서 true로 값을 변경합니다. 이 지시문은 GitLab이 서버에 자동으로 HTTPS를 구성하도록 지시합니다.
  • letsencrypt['contact_emails'] 지시문의 주석을 제거하고 이메일 주소를 값으로 입력합니다. Let’s Encrypt는 SSL 인증서를 갱신해야 할 때 이 이메일 주소를 사용하여 당신에게 연락할 것입니다(매 90일마다).
  • 변경 사항을 저장하고 편집기를 종료하십시오.
Configuring Let’s Encrypt Integration

마지막으로, 아래 명령을 실행하여 재구성하고 변경 사항을 GitLab의 /etc/gitlab/gitlab.rb 구성 파일에 적용하십시오.

sudo gitlab-ctl reconfigure
Reconfiguring GitLab

SSL 연결을 위한 방화벽 구성

이제 GitLab을 구성했으므로, 서버로의 SSL 및 보안 연결을 허용하기 위해 방화벽 규칙을 구성해야 합니다. Ubuntu에서 방화벽 규칙을 관리하는 기본 프로그램은 Uncomplicated Firewall (UFW)입니다.

서버를 방화벽 뒤에 배치하면 SSL 연결을 위해 HTTP 포트 80 및 HTTPS 포트 443을 열어야 합니다.

GitLab 서버의 OpenSSH, HTTP, 및 HTTPS 포트를 열기 위해 다음 명령을 실행하십시오.

sudo ufw allow OpenSSH && sudo ufw allow http && sudo ufw allow http
Adding new firewall rule

이제 다음 명령을 실행하여 방화벽의 상태를 확인하십시오.

sudo ufw status 
Checking the status of your firewall

웹 인터페이스를 통한 GitLab 보안 설정

방화벽이 설정되었지만, GitLab이 안전한 것일까요? 보안 층을 추가하는 것은 결코 지나침이 없습니다. 따라서 웹 인터페이스를 통해 GitLab 설치를 더욱 안전하게 만들어 보겠습니다.

1. 좋아하는 웹 브라우저를 열고 GitLab 서버로 이동하십시오. 예를 들어, http://gitlab.example.com, 여기서 example.com은 FQDN 도메인 이름입니다.

CGitLab 서버에 접근할 때는 보안을 강화하기 위해 Chrome 또는 Firefox 중 하나를 선택하세요. 이러한 웹 브라우저는 자체 HTTP/HTTPS 프로토콜을 사용하여 보안 정책을 강제로 적용합니다.

아래에서는 GitLab 로그인 페이지를 볼 수 있습니다.

Accessing the GitLab Log in screen

2. 그 다음 주소 표시줄 옆에 있는 자물쇠 아이콘 (왼쪽 상단)을 클릭하면 연결 상태를 볼 수 있습니다. 이 데모에서는 연결이 안전함이라고 표시되어 있으며, 이는 서버와의 연결이 HTTPS를 통해 이루어진다는 것을 나타냅니다.

Checking your connection status

터미널로 돌아가서 아래의 cat 명령을 실행하여 initial_root_password를 얻으세요.

기본적으로 GitLab 설치에는 자동으로 생성된 초기 루트 비밀번호가 있습니다.

 cat /etc/gitlab/initial_root_password

초기 루트 비밀번호를 복사하여 안전한 장소에 저장하세요. 이 비밀번호를 사용하여 GitLab에 로그인할 것입니다 (4단계).

Getting your initial root password

4. 웹 브라우저로 돌아가서 사용자 이름으로 root를 입력하고 초기 루트 비밀번호를 비밀번호란에 입력하세요. 로그인을 클릭하여 GitLab 서버에 로그인하세요.

Logging in to your GitLab server

GitLab 서버에 로그인한 후에는 브라우저가 아래와 같이 GitLab 대시보드로 리디렉션됩니다.

Viewing GitLab Dashboard

GitLab 계정에 SSH 키 추가하기

웹 인터페이스 외에도 안전한 방식으로 명령 줄 환경에서 GitLab에 접근할 수 있습니다. 어떻게 할까요? 먼저 SSH 키를 계정에 추가해야합니다. 이렇게 하면 비밀번호를 입력하지 않고 터미널에서 명령을 실행하여 GitLab에 액세스 할 수 있습니다.

1. ssh-keygen 명령을 실행하여 SSH 연결에 사용할 수 있는 SSH 키 쌍을 생성합니다. 프롬프트에서 Enter 키를 눌러 SSH 키의 기본 저장 위치 (/root/.ssh/id_rsa)를 유지하고 패스프레이즈를 추가하지 않습니다.

ssh-keygen
Generating an SSH keypair

2. 아래 cat 명령을 실행하여 공개 키를 화면에 인쇄합니다. ssh-rsa 공개 키 문자열 전체를 복사하고 안전한 곳에 저장하세요. 나중에 이 공개 키를 GitLab에 추가할 것입니다 (세 번째 단계).

 cat ~/.ssh/id_rsa.pub
Viewing the entire ssh-rsa public key string

3. 브라우저에서 GitLab 대시보드로 돌아가 다음과 같이 공개 키를 추가하세요:

  • SSH 키 메뉴를 클릭하여 사용자 설정 페이지의 왼쪽 패널에서 SSH 키 페이지에 액세스합니다.
  • 복사한 공개 키(두 번째 단계)를 필드에 붙여넣으십시오, 아래에 표시된대로
  • 키의 제목 필드에 키의 선호하는 이름을 제공하세요. 그러나 이 데모에서는 이름이 ATAGitHub로 설정됩니다.
  • 계정에 공개 키를 추가하려면 키 추가를 클릭하세요.
Adding SSH Keys

공개 가입 비활성화

추가 보안을 위해 GitLab에서 공개 가입을 비활성화할 수 있습니다. 왜냐하면? GitLab의 공개 가입 기능을 사용하면 누구나 GitLab 서버에 계정을 만들 수 있습니다. 이 기능을 비활성화하면 서버에 대한 브루트 포스 공격을 피할 수 있습니다.

1. GitLab 대시보드에서 메뉴를 클릭한 다음 관리자를 클릭하여 관리자 패널에 액세스하고, 설정을 클릭하여 관리자 패널의 일반 설정 페이지에 액세스합니다(단계 두).

Viewing the GitLab Admin panel

2. 가입 가능 옵션을 가입 제한 섹션에서 비활성화합니다. 이렇게 하면 GitLab의 공개 가입 기능이 비활성화됩니다.

Disabling GitLab Public Sign-ups

3. 아래로 스크롤하여 변경 사항 저장을 클릭하여 가입 제한 설정에 대한 변경 사항을 저장합니다.

Saving your changes

4. 마지막으로 계정에서 로그아웃하고 GitLab 로그인 화면으로 이동합니다.

아래에서 확인할 수 있듯이 지금 등록 링크가 사라졌습니다.

Verifying if the Register now link is gone

GitLab 서버 테스트

이 시점에서 이미 GitLab 서버를 구성하고 보안 설정했으며, 그것은 훌륭합니다! 그러나 GitLab 서버가 실제로 작동하는지 어떻게 알 수 있을까요? GitLab 대시보드를 통해 GitLab 프로젝트를 생성하고 프로젝트를 서버에 복제하여 서버를 테스트합니다.

1. GitLab 대시보드에서 검색 상자 옆의 플러스 (+) 아이콘을 클릭한 다음 아래에 표시된 대로 새 프로젝트를 클릭하여 새 GitLab 프로젝트를 생성합니다.

Adding New GitLab Project

2. 다음으로, 원하는 프로젝트 이름을 제공합니다. 그러나 이 데모에서는 프로젝트 이름을 ATA GitLab로 설정하고 프로젝트 슬러그를 (atagitlab)로 설정합니다.

프로젝트를 만들려면 프로젝트를 클릭합니다.

Creating a new project

3. 터미널로 돌아가서 다음 명령어를 실행하여 Git의 전역 사용자 이름(--global user.name)과 이메일(--global user.email)을 설정하세요. 각 사용자 이름과 이메일은 GitLab 서버의 모든 계정에서 전역적으로 고유해야 합니다.

git config --global user.name "ATA"
git config --global user.email "[email protected]"

4. 이제 아래의 git clone 명령어를 실행하여 ATA GitLab 프로젝트를 현재 디렉토리에 복제하세요. yourdomain.com을 FQDN으로 대체하세요.

git clone http://gitlab.yourdomain.com/root/ATA-GitLab.git

모든 것이 잘 되었다면, 아래와 유사한 출력이 표시될 것입니다. 복제가 완료되면 ATA-GitLab이라는 새로운 디렉토리가 생성됩니다.

Cloning the ATA GitLab project

5. 마지막으로, ls 명령어를 실행하여 ATA-GitLab 디렉토리가 존재하는지 확인하세요.

ls

새로운 ATA GitLab 프로젝트를 복제할 수 있고 ATA GitLab 디렉토리가 존재하는 것으로 보아, 아래의 출력은 GitLab 서버가 제대로 작동함을 확인합니다.

Listing new directory ATA-GitLab

결론

이 튜토리얼에서는 Ubuntu Linux 시스템에 안전한 GitLab 설치를 수행하는 방법을 배웠습니다. 웹 인터페이스를 통해 GitLab 서버를 안전하게 설정하고, GitLab 계정에 SSH 키를 추가하고, GitLab 서버가 작동하는지 테스트하는 방법을 확인했습니다.

이 새로운 지식을 활용하여, 아마도 GitLab을 사용한 자동화된 지속적 통합(CI) 시스템을 설정하는 방법을 배우고 싶을 수도 있습니다.

Source:
https://adamtheautomator.com/install-gitlab/