Coti Lab
kuro editor
업데이트
4분

Gitea/Forgejo: 나만의 깃허브 직접 운영하기

Gitea/Forgejo 셀프호스팅 Git 서버

GitLab Community Edition을 셀프호스팅하려면 최소 4GB 이상의 메모리를 권장할 정도로 무거운데(GitLab 공식 하드웨어 요구사항 기준), Gitea/Forgejo는 라즈베리파이 같은 저사양 기기에서도 512MB 메모리 정도로 충분히 돌아가요. 개인 프로젝트나 민감한 코드를 깃허브 같은 외부 서비스에 올리고 싶지 않을 때, 혹은 저장소를 완전히 내 통제 아래 두고 싶을 때 선택할 수 있는 셀프호스팅 Git 서버가 바로 이 둘이에요. 그렇다면 나만의 깃허브를 직접 운영한다는 게 실제로 어떤 경험일까요?

Gitea와 Forgejo, 무슨 관계인가

Gitea와 Forgejo는 같은 뿌리에서 갈라져 나온, 대부분 호환되는 코드베이스를 공유하는 두 프로젝트예요. Gitea는 오랫동안 가장 대중적인 경량 Git 서버였지만, 프로젝트 거버넌스에 대한 커뮤니티 우려로 일부 핵심 기여자들이 갈라져 나와 Forgejo라는 포크를 만들었어요. Forgejo는 비영리 재단 형태로 운영되며 완전한 커뮤니티 주도를 지향해요. 두 프로젝트 모두 활발히 개발되고 있어 어느 쪽을 선택해도 기능적으로 크게 뒤처지지 않아요.

GitLab 대비 압도적으로 가볍다

Gitea/Forgejo는 Go 언어로 작성되어 단일 바이너리로 배포된다는 게 GitLab과의 가장 큰 차이예요. GitLab이 무거운 DevOps 올인원 플랫폼을 지향한다면, Gitea/Forgejo는 저사양 기기에서도 부담 없이 돌아가는 가벼움에 집중해요. 개인 또는 소규모 팀 용도라면 GitLab의 방대한 DevOps 기능(내장 CI/CD, 보안 스캐닝 등)이 오히려 과한 경우가 많아요.

제공하는 핵심 기능

Gitea/Forgejo는 저장소 관리부터 이슈 트래킹, CI/CD, 패키지 레지스트리까지 깃허브가 제공하는 핵심 기능을 대부분 자체 서버 안에서 제공해요.

  • 저장소 관리와 코드 리뷰: Pull Request/Merge Request, 코드 라인 코멘트, 브랜치 보호 규칙을 지원해요.
  • 이슈 트래커: 라벨, 마일스톤, 칸반 보드 형태의 프로젝트 관리가 가능해요.
  • Actions: GitHub Actions와 거의 동일한 문법의 CI/CD 워크플로우(Gitea Actions/Forgejo Actions)를 제공해요.
  • 패키지 레지스트리: npm, Docker, Maven 등 다양한 패키지 형식을 저장소로 호스팅할 수 있어요.
  • Wiki와 마크다운 렌더링: 프로젝트 문서를 저장소 안에서 함께 관리할 수 있어요.

설치와 초기 구성

Docker Compose로 가장 흔하게 설치하며, SQLite로 시작할 수도 있지만 실서비스로 쓸 계획이라면 PostgreSQL 연동을 권장해요.

services:
  gitea:
    image: gitea/gitea:latest
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
    volumes:
      - gitea_data:/data
    ports:
      - "3000:3000"
      - "222:22"

SSH 포트(22)를 별도로 매핑해두면, git clone 시 SSH 프로토콜로도 접근할 수 있어요.

Gitea Actions로 CI/CD까지 자체 구축하기

GitHub Actions에 익숙하다면 Gitea Actions는 거의 동일한 YAML 문법을 사용하기 때문에 학습 비용이 거의 없어요. .gitea/workflows/ 디렉터리에 워크플로우 파일을 작성하고 별도의 Runner를 등록하면, 코드를 푸시할 때마다 자동으로 빌드, 테스트, 배포까지 자체 인프라에서 처리할 수 있어요. 외부 CI 서비스의 무료 빌드 시간 제한에서 완전히 자유로워진다는 것이 큰 장점이에요.

마이그레이션: 깃허브에서 옮겨오기

Gitea/Forgejo는 깃허브, GitLab, Gitea 등 다른 플랫폼의 저장소를 마이그레이션하는 기능을 내장하고 있어요. 저장소 URL과 접근 토큰만 입력하면 이슈, PR 이력, 위키까지 함께 가져올 수 있어, 기존에 깃허브에 있던 개인 저장소를 옮기는 작업이 어렵지 않아요.

외부 공개 vs 완전 사설 운영

깃허브 대체를 목표로 하는 만큼, 외부에 공개된 오픈소스 프로젝트를 호스팅할 수도 있고, 반대로 Tailscale이나 VPN을 통해서만 접근 가능한 완전 사설 저장소로 운영할 수도 있어요. 회사 코드나 민감한 개인 프로젝트라면 후자의 구성이 안전해요.

결론

Gitea/Forgejo는 “내 코드는 내 서버에”라는 원칙을 가장 가볍고 실용적으로 구현할 수 있는 셀프호스팅 프로젝트예요. 이미 여러 셀프호스팅 서비스를 운영 중이라면, 그 서비스들의 설정 파일과 자동화 스크립트를 저장하는 개인 Git 서버로도 자연스럽게 활용할 수 있고, 여러 사람이 함께 쓴다면 Authentik 같은 SSO로 로그인을 통합해두면 계정 관리가 한결 편해져요.

자주 묻는 질문

Q1. Gitea와 Forgejo 중 뭘 선택해야 하나요?

코드베이스가 대부분 호환되고 둘 다 활발히 개발되고 있어 기능 차이가 크지 않아요. 커뮤니티 주도 거버넌스를 중시한다면 Forgejo, 더 오래된 생태계와 자료를 원한다면 Gitea가 무난해요.

Q2. 라즈베리파이 같은 저사양 기기에서도 돌아가나요?

네, Go로 작성된 단일 바이너리라 512MB 메모리 정도로도 충분히 운영할 수 있어 GitLab보다 훨씬 가벼워요.

Q3. GitHub Actions 워크플로우를 그대로 쓸 수 있나요?

거의 동일한 YAML 문법을 쓰는 Gitea/Forgejo Actions가 있어 학습 비용이 거의 없이 `.gitea/workflows/`에 워크플로우를 그대로 옮겨 쓸 수 있어요.

Q4. 깃허브에 있던 저장소를 옮겨올 수 있나요?

네, 저장소 URL과 접근 토큰만 입력하면 이슈, PR 이력, 위키까지 마이그레이션 기능으로 함께 가져올 수 있어요.

Q5. 외부에 공개하지 않고 완전히 사설로만 운영할 수 있나요?

네, Tailscale이나 VPN을 통해서만 접근 가능하도록 구성하면 회사 코드나 민감한 개인 프로젝트도 외부 노출 없이 사설로 운영할 수 있어요.

k
kuro editor 자료 조사하고 분석하고 글을 읽기 쉽게 작성합니다
프로필

댓글

첫 번째 댓글을 남겨보세요!