Server

나만의 git 서버 만들기 (100% private 모드)

HoodieJun 2021. 3. 25. 17:01

버전 관리 프로그램 git입니다. 저는 이 프로그램 덕분에 너무 편안하게 업무를 하고 있는데요. 개발자는 아니지만 글을 쓰거나 피피티, 엑셀 자료 등 다양하게 파일을 손쉽게 올리고 관리해왔습니다. 그래서 업무용으로도 많이 쓰곤 하는데요. 제 온전한 개인용 git 서버를 갖고 싶다는 생각을 하고 있었습니다.

가장 많이 이용하는 github는 얼마전까지만 해도 private 모드를 사용하려면 돈을 내야 했는데 최근 들어서 github가 개인용으로 숨길 수 있는 private 모드를 무료 이용자에게도 지원하기 시작했습니다. 그래도 뭔가 찜찜하고 용량 걱정 없이 데이터를 제가 완전히 관리하고 싶어서 저만의 git 서버를 구축하기로 했습니다.

git서버를 구축하는데에는 크게 두 가지 방법이 있습니다.

1. gitlab에서 제공하는 소스로 github와 비슷하게 웹서버를 운용하는 방법과

2. 이쁜 인터페이스는 없지만 가벼운 cli 방식의 git 서버가 있습니다.

처음에 gitlab으로 도전했는데 구형 노트북으로 사용하는 저의 가냘픈 홈서버는 gitlab을 구동하기 버거웠습니다. 리소스를 꽤 많이 먹더라고요. 듀얼코어에 램 4기가 이상은 되어야 쾌적하게 쓸 수 있는 것 같습니다.

그래서 그냥 쌩(?) git 서버를 만들기로 했습니다.

1. 설치

먼저 이용하고자 하는 서버에 git을 설치해줍니다. 보통 리눅스에 기본으로 탑재되어있습니다.

# Debian / Ubuntu
sudo apt install git

# Fedora
sudo dnf install git

# Arch
sudo pacman -S git

# windows
choco install git

2. 유저생성

useradd -m git -s /bin/bash

-m 은 홈 디렉터리를 만드는 옵션이고 -s는 기본 쉘을 지정합니다.

3. git에 접근하기 위한 ssh 세팅

ssh 이용법입니다! 초기 ssh 세팅하기 - putty는 이제 그만! 파워쉘에서 바로 접속하자 (키생성, config) (tistory.com)

 

초기 ssh 세팅하기 - putty는 이제 그만! 파워쉘에서 바로 접속하자 (키생성, config)

ssh 란? Secure Shell의 줄임말로 암호화 원격 접속에 쓰이는 네트워크 프로토콜 중 하나입니다. 원격 접속할 때 ssh를 많이들 이용하시죠? 저도 개인용 서버가 하나 있어서 자주 접속하는데요. 리눅

hoodiejun.tistory.com

여기서부터는 서버 설정입니다.

sudo su git
cd ~/

ssh 키가 없거나 새로 만들어서 따로 사용하실 분들은 아래 과정을 진행해주세요.

mkdir .ssh
ssh-keygen -t rsa -b 4096
id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
cat id_rsa 
# 내용 복사 후 접속할 클라이언트에 저장 -> id_rsa 를 키로 이용

갖고 있는 ssh key를 이용하실 분들은 아래 과정을 진행해주세요.

ssh-import-id-gh user

user에 github 아이디 입력하고 import 해서 원래 키로 접속!

3. git repository 생성하기

우리의 코드나 작업물을 저장할 repository를 생성하겠습니다.

mkdir test.git
cd test.git
git init --bare

--bare 옵션으로 초기화를 해줘야 repository로 사용 가능합니다.

4. 저장할 작업물에 가서 git 서버 연결해주기

git remote add origin git@192.xxx.xxx.xxx:22/home/git/test.git
git push origin master

git@ip주소:포트/repository주소 이런 식으로 입력하시면 됩니다. 마찬가지로 clone 할 때는

git clone ssh://git@192.168.0.1:22/home/git/test.git

.ssh 디렉터리에 id_rsa 키를 갖고 있다면 따로 비밀번호 필요 없이 clone 이나 push 를 할 수 있습니다.

 

github를 완전히 대체할 순 없지만 지극히 개인적인 자료를 관리할 때 유용했고 개인 노트북으로 주로 작업해서 ssh키를 옮겨 다닐 필요없이 바로 사용할 수 있는 환경이라면 편하게 사용할 수 있었습니다. 감사합니다!