Git

[Git] Docker를 통한 Gitea 구축하기(GitLab과 차이)

테런 2024. 5. 31. 10:32
Overview

 

  • Gitea 구축하기 (링크)
  • [Docker] Ubuntu에 Docker 설치하기 (링크)
  • [Docker] Ubuntu에 Docker Compose 설치하기 (링크)

 

Gitea를 선택한 이유
사내 Git 서버를 구축하려고 찾아보던 중, Gitea와 GitLab에 대해서 알게되었습니다. 단순히 비교를 했을때, GitLab이 더 보편적으로 사용되고 있고, 참고할 문서도 많아서 GitLab을 선택했습니다. GitLab을 구축하면서 최소 사양 4 cores CPU, 4GB RAM로 많이 무겁다는 것을 알았습니다. 많은 3rd Party 서비스들의 통합이 주된 이유로 보였습니다.

이에 반해, Gitea는 최소 사양 1 cores CPU, 1GB RAM로 경량화가 되어있고, 필요한 기능(CI, Repository, webhooks 등)들이 다 있어서 Gitea를 선택하였습니다.

 

설치
$ sudo su -
$ mkdir gitea && cd gitea

// Mysql로 설치 (DB는 개인에 맞게 선택하면 됩니다.)
$ vi gitea-compose.yml
version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.22.0
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=mysql
      - GITEA__database__HOST=db:3306
      - 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: mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql

$ docker-compose -f gitea-compose.yml up -d
* 웹 브라우저에서 테스트
1. http://{ip}:3000 접속
2. 에러가 발생한다면, docker-compose logs -f 명령어를 통해서 디버깅
3. 초기 설정 화면 확인 후 아래에 설치하기 누르면 완료
4. 계정 생성

 

HTTPS 설정 (Self Signed Certificate) (링크)
// Container ID 확인 (gitea)
$ docker ps -a

// Container 접속
$ docker exec -it {Container ID} /bin/bash

// self Signed Certificate
# cd /data/gitea
# gitea cert --host {ip}
# chmod 644 cert.pem
# chmod 644 key.pem

// Config 수정
# cd /data/gitea/conf
# vi app.ini
[server]
APP_DATA_PATH = /data/gitea
DOMAIN = {ip}
SSH_DOMAIN = {ip}
PROTOCOL = https // 추가
HTTP_PORT = 3000
ROOT_URL = https://{ip}:3000/ // 수정
CERT_FILE = cert.pem // 추가
KEY_FILE = key.pem // 추가
DISABLE_SSH = false
SSH_PORT = 22
SSH_LISTEN_PORT = 22
LFS_START_SERVER = true
LFS_JWT_SECRET = 5CREAJZg7gYi...
OFFLINE_MODE = true

# exit

// 변경사항 저장
$ docker restart {Container ID}
* 웹 브라우저에서 테스트
1. https://{ip}:3000 접속
2. 에러가 발생한다면, docker-compose logs -f 명령어를 통해서 디버깅
3. 새로운 레포지토리 생성 후, HTTPS로 링크가 생긴것을 확인