이 글에서는 Git 버전관리 시스템 중 하나인 GitLab을 Ubuntu Server에 구축하는 과정을 정리하였습니다.
SW스쿨 클라우드 과정 팀프로젝트를 시작하며 버전 관리 시스템으로 GitLab을 사용하기로 했습니다. GitLab은 GitHub와 달리 자체 서버에서 Git 레포지토리를 관리할 수 있는 기능을 제공하는 버전 관리 시스템입니다.
저희 팀은 현업에서 사용하는 기술들을 최대한 활용하며 프로젝트를 진행하기로 결정했습니다. GitLab은 SaaS(Software as a Service) 형태로 사용할 수도 있지만, Free Tier은 5명까지만 지원하여 SaaS형태가 아닌 제가 운영 중인 홈 서버에 구축하는 방법으로 GitLab을 운영하기로 결정하였습니다.
도메인을 구매한 후 아래와 같이 홈 서버와 연결.

gitlab.ukjake.comGitLab 설치를 시작하기 전에 시스템을 최신 상태로 업데이트.
sudo apt update && sudo apt upgrade -y
GitLab 설치를 위해 필요한 소프트웨어를 설치.
sudo apt install -y curl ca-certificates tzdata openssh-server
sudo apt-get install curl openssh-server ca-certificates postfix
Internet Site를 선택.curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt update
sudo apt-get install gitlab-ce -y
sudo nano /etc/gitlab/gitlab.rb
external_url 항목에 서버 IP 또는 도메인 입력
external_url 'http://gitlab.ukjake.com'
sudo gitlab-ctl reconfigure
GitLab이 정상적으로 작동 중인지 확인.
sudo gitlab-ctl status
run으로 표시되면 성공적으로 작동 중입니다.

초기 Root 계정의 비밀번호를 확인.
sudo cat /etc/gitlab/initial_root_password

http://gitlab.ukjake.com에 접속한 후 Root 계정으로 로그인.

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

아래 설정 추가
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
