편(編)/설치

gitlab 설치

쪼랩전사 2021. 9. 20. 21:55
728x90

개요

gitlab은 git 기반 코드 저장소이다.
필자는 gitlab을 외부에 코드를 공개하기는 싫고, 나 혼자 쓰고 싶을 때 사용한다.
이 포스트에서는 podman을 이용하여 gitlab을 설치하는 방법에 대해 다룬다.

요구 사항

CPU core: 2개 이상

RAM: 4G 이상

라즈베리파이 같은 경우, gitlab 구동은 굉장히 어렵다.
차라리 gogs같은 다른 코드 저장소를 사용하기를 바란다.
단, gogs는 gitlab과 같은 다양한 기능을 제공하지 않는다.

host 설정

host 설정은 보통 안 해도 된다.
그런데, OS에 따라 localhost가 설정 안 되어 있을 수가 있다.
설정 안 되어 있을 때만 설정하면 된다.

  • /etc/hosts
127.0.0.1 localhost

podman 설치

[편(編)/설치] - podman 설치

gitlab 설치

sudo mkdir -p /srv/gitlab/{config,logs,data}
sudo podman run --detach \
--publish 6015:22 --publish 80:80 \
--name gitlab \
--restart always \
--privileged \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
docker.io/gitlab/gitlab-ce:latest

옵션 설명

옵션 설명 예시
name container 이름 gitlab
publish 외부 port 공개 6015:22, 80:80
restart always 재부팅 혹은 컨테이너 오류 발생하는 경우, 자동 재시작  
volume 볼륨 영속성 제공 /srv/gitlab/config:/etc/gitlab, /srv/gitlab/logs:/var/log/gitlab, /srv/gitlab/data:/var/opt/gitlab

gitlab 설정

  • /srv/gitlab/config/gitlab.rb
    • 주의: external_url은 자신의 IP 혹은 hostname으로 변경해야 한다.
external_url 'http://127.0.0.1'
gitlab_rails['gitlab_shell_ssh_port'] = 6015
gitlab_rails['lfs_enabled'] = true;
  • 설정 적용
sudo podman exec -it gitlab gitlab-ctl reconfigure

podman 재실행 데몬 실행

sudo systemctl enable --now podman-restart

gitlab 비밀번호 리셋

위에서 설정한 external_url로 홈페이지 접속이 되는 것이 확인되면, 아래 명령을 통해 root의 비밀번호를 초기화한다.

sudo podman exec -it gitlab gitlab-rake "gitlab:password:reset"

실패들

  1. podman은 --volume 옵션의 source를 생성하지 않는다.
    그러므로, 직접 source 디렉터리를 만들어줘야 한다.
    docker는 자동으로 만들어줘서 podman 역시 그럴 거라고 착각했다.
  2. 예전 버전의 gitlab에서는 초기 설치 시, root의 비밀번호를 세팅하는 과정이 웹 UI에 있었다.
    하지만 버전이 올라가면서, root의 비밀번호 초기화가 웹 UI에서 빠졌다.
    이거 때문에 뭘 잘못한 줄 알고 좀 헤맸다.
  3. podman은 --restart always 옵션을 적용하기 위해서 podman-restart 서비스를 enable 해줘야 한다. docker는 기본적으로 재실행해줘서 몰랐다.
  4. gitlab 로그에 localhost가 no such host라는 에러를 뿜어내며, 실행되지 않는다.
    OS에 따라 /etc/hosts에 localhost 설정을 기본으로 해주지 않는 OS가 있었다. 해주면 된다.

마치며

gitlab은 git기반으로 코드를 쉽게 관리할 수 있게 해줄 뿐 아니라, runner를 통해서 테스트 및 배포를 자동화해준다. 이러한 환경에서 개발할 수 있다는 것은 정말 큰 축복이다.

gitlab에게 감사한다.

'편(編) > 설치' 카테고리의 다른 글

kubernetes 설치  (0) 2021.10.25
kubernetes 설치 - kubespray  (0) 2021.10.04
podman 설치  (0) 2021.09.14
nextcloud 설치  (0) 2021.09.06
docker 설치  (0) 2021.08.25