Dilluti0n의 블로그

만든 스크립트를 github 에 올리기 싫어서 집에 있던 안쓰는 late 2016 macbook pro 를 활용해 git 서버를 셀프 호스팅하기로 했다. 추후 Linux 나 freeBSD 를 설치할 수 도 있겠지만 일단 macOS 에 지우기 싫은 예전 파일들이 있어서 그대로 사용하려고 한다.

git 서버는 별다른 서버 프로그램이나 프로토콜을 사용하지 않고 (git 프로토콜이라는 게 있긴 한데, 이 프로토콜을 사용하도록 설정하면 아무나 저장소에 push 할 수 있어서 거의 쓰이지 않는 듯 해 보인다.) 기존의 ssh 나 http 프로토콜을 사용해 호스팅 가능하다. 서버측에서 해줘야 하는 것은 git 이란 계정을 만들고, 그 계정의 홈 디렉토리에 <repository name>.git 이란 bare repository 를 생성하는 것이다. 계정 이름은 git 이 아니어도 되지만, ssh 연결 시에 git@<domain> 이라는 url 을 사용하고 싶으면 git 으로 하자.

계정 생성이 조금 혼동스러울 수 있는데, 시스템 설정 gui 에 들어가서 만들 수도 있지만, 이 방법으로 만들면 쓸데없는 디렉토리들도 같이 /Users/git 디렉토리에 생성되므로, 커맨드 라인에 아래 명령어들을 입력해 계정과 홈 디렉토리만 추가하도록 하자.

sudo dscl . -create /Users/git UserShell /bin/bash
sudo dscl . -create /Users/git RealName "Git User"
sudo dscl . -create /Users/git UniqueID 510
sudo dscl . -create /Users/git PrimaryGroupID 20
sudo dscl . -create /Users/git NFSHomeDirectory /Users/git
sudo mkdir /Users/git
sudo chown git:staff /Users/git

추가적으로 계정을 CLI 전용 (즉 gui 로그인 매니저에서 보이지 않도록) 설정하려면,

sudo dscl . -create /Users/git IsHidden 1

명령어를 입력하면 된다.

계정을 생성했으면

sudo passwd git

으로 비밀번호를 만들고,

login git

으로 git 계정으로 로그인 한 뒤에

mkdir konachan.git
cd konachan.git
git init --bare

로 bare 리포지토리를 생성하자. 이제 로컬 컴퓨터에서 ssh 프로토콜을 통해 이 저장소로 push 할 수 있다. 참고로 bare 리포지토리 라는건 저장소를 checkout 하지 않는다는 뜻으로, 체크아웃된 데이터 없이 커밋들만 .git 디렉토리에 위치하게 된다.

ssh 설정과 http 및 https 설정은 추후 포스팅에서 다루도록 하겠다.