Gitea ?

A painless self-hosted Git service.

  • https://gitea.io/
  • Github와 유사한 웹서비스 형식으로 Git 서버를 운용할 수 있게 해 주는 솔루션.
  • 그냥 오리지널 Git 서버는 웹서비스가 안되기 때문에 재미가 없다.
  • 대신 Gitlab을 많이 사용했는데, 이것도 설치하고 셋팅하는게 만만치 않았다.
  • 이후에 Gogs가 나왔는데, Go 언어로 개발하다 보니, 빌드된 실행파일 하나만 달랑 있고 이걸 그냥 실행만 하면 되는 식이라서 설치과정이 엄청나게 간단해 졌다. (물론 설정용 텍스트 파일 하나가 달라붙기는 하지만, 별도의 웹서버 구축이나 DB설정 따위를 전부 스킵해도 된다.)
  • 그런데 Gogs를 개발한 Unknown 이라는 중국인 개발자가 아무래도 힘에 부치는지 업데이트가 너무 뜸해지자, 다른 사용자들이 그걸 포크해서 Gitea 프로젝트로 떨어져 나왔다. Gitea는 활력있게 계속 업데이트 되고 있기 때문에 이쪽을 사용하는게 좋을 것 같다!
  • 당근 라즈베리파이에서 실행 가능한 빌드본도 잘 제공된다. 메모리 점유율 엄청 낮고 가볍고 설치가 간단하고 업데이트도 그냥 실행파일을 덮어써 주기만 하면 되기 때문에 라즈베리파이에게 딱 맞다.

설치해 보기

  • 최신 빌드본은 항상 여기에서 다운로드 받을 수 있다. : https://dl.gitea.io/gitea/master/
  • 최신 빌드본의 경로 및 파일네임은 항상 고정되어 있기 때문에 자동화해서 업데이트하기에 좋도록 해 주고 있다.
  • 일단 라즈베리파이에 라즈비안OS가 설치되어 있다고 가정. (다른 리눅스라도 별 상관없을 듯 하다)
  • 먼저 예의상 git을 설치.
sudo apt install git
  • 설치 장소는 기본 계정인 /home/pi 안에 gitea 디렉토리를 만들어서 거기에 다 집어넣자. (참고)
mkdir ~/gitea
cd ~/gitea
wget -O gitea https://dl.gitea.io/gitea/master/gitea-master-linux-arm-7
  • 최초로 실행 및 기본 셋팅하기 : 최초 실행시에(설정 파일이 없으면) 셋팅 화면이 나오고, 화면을 보면서 셋팅을 해 주면 설정 파일이 생겨서 그 다음부터는 정상 서비스가 되도록 되어 있다. 포트 번호는 원하는대로 하자.
cd ~/gitea
./gitea web --port 3100
  • 그러면 웹브라우저로 다음 주소로 들어가서 확인해 볼 수 있다. 라즈베리파이에서 GUI 및 웹브라우저 접근이 어렵다면(서버니까), 같은 네트워크상의 다른 PC에서 접근하면 된다.
http://라즈베리파이서버아이피:3100
  • 이 페이지에서 설정페이지가 나오면 다음 사항을 참고해서 설정하자.
데이터베이스 유형 : SQLite3 (다른 것도 좋지만, 개인용이라면 이걸로 충분하다.)
경로 : /home/pi/gitea/data/gitea.db
애플리케이션 이름 : My Gitea
저장소 최상위 경로 : /home/pi/gitea/gitea-repositories
LFS Root Path : /home/pi/gitea/data/LFS
데몬 사용자 계정 : pi
도메인 : localhost
SSH 포트 : 25
HTTP 포트 : 3100
애플리케이션 URL : http://라즈베리파이서버아이피:3100/
로그 경로 : /home/pi/gitea/log
SMTP 호스트 : 이메일SMTP주소
from : 이메일
발송 주소 메일 : 이메일
발송 주소의 비밀번호 : 이메일비번
등록 확인 활성화 : check
메일 알림 활성화 : Check
  • 위에서, LFS Root Path 항목은 Git LFS 서비스를 위한 설정이다. LFS로 트래킹되는 큰 바이너리 파일들을 별도 관리할 수 있는데, 그 데이타가 저장되는 장소이다. 때문에 여기서 적어준 경로에 해당하는 디렉토리를 라즈베리파이에서 따로 만들어 주자.

  • 이후 관리자 아이디를 새로 등록하는 페이지가 나온다. 여기서, 오른쪽 위에 가입하기를 눌러서 관리자 아이디를 생성한다. (최초의 가입자가 관리자가 된다)

사용자명 : 아이디
이메일 : 이메일
비밀번호 : 비번
재입력 : 비번
  • 이상없이 마쳤으면, 이제 만들어진 아이디로 로그인하고 사용하면 된다.

app.ini 설정파일 들여다 보기

  • 이제 라즈베리파이에서 잘 보면, /home/pi/gitea/custom/conf/app.ini 파일이 생성되어 있다. 바로 app.ini 파일이 설정 파일이고, 이걸 뜯어고치면 설정이 바뀐다. 라즈베리파이에서 nano 같은 편집기로 열어보자. 헌데 설정을 고치려면 뭘 보고 참고를 해야 할까?

  • 우선 Config Cheat Sheet를 참고하자. : https://docs.gitea.io/en-us/config-cheat-sheet/
  • 그리고 Gitea 소스코드에 나와있는 예제를 참고하자(이 예제의 값들이 디폴트값이다). : https://github.com/go-gitea/gitea/blob/master/conf/app.ini
  • 대충 보면 감이 잡힐 것이다. 내용 잘 보고 자신에게 맞게 원하는 내용을 첨삭하면 된다. 예컨데, 보안을 위해 SSH 포트번호를 바꿔준다던가, 이슈트래커에 첨부하는 그림파일의 용량 한계를 더 늘려준다던가 등등. 기타 각종 로그파일 등이 저장되는 경로를 전부 ~/gitea 안으로 들어가도록 잡아주는게 더 깔끔할 것이다.
  • 또 LFS 서비스를 사용하려면 다음 변수를 확인하고 잡아주자.
; Enables git-lfs support. true or false, default is false.
LFS_START_SERVER = true
; Where your lfs files put on, default is data/lfs.
LFS_CONTENT_PATH = data/LFS
; LFS authentication secret, changed this to yourself.
LFS_JWT_SECRET =

내장된 Markdown Viewer에서 MathJax 먹이기

  • 또 하나 더.. 수학식 표현을 가능하게 해 주기 위해 MathJax.js를 먹여주고 싶다.
  • .../custom/templates/custom/header.tmpl 파일에 다음 내용을 넣어주자. (디폴트는 비어 있는 파일임)
<!--  MathJax  -->
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    tex2jax: {
      inlineMath: [ ['$','$'], ["\\(","\\)"] ],
      processEscapes: true
    }
  });
</script>
<script src="//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

rc.local로 부팅시 자동 실행

  • 이제 마지막 문제가 하나 남았는데, 라즈베리파이 서버를 재부팅할 때 마다 서비스를 수동으로 실행시켜야 한다는 것이다. 부팅하면 자동으로 실행되도록 하는게 좋겠다.
sudo nano /etc/rc.local

해서 다음 내용을 추가해 주고 저장후 재부팅!

# Gitea
su - pi -c '/home/pi/gitea/gitea web' &
  • 단, rc.local은 x64 대응 우분투 18.04부터는 비활성화되고 system.d로 전환되었기 때문에 염두에 둔다.
  • 이제 안정적으로 Gitea 서비스를 사용할 수 있을 것이다.

좀 더 손보기

  • 화면 구성이나 첫 페이지 문구가 거슬린다. 그림을 바꾸고 싶다. 뭐 그런 것들은…
  • ~/gitea/custom 안에 필요한 파일을 넣고 내용을 건드려주면 된다.
  • 예컨데 첫 페이지 화면의 그림이나 아바타 그림을 바꾸려면…. ~/gitea/custom/public/img 안에 avatar_default.png, favicon.png, gitea-lg.png, gitea-sm.png 이름의 그림파일을 넣어주면 적용이 된다.
  • 첫 페이지 화면의 헤드라인 문구를 바꾸려면, ~/gitea/custom/templates 안에 home.tmpl 파일을 Gitea 소스코드에서 추출하여 넣어주고, 그 안의 내용 중에서 헤드라인 문구에 해당하는 걸 바꿔 써 주면 적용된다.
  • 첫 페이지 화면의 헤드라인 바로 아래의 보조 문구를 바꾸려면, ~/gitea/custom/options/locale 안에 locale_ko-KR.ini 파일을 Gitea 소스코드에서 추출하여 넣어주고, 그 안의 첫째줄의 app_desc=에 해당하는 걸 바꿔 써 주면 적용된다.
  • 기타 사항들은 이곳을 참고. : https://docs.gitea.io/en-us/customizing-gitea/
  • 기타 새로운 테마를 덮어써주거나 하는 기법들은 아직 충분히 발달하지 않은 것 같아서 그냥 두자.

편하게 업데이트 하기

  • 다음과 같이 업데이트 수행용 스크립트를 만들자.
nano ~/gitea/UpdateGitea.sh
#!/bin/bash
mv -f /home/pi/gitea/gitea /home/pi/gitea/gitea.old
wget -O /home/pi/gitea/gitea https://dl.gitea.io/gitea/master/gitea-master-linux-arm-7
chmod +x /home/pi/gitea/gitea
exit 0
  • 스크립트 저장후 다음 명령으로 실행 가능하도록 속성을 준다.
chmod +x ~/gitea/UpdateGitea.sh
  • 이것을 crontab으로 주기적으로 자동 업데이트 되도록 해도 되지만, 수동으로 생각날 때 마다 가끔 실행해서 업데이트 해 주는게 더 나을지도 모른다.