코드를 관리/공유 하는 서비스로는 GitHub나 GitLab 같은 서비스들이 있다. 무료로 사용 가능한 플랜들도 있지만, 무료 계정은 모든 코드가 공개된다. 대중에 공개하고 사용하고 싶을 땐 그걸로도 괜찮지만 개인적인 프로젝트들을 관리 할 땐 굳이 세상에 공개하고 싶지 않은 니즈가 있기도 하다.

생각보다 매년 GitHub에 자기 코드를 올리면서 인증 정보까지 함께 포함해서 올려버려서 계정이 해킹 당하는 사고가 일어나기도 한다.

굳이 공개는 하고 싶지 않지만 git repo 관리를 개인적으로 하고 싶다면 NAS를 활용하는 방법이 있다. 필자는 Synology의 NAS를 사용하고 있기 때문에 Synology 기준으로 이 글을 작성하지만, 다른 NAS에서도 비슷하게 할 수 있다고 생각한다.

이 글에서는 WebDav를 사용한 git push/pull를 기준으로 작성하였다. NAS에서 WebDav를 사용할 수 있게 설정이 되어있어야 한다. WebDav가 아닌 ssh로 할 때도 방법은 같다.


# 새로운 git repo 생성

우선 자신의 컴퓨터에 새 폴더를 만들고 터미널을 사용해서 작성한 새 폴더의 디렉토리로 이동해 준다.

그리고 아래 커맨드를 쳐서 아무것도 안들어 있는 리포지토리를 만들어 준다.

git init --bare

그 다음 아래 커맨드를 쳐서 info/refs 파일을 리포지토리에 추가한다.

git update-server-info

이걸로 아무것도 안 들어있는 리포지토리 생성이 완료되었다.


# 생성한 리포지토리를 NAS에 업로드

git repo 설정이 끝난 폴더를 자신의 NAS에 업로드 해 준다. 업로드가 끝나면 폴더 이름을 바꿔준다. 이름은 뭐든 상관 없고 마지막에 .git을 붙여주면 된다. empty.git 같은 이름으로 해 주면 추후에도 알아보기 쉽다.

이제 새로운 프로젝트를 git repo에 관리하고 싶을 때 마다 empty.git를 복사 붙여넣기 하고 이름을 <프로젝트명>.git으로 바꾸는 방식으로 새로운 리포를 만들 수 있다.

구성의 예제


# git push/pull

이제 NAS 상에는 새로운 리포지토리를 만들었으니, 자신의 프로젝트 리포지토리를 새롭게 만든 리포지토리에 연결해주기만 하면 된다.

일반적으로 SSL 설정이 되어있는 경우를 예로 들면 아래와 같은 커맨드를 사용한다.

git remote add origin https://<사용자ID>@<NAS주소>:5006/<리포지토리 디렉토리>

Synology의 기본 설정은 SSL WebDav의 경우 포트 5006를 사용하기 때문에 5006이라고 썼지만 다른 포트번호로 설정했다면 해당 포트번호를 사용해야한다.

사용자명이 test, NAS주소가 test.myds.me, 리포티토리 디렉토리가 home/git-repos/test.git이라면 아래와 같은 커맨드가 된다.

git remote add origin https://test@test.myds.me:5006/home/git-repos/test.git

그리고 나서 프로젝트를 push 해주면 그걸로 완성.

git push origin master

이걸로 프로젝트 리포지토리를 NAS에서 관리 할 수 있게 된다.

만약 NAS에 로컬IP로 접속하고 있는 경우에 git pull이나 clone을 하고 싶은 경우는 ssl 체크를 무시하는 커맨드를 추가해서 사용한다.

git -c http.sslVerify=false pull

clone 할 때도 마찬가지.

git -c http.sslVerify=false clone https://<사용자ID>@<NAS주소>:5006/<리포지토리 디렉토리>

개인적으로 NAS를 사용하고 있다면 프로젝트 관리에 NAS를 활용하는 것도 괜찮다고 생각한다. 이왕 NAS가 있는데 적극적으로 활용해보자!