자유로운 온프레미스 git 서버 선택 - Gitea가 승리했다!

좋은 오픈소스 Git 서버를 선택하려고 노력 중입니다.

Page content

프로젝트를 오픈 클라우드 Git 제공업체에서 이전하고, 로컬에 내부 Git 서버를 자체 호스팅하는 것을 고려하고 계신가요?

gitea-site

서버 선택

자신만의 Git 서버를 운영하는 것은 너무 어렵지 않아야 하지 않을까요?

이제 선택할 수 있는 무료 Git 서버 옵션 중 매우 짧은 목록에서 선택해야 합니다. Bonobo Gogs vs Gitea vs Gitlab.

Bonobo는 무료이지만 Windows 전용이며, Linux 버전은 없습니다.

Gitlab은 기능이 풍부하지만 자원 소비가 많아 직접 운영해야 하는 경험을 필요로 합니다. 상업 제품이지만 무료 버전도 제공 합니다.

Gogs는 매우 가볍고, 사용해 보았으며 잘 작동하지만 컨테이너 레지스트리가 없습니다.

비교는 제 생각에 Gitea를 유리하게 보입니다.

Gitea와 Postgresql을 Docker로 구성

https://docs.gitea.com/next/installation/install-with-docker

cd ~
mkdir gitea
cd gitea

docker-compose.yml:

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
    depends_on:
      - db

  db:
    image: postgres:14
    restart: always
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=gitea
      - POSTGRES_DB=gitea
    networks:
      - gitea
    volumes:
      - ./postgres:/var/lib/postgresql/data

그 후

docker-compose up -d

http://localhost:3000/로 이동합니다.

종료하려면

docker-compose down

볼륨은 여전히 남아 있습니다.

자원 사용량

Resource containers stats

컨테이너는 약 260MB의 RAM과 약간의 CPU를 사용하고 있습니다.

Docker images stats

도커 이미지 총 크기는 583MB입니다. 그 중 422MB는 postgres:14 이미지입니다. 자원이 제한된 경우 postgres:14-alpine 이미지가 239MB를 차지하므로 사용할 수도 있습니다.

PS. 10개 이상의 저장소를 Gitea로 이전한 후, 일부 저장소를 복제하고 Gitea 컨테이너만으로도 현재 420MB의 RAM을 사용하고 있습니다. 이에 주의해야 합니다.

두 저장소 동기화

https://docs.gitea.com/next/usage/repo-mirror

푸시을 수행할 수 있습니다.

  • 상단 오른쪽의 Create… 메뉴에서 New Migration을 선택합니다.
  • 원격 저장소 서비스를 선택합니다.
  • 저장소 URL을 입력합니다.
  • 저장소에 인증이 필요한 경우 인증 정보를 입력합니다.
  • 이 저장소가 미러가 될 것인지 확인하는 체크박스를 선택합니다.
  • 설정을 저장하기 위해 Migrate repository를 선택합니다.

이제 저장소는 주기적으로 원격 저장소에서 미러됩니다. 저장소 설정에서 Synchronize Now를 선택하여 동기화를 강제할 수 있습니다.

이미 존재하는 저장소에 대해서는 풀 미러를 설정할 수 없습니다. 저장소가 생성된 후에는 더 이상 풀 미러로 전환할 수 없습니다.

HTTPS 설정

SSL 설정에 대한 더 많은 내용은 여기에서 확인할 수 있습니다: https://docs.gitea.com/next/administration/https-setup

하지만 지금은 이 방법을 시도해 보겠습니다 (Gitea 사이트에서 가져옴):

내장 서버 사용

HTTPS를 활성화하기 전에 유효한 SSL/TLS 인증서가 있는지 확인하십시오. 평가 및 테스트를 위해 자체 생성 인증서를 사용할 수 있습니다. 다음 명령을 실행하여 자가 서명 인증서를 생성하십시오:

gitea cert --host [HOST]

서버에 Apache 또는 nginx를 사용하는 경우, 역방향 프록시 가이드를 확인하는 것이 좋습니다.

Gitea의 내장 HTTPS 지원을 사용하려면 app.ini 파일을 수정해야 합니다:

[server]
PROTOCOL  = https
ROOT_URL  = https://git.example.com:3000/
HTTP_PORT = 3000
CERT_FILE = cert.pem
KEY_FILE  = key.pem

인증서가 제3자 인증 기관에 의해 서명된 경우 (즉, 자가 서명이 아닌 경우), cert.pem에는 인증서 체인을 포함해야 합니다. cert.pem의 첫 번째 항목은 서버 인증서여야 하며, 중간 인증서가 있다면 순서대로 뒤따르야 합니다. 루트 인증서는 포함할 필요가 없습니다. 연결하는 클라이언트가 이미 이를 보유하고 있어야 하기 때문입니다. 설정 값에 대한 자세한 내용은 Config Cheat Sheet을 참조하십시오.

CERT_FILE 또는 KEY_FILE 필드의 파일 경로는 GITEA_CUSTOM 환경 변수에 상대 경로일 경우 상대 경로이며, 절대 경로도 가능합니다.

HTTP 리디렉션 설정 Gitea 서버는 하나의 포트만 듣을 수 있습니다. HTTP 요청을 HTTPS 포트로 리디렉션하려면 HTTP 리디렉션 서비스를 활성화해야 합니다:

[server]
REDIRECT_OTHER_PORT = true
; 리디렉션 서비스가 듣는 포트
PORT_TO_REDIRECT = 3080

Docker를 사용하는 경우 이 포트가 docker-compose.yml 파일에 구성되어 있는지 확인하십시오.

역방향 프록시 사용

이 포스트: Gitea-ssl에서 Apache를 TLS 종료 역방향 프록시로 구성하는 방법을 설명합니다.

할 일

SSH 설정: https://docs.gitea.com/next/installation/install-with-docker

백업-복구 테스트.

유용한 링크