시작하며

DSM 7버전에서는 SVN과 GitLab을 패키지로 지원하지 않습니다.
그렇기 때문에 Docker를 이용하여 설치해야 합니다.

제 경우는 KT 공유기와 Synology NAS(220+)에 램 8기가를 추가한 상태입니다.
공유기 포트포워딩만 조금 다를 뿐 전체적인 방법은 동일할 것이라 생각됩니다.

GitLab을 쾌적하게 쓰시려면 최소 램 4기가 이상으로 설정하시는게 좋습니다. 해당 설정은 컨테이너 생성 후에도 편집이 가능하니 필요에 따라 조정하시면 됩니다.

알림

완성 후 GitLab Repository 주소 경로가 올바르지 않은 이슈가 있지만 아래 와 같이 설정하면 사용하는데 이상은 없을 것이라 생각됩니다.

Docker에 GitLab 설치

패키지 센터에서 도커 설치

  1. 먼저 패키지 센터에서 Docker를 설치합니다.
  2. 도커를 실행 후 레지스트리에서 gitlab 검색 후 gitlab/gitlab-ce를 설치합니다. image
  3. 조금 시간이 지난 후 설치가 완료되면 해당 이미지를 실행합니다. image

도커 이미지 실행 및 설정하기

도커를 이미지를 실행 하면 다음과 같이 설정을 진행해야 합니다.

  1. 먼저 고급 설정에서 자동 재시작 활성화를 합니다. 이렇게 되면 NAS가 죽었다 살아나도 알아서 실행됩니다. image
  2. 포트 설정을 해줍니다. 로컬 포트는 임의로 해도 되지만 컨테이너 포트는 꼭 맞춰주셔야 합니다. image
  3. 그리고 도커의 볼륨을 추가합니다. 공식홈페이지 처럼 컨테이너 볼륨에 저장되는 정보를 NAS 로컬 위치로 매핑 시켜줍니다. image
  4. 이렇게 설정 후 적용을 하면 컨테이너가 만들어 졌습니다. 해당 컨테이너가 결국은 하나의 GitLab을 구동하기 위한 서버라고 보시면 됩니다. image

기본적으로 GitLab의 슈퍼관리자 아이디는 root이며, 패스워드는 방금 설정한 config 폴더의 initial_root_paasword파일에 암호가 있습니다.

해당 암호를 보기 위해선 패키지 센터에서 텍스트 편집기를 설치하신 후 열어주시면 됩니다.
image
image

패스워드를 확인 후 아래와 같이 컨테이너를 실행해주고 GitLab이 빌드(3~5분 정도)가 되면 접속이 가능합니다. image

일단 이렇게 설정하시면 도커를 이용한 GitLab 설치는 정상적으로 끝났습니다.
만약 해당 컴퓨터에서만 쓰실 경우는 NAS가 연결된 상태에서 해당 LAN IP로 접속해도 이용은 가능합니다.

그렇지만 NAS를 쓰는 목적이 어디에서든 접속 가능하기 위함이니.. 조금 더 진행해주셔야 합니다.
HTTP 설정을 하지 않고 바로 HTTPS로 넘어가셔도 무방합니다.

HTTP 설정 및 공유기 포트포워딩

일단 NAS를 쓰시는 분들은 기본적으로 할당받을 수 있는 QuickConnectId가 있습니다. 해당 도메인 주소를 통해 우리는 외부에서 나의 NAS에 접속할 수 있습니다.

하지만 보안상 아무나 이러한 접근을 허용하면 안되죠. 그렇기에 NAS의 설정에서 방화벽 규칙을 허용해줘야 하며, 공유기에서도 해당 포트로 접근 시 NAS에서 허용한 포트로 포트포워딩을 해줘야 합니다.

NAS 방화벽 허용하기

  1. 제어판에서 방화벽에 들어간 후 규칙편집을 선택합니다. image
  2. 방화벽 규칙을 생성합니다. image
  3. 내장된 응용 프로그램 목록에서 선택에서 선택을 눌러주세요. image
  4. 방금 전 만든 GitLab 컨테이너 포트를 선택합니다. image
  5. 활성화 여부를 체크하고 확인을 눌러주세요. image

여기까지 진행됐다면 NAS에 공유기를 물려서 사용하시는 분은 해당 공유기에서 NAS DNS로 접속하시면 접속이 되는 것을 확인 할 수 있습니다.
image

공유기 포트포워딩 적용

제 경우는 KT 홈 허브 공유기가 있기에 해당 설정에 맞춰서 정리 하겠습니다.
일단 IpTime과 달리 허브 기기의 관리자 페이지에 접속하기 위해선 공유기 와이파이 망 내 또는 랜선을 통해 웹페이지에서 172.30.1.254 로 접속해야 합니다.

image

해당 화면에 처음 접속한 경우 기본 아이디와 패스워드는 아래와 같습니다.

1
2
3
4
5
6
구형
ID: ktuser 
PW: megaap
신형
ID: ktuser
PW: homehub

로그인 후 패스워드는 변경해주시는게 좋습니다. 추후 비밀번호를 잊어버리면 초기화하면 됩니다.

먼저 UPnP(Universal Plug and Play) 설정을 해제하겠습니다. UPnP가 있으면 한번 포트 연결이 되면 이후에 포트포워딩을 지워도 적용됩니다. 편리한 기술이지만 보안에 취약한 문제가 있습니다.

image

포트 포워딩 설정은 장치설정 -> 트래픽 관리 -> 포트 포워딩 설정으로 접근하면 됩니다.

image

여기서 중요한 값은 외부포트, 내부 IP 주소, 내부 포트 입니다. 외부에서 들어오는 포트 주소입니다. 해당 포트로 들어오면 허브가 내부 포트로 포트를 변경해줍니다.

외부포트는 임의로 정해도 되며, 내부 포트는 처음 Docker 컨테이너 포트에서 선택했던 포트 값을 지정해주면 됩니다.
내부 IP 주소는 NAS에 연결된 내부 IP 주소를 입력해주면 됩니다.

image

이렇게 설정하시면 이제 http는 어디서든 접속이 가능합니다.

image

HTTPS 적용 및 역방향 프록시 설정

HTTPS를 적용할 예정이면 위으 포트포워딩에 443 포트만 적용하면 됩니다. NAS에서는 역방향 프록시 설정을 할 수 있습니다.
그렇기 때문에 기존에 할당 받은 도메인에 여러 서브도메인을 설정할 수 있습니다.

티스토리로 예를 들면 tistory.com은 하나의 도메인이지만 각각의 사용자는 앞에 user.tistory.com 식으로 자신의 도메인을 할당 받을 수 있는 원리와 비슷하다고 보면 됩니다.

역방향 프록시 설정

  1. 역방향 프록시 설정 화면으로 이동합니다. image
  2. 역방향 프록시 규칙을 설정합니다. 소스는 외부에서 접근하는 도메인 주소로 보시면 됩니다. 호스트이름 앞에 원하는 서브도메인을 입력하고 해당 도메인주소를 연결합니다. 대상은 기존 도메인주소와 도커 HTTP 컨테이너 포트를 입력합니다. image
  3. 공유기 포트포워딩을 통해 HTTPS 포트인 443 포트를 허용해줍니다. image

NAS 인증서 발급

이제 외부에서 접속은 가능합니다. 하지만 HTTPS에서는 해당 도메인주소가 인증된 주소인지 확인하기 위해 인증서 발급이 필요합니다.
일반적으로는 openssl 또는 사설 인증서를 이용하여 인증서를 발급받아야 하지만 NAS에서는 해당 과정 없이 간편하게 인증서를 발급받을 수 있습니다.

  1. 제어판 -> 보안 -> 인증서로 이동후 추가를 눌러줍니다. image
  2. 새인증서를 추가합니다. image
  3. 인증서 이름과 Let’s Encrypt에서 인증서 얻기를 선택합니다. image
  4. 역방향 프록시로 지정한 도메인 주소를 적습니다. 이메일은 본인의 이메일을 선택하시면 됩니다. image
  5. 인증서 화면에서 설정에 들어가서 해당 인증서를 역방향 프록시에서 지정한 도메인과 매칭시킵니다. image

모든 설정이 끝났습니다. 이렇게 하면 외부에서도 HTTPS로 접속이 가능합니다.

기타

GitLab 프로젝트 생성 시 Clone with SSH와 Clone with HTTP의 주소가 프로젝트 레포지토리 주소와 매칭되지 않은 현상이 있습니다.
GITLAB_HOST설정도 해보고, external_url도 지정해봤는데 제대로 되지 않아서 임시적으로 Clone with HTTP를 커스텀하는 방법(링크) 이 있습니다.

  1. 관리자로 로그인 후 좌측 메뉴에서 Admin을 선택합니다.
  2. Setting -> General -> Visibility and access controls 로 이동합니다.
  3. 해당 항목 중 Custom Git clone URL for HTTP(S) 의 값을 HTTPS로 인증한 도메인 주소로 추가합니다. image