[GitLab] GitLab 서버 구축

Uk-Jake·2024년 12월 25일

GitLab

목록 보기
1/2
post-thumbnail

0. 들어가며

이 글에서는 Git 버전관리 시스템 중 하나인 GitLabUbuntu Server에 구축하는 과정을 정리하였습니다.

SW스쿨 클라우드 과정 팀프로젝트를 시작하며 버전 관리 시스템으로 GitLab을 사용하기로 했습니다. GitLab은 GitHub와 달리 자체 서버에서 Git 레포지토리를 관리할 수 있는 기능을 제공하는 버전 관리 시스템입니다.

저희 팀은 현업에서 사용하는 기술들을 최대한 활용하며 프로젝트를 진행하기로 결정했습니다. GitLab은 SaaS(Software as a Service) 형태로 사용할 수도 있지만, Free Tier은 5명까지만 지원하여 SaaS형태가 아닌 제가 운영 중인 홈 서버에 구축하는 방법으로 GitLab을 운영하기로 결정하였습니다.

홈 서버 사양

  • CPU: Intel Pentium CPU G3250 - 2 Core
  • RAM: 8GB
  • Disk: 512GB
  • OS: Ubuntu 22.04 LTS

목차

  1. 서버 도메인 준비
  2. GitLab 설치
  3. GUI 설정
  4. GitLab 보안 인증서 추가 설치

1. 서버 도메인 연결

1.1 AWS Domain 구매 및 레코드 생성

도메인을 구매한 후 아래와 같이 홈 서버와 연결.

  • 도메인: gitlab.ukjake.com
  • 서버 IP: 홈 서버의 공인 IP
  • 레코드 생성: AWS Route53에서 A레코드로 연결
  • 포트포워딩: 홈 서버에서 80번과 443번 포트를 열어줘야 외부에서 접근 가능합니다. 포트포워딩에 대한 상세한 설정은 아래 링크를 참고하세요.

2. GitLab 설치

2.1 Ubuntu 업데이트

GitLab 설치를 시작하기 전에 시스템을 최신 상태로 업데이트.

sudo apt update && sudo apt upgrade -y

2.2 필수 소프트웨어 설치

GitLab 설치를 위해 필요한 소프트웨어를 설치.

sudo apt install -y curl ca-certificates tzdata openssh-server
sudo apt-get install curl openssh-server ca-certificates postfix
  • Postfix 설정: 선택지가 나타나면 Internet Site를 선택.

2.3 GitLab 패키지 추가 및 설치

  1. GitLab 저장소 추가
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
  1. GitLab 설치
sudo apt update
sudo apt-get install gitlab-ce -y

2.4 GitLab 초기 설정

  1. GitLab 구성 파일 편집
sudo nano /etc/gitlab/gitlab.rb
  1. external_url 항목에 서버 IP 또는 도메인 입력

external_url 'http://gitlab.ukjake.com'
  1. 변경 사항 적용
sudo gitlab-ctl reconfigure

2.5 GitLab 서비스 확인

GitLab이 정상적으로 작동 중인지 확인.

sudo gitlab-ctl status
  • 모든 프로그램 상태가 run으로 표시되면 성공적으로 작동 중입니다.


3. GUI 설정

3.1 Root 계정 비밀번호 확인

초기 Root 계정의 비밀번호를 확인.

sudo cat /etc/gitlab/initial_root_password


3.2 Root 계정 로그인

  • 브라우저에서 http://gitlab.ukjake.com에 접속한 후 Root 계정으로 로그인.


3.3 가입 기능 비활성화

  • 가입 기능 끄고 특정 도메인만 허용하고, 인증 메일 사용하도록 설정 권장
  • 설정을 하지 않은 시, 도메인을 알고 있는 외부 사람이 GitLab에 접근할 수 있게 됩니다.


4. GitLab 보안 인증서 추가 설치

sudo apt-get install letsencrypt

sudo mkdir -p /var/www/letsencrypt

sudo nano /etc/gitlab/gitlab.rb
  • ctrl + w : Nginx status 로 검색

  • 변경 사항 적용 & 업데이트 확인
sudo gitlab-ctl reconfigure

sudo letsencrypt certonly -a webroot -w /var/www/letsencrypt -d [gitlab Domain]

sudo letsencrypt certonly -a webroot -w /var/www/letsencrypt -d gitlab.ukjake.com

  • 파일 복사 & 권한 부여
sudo mkdir -p /etc/gitlab/ssl/
sudo cp /etc/letsencrypt/live/gitlab.ukjake.com/fullchain.pem /etc/gitlab/ssl/gitlab.ukjake.com.crt
sudo cp /etc/letsencrypt/live/gitlab.ukjake.com/privkey.pem /etc/gitlab/ssl/gitlab.ukjake.com.key

sudo chmod 600 /etc/gitlab/ssl/gitlab.ukjake.com.*
sudo chown root:root /etc/gitlab/ssl/gitlab.ukjake.com.*
  • 설정 파일에 적용
sudo nano /etc/gitlab/gitlab.rb
  1. external_url에 https로 입력

  1. nginx redirect_http_to_https = true 로 변경

아래 설정 추가

external_url "https://gitlab.ukjake.com"
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.ukjake.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.ukjake.com.key"

  • 변경 사항 적용 & 업데이트
sudo gitlab-ctl reconfigure

참고자료

0개의 댓글