본문 바로가기

개발

[Synology NAS DS1522+] Gitlab 호스팅 시 external_url 설정법

Gitlab 호스팅에 관한 방법은 아래 링크를 참고해주세요
https://developer0223.tistory.com/28

 

[Synology NAS DS1522+] Container Manager를 이용한 Gitlab 호스팅

Synology NAS를 도입한 이후 서버PC에서 호스팅 중이던 Gitlab을 NAS로 Migration하는 과정을 옮겨 적고자 합니다.굳이 설명이 필요하지 않은 간단한 부분들은 빠르게 넘기도록 하겠습니다. Synology NAS의 D

developer0223.tistory.com

 

 

Container Manager를 이용해 Gitlab을 설치 후 아래와 같은 2개의 불편한 점이 발생했다.
첫째는 Clone을 위해 링크를 복사하려고 하면 도메인 주소나 IP:Port가 아닌
http://gitlab-tistory/root/test-project.git
와 같이 Container Manager에 등록한 컨테이너 이름이 등록된다는 것이다.
두 번째 문제는 Gitlab Issue 등에 이미지나 동영상을 등록해도 미리보기가 되지 않고
http://gitlab-tistory/-/project/1/uploads/3cb0aba37da02ce35ee036b3c3ead125/image.png
와 같은 주소로 등록되어 이미지를 제대로 볼 수 없다는 것이다.

해당 주소에 있는 gitlab-tistory를 IP:Port로 변경하면 문제가 해결되지만, 매번 변경을 해서 열람해야하는 문제가 있었다.

Clone 주소가 IP로 설정되지 않고 Container의 이름으로 설정되는 문제
Issue의 댓글로 이미지를 등록했을 때 제대로 보이지 않는 문제

 

여러 방면으로 리서치해본 결과 /etc/gitlab/gitlab.rb 파일의 external_url을 IP:Port로 변경해주면 된다고 합니다.
하지만 NAS로 호스팅된 Container Manager에서 해당 방법으로 변경할 경우
502 Bad Gateway 오류가 나면서 홈페이지가 제대로 로딩되지 않습니다.
IP:Port가 아닌 IP만으로 external_url을 변경한 경우에는 Gitlab이 제대로 부팅되기는 했으나
위와 같은 오류가 해결되지는 않았습니다.

 

이런 저런 삽질을 한 결과 gitlab에서 호스팅 시 사용하는 nginx의 listen_port와
gitlab_rails의 gitlab_shell_ssh_port를 변경해줘야 한다고 합니다.

 

해당 gitlab 컨테이너의 터미널 창에 접속합니다.

 

`vi /etc/gitlab/gitlab.rb` 명령어를 통해 gitlab.rb 파일을 엽니다.

 

NAS로 Gitlab을 설정할 정도면 터미널 명령어와 VI에 대한 기본 지식은 있다고 생각해 생략하겠습니다.
32줄에 있는 #external_url 'GENERATED_EXTERNAL_URL'을
external_url 'http://192.168.1.142:40080'과 같이 변경합니다.
IP주소와 PORT는 본인이 컨테이너에 설정한대로 작성하면 됩니다.
(만약 Public IP로 설정하고 싶으시면 해당 IP로 설정하신 뒤 공유기 포트포워딩 설정을 하시면 됩니다.)

 

1755라인의 # nginx['listen_port'] = nil 부분을
nginx['listen_port'] = 80로 변경합니다.
nginx가 사용하는 기본 포트인데, 이렇게 설정해주지 않으면
해당 포트가 우리가 설정한 40080으로 바뀌며 문제가 발생한다고 합니다.

 

705라인의 # gitlab_rails['gitlab_shell_ssh_port'] = 22를
gitlab_rails['gitlab_shell_ssh_port'] = 40080으로 변경합니다.
(40080대신 본인이 설정한 포트로 바꿔주세요)

 

wq를 이용해 저장하고 종료해주세요

 

이후 터미널에서
gitlab-ctl reconfigure
명령어를 통해 Gitlab을 재설정해주세요.

 

재설정이 완료되었다면
gitlab-ctl restart
명령어를 통해 Gitlab을 재시작해주세요.

 

Gitlab이 부팅이 완료될 동안 잠시 기다린 뒤
마지막으로 gitlab-ctl status 명령어를 사용했을 때 모든 요소들이 run 상태면 성공입니다.

 

URL도 제대로 설정되었고, 이미지도 정상적으로 표시됩니다.

 

감사합니다.