Ubuntu 24.04에 GitLab CE DevOps 관리 스위트 배포
출처: Dev.to
개요
GitLab CE(Community Edition)는 소스 코드 관리, CI/CD 파이프라인, 보안 테스트, 프로젝트 계획을 하나의 애플리케이션에 통합한 완전한 오픈소스 DevOps 플랫폼입니다. 이 가이드는 Docker Compose와 Traefik을 사용해 자동 HTTPS를 처리하면서 GitLab CE를 배포하고, 초기 root 비밀번호를 가져오는 방법을 설명합니다. 완료하면 도메인에서 안전하게 실행되는 자체 호스팅 GitLab 인스턴스를 갖게 됩니다.
1. 프로젝트 디렉터리 구조 만들기
mkdir -p ~/gitlab/{config,logs,data,letsencrypt}
cd ~/gitlab
2. 환경 파일 만들기
nano .env
다음 변수를 추가합니다(값은 본인 환경에 맞게 바꾸세요).
GITLAB_DOMAIN=gitlab.example.com
LETSENCRYPT_EMAIL=admin@example.com
3. 현재 사용자를 Docker 그룹에 추가
sudo usermod -aG docker $USER
newgrp docker
4. Docker Compose 매니페스트 만들기
nano docker-compose.yml
다음 내용을 붙여넣습니다.
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
environment:
DOCKER_API_VERSION: "1.44"
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--certificatesresolvers.le.acme.httpchallenge=true"
- "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.le.acme.email=${LETSENCRYPT_EMAIL}"
- "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./letsencrypt:/letsencrypt
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
hostname: ${GITLAB_DOMAIN}
shm_size: '256m'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://${GITLAB_DOMAIN}'
nginx['listen_port'] = 80
nginx['listen_https'] = false
nginx['proxy_set_headers'] = {
"X-Forwarded-Proto" => "https",
"X-Forwarded-Ssl" => "on"
}
gitlab_rails['gitlab_shell_ssh_port'] = 2222
ports:
- "2222:22"
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
labels:
- "traefik.enable=true"
- "traefik.http.routers.gitlab.rule=Host(`${GITLAB_DOMAIN}`)"
- "traefik.http.routers.gitlab.entrypoints=websecure"
- "traefik.http.routers.gitlab.tls=true"
- "traefik.http.routers.gitlab.tls.certresolver=le"
- "traefik.http.services.gitlab.loadbalancer.server.port=80"
5. 서비스 시작
docker compose up -d
6. 서비스가 정상적으로 실행됐는지 확인
docker compose ps
GitLab은 최초 시작 시 초기화에 몇 분 정도 걸릴 수 있습니다.
7. 초기 root 비밀번호 가져오기
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
참고: 이 파일은 24시간 후 자동으로 삭제되므로 비밀번호를 바로 기록해 두세요.
8. 로그인
- URL:
https://gitlab.example.com - 사용자명:
root - 비밀번호: 위에서 가져온 값
첫 로그인 후 root 비밀번호를 즉시 변경하세요.
9. 다음 단계
GitLab CE가 이제 HTTPS를 통해 안전하게 서비스되고 있습니다. 여기서 할 수 있는 일은 다음과 같습니다.
- 그룹과 프로젝트를 생성하고 팀원을 초대하기
- GitLab Runner를 설정해 CI/CD 파이프라인 실행하기
- 이메일 알림을 위한 SMTP 설정 및 SSO를 위한 SAML/OIDC 구성하기
추가 팁과 보다 자세한 단계별 안내는 원문 기사인 Vultr Docs를 참고하세요.