Skip to main content

Command Palette

Search for a command to run...

Gitea on Docker

Published
•2 min read•View as Markdown

1. 서론.

  • 파일의 변경 이력을 남겨야 하는 경우가 있습니다. 특히 IT 분야에서는 이슈 발생 시 이력을 확인해서 대응하는 일이 기본입니다. 누가 변경했는지도 확인되므로 해당 담당자를 통해 빠르게 처리 가능하고요.
  • 여러 툴들이 있지만 현재 Git이 주로 사용되며, Git에 대한 설명은 Git Book에 잘 정리되어 있습니다.
  • 리눅스를 개발한 리누스 토발즈가 소스코드 관리 툴인 BitKeeper를 이용하다가 문제가 발생해 별도로 단기간에 만들었다고 하죠(해당 인터뷰).
  • 이후 여러 서비스들이 생겨났고, GitHub과 GitLab이 주로 사용됩니다.
  • 초기에 GitHub은 Git의 기능과 이슈 커뮤니케이션에 초점을 둔 반면 GitLab은 CI/CD까지 포함한 프로젝트 통합 관리 서비스 성격이 강했지만, 여러 기능들이 추가되고 발전하면서 그러한 성격이 많이 희석되었습니다.
  • GitLab은 오픈소스이며, GitHub은 오픈소스가 아니지만 중국에서 그대로 카피한 Gitea가 오픈소스로 개발되어 서비스 중입니다.
  • Git은 분산 저장소라서 싱크만 된다면 어디에 위치하던 관계 없습니다. .git 디렉토리가 저장소이며, 복사하면 그것 또한 저장소로 사용할 수 있습니다. Getting Git on a Server를 참고해 보세요.
  • 개인 소스코드 저장소를 git으로 전환한 이후 개인 서버에 두고 이용하다가, 협업 시 사용자 권한 제어가 필요해 Gitolite를 이용하다가, CI/CD까지 겸비한 GiLab을 이용하다가, 이슈관리 UI가 편한 GitHub에 익숙해진 뒤, Gitea를 이용하게 되었습니다.
  • 개인 서버에 설치해서 사용해보니 GitHub의 UX를 거의 그대로 사용할 수 있어서 메인 소스코드 서비스로 이용하고 있습니다.

 

2. Gitea on Docker.

2-1. 문서.

2-2. Docker compose로 실행.

  • Docker compose로 아래 명령어와 같이 간단히 실행할 수 있습니다.
  • Docker non-root user를 docker-user로 지정했습니다.
  • 모든 데이터가 컨테이너의 /data 디렉토리에 저장되므로, 데이터 유지를 위해 볼륨을 마운트 해줍니다.
      $ su - docker-user
      $ mkdir -p ~/workspace/gitea/data
      $ cd ~/workspace/gitea
      $ vi docker-compose.yml
          version: "3"
          services:
              gitea:
                  image: gitea/gitea:1.22.0
                  container_name: gitea
                  restart: unless-stopped
                  environment:
                      - TZ=Asia/Seoul
                      - LANG=ko_KR.UTF-8
                      - LANGUAGE=ko_KR:ko:en_US:en
                      - LC_ALL=ko_KR.UTF-8
                      - USER_UID=${UID}
                      - USER_GID=${GID}
                  volumes:
                      - ./data:/data
                  ports:
                      - 2222:2222
                      - 3000:3000
      $ UID=$(id -u) GID=$(id -g) docker compose -f docker-compose.yml up -d
    

 

3. 초기 설정.

  • Gitea 실행 후 웹 브라우저로 3000 포트에 처음 접속하면 초기 설정 페이지로 이동합니다.
  • 나머지 옵션들은 필요에 따라 설정하되, 도커로 매핑한 포트는 맞추어 주어야 합니다.
    • SSH 서버 포트: 2222
    • Gitea HTTP 수신 포트: 3000
    • Gitea 기본 URL: http://{ip address or domain}:3000/
  • 옵션 입력 후 'Gitea 설치하기' 버튼을 선택하면 설치가 진행됩니다. Android licenses 동의
  • 설치가 완료되면 처음에는 계정이 없으며, 처음 등록한 계정이 관리자가 됩니다. 저는 manager로 등록했습니다. Android licenses 동의
  • manager 계정으로 처음 로그인 한 화면. Android licenses 동의

More from this blog

크로스/멀티 플랫폼 앱 개발의 진화

서론 최근 몇 년간 크로스/멀티 플랫폼을 지원하는 앱 개발 프로젝트들이 빠르게 확산되고 있습니다. 이제 개발자들은 단일 코드베이스로 여러 플랫폼에서 동작하는 앱을 만들 수 있는 다양한 도구와 프레임워크를 활용할 수 있게 되었습니다.   과거의 크로스 플랫폼 개발 도구들 과거에도 크로스 플랫폼 앱 개발을 시도한 많은 프로젝트들이 있었습니다. 그러나 그중 다수는 성능과 안정성 문제로 인해 큰 인기를 끌지 못했습니다. 그 결과, 많은 개발자들이 오히...

Oct 10, 20242 min read

ESPHome dashboard - 보드 연결

1. 서론. ESPHome dashboard는 웹 기반의 인터페이스로, ESP8266 및 ESP32 칩을 사용하는 디바이스들을 손쉽게 설정하고 USB 연결, OTA 등으로 관리할 수 있는 도구입니다. 이 글에서는 별도 서비스로 실행되는 dashboard에, OTA로 보드를 연결하는 방법을 정리합니다.   2. 보드에 OTA 펌웨어 업로드. OTA로 연결하려면 보드에 OTA 펌웨어를 업로드 해야 합니다. ESP32-C3 Super mini를...

Sep 22, 20243 min read

ESPHome - ESP32 사용해보기

1. ESP32 보드. ESP32 보드 중 작은 ESP32-C3 Super Mini입니다.   2. ESP32-C3 Super Mini 연결. 처음 PC USB에 연결하면 연결되었다가 끊겼다가를 계속 반복하며 업로드가 되지 않습니다. 다운로드 모드로 진입해야 정상 연결되며 업로드가 됩니다. 진입 방법은 아래 두가지입니다. 보드의 Boot 버튼을 누른 채로 USB에 연결. USB에 연결 후 Boot 버튼을 누른 채로 Reset 버튼을 눌렀...

Sep 21, 20242 min read

ESPHome 설치

1. 서론. ESP 보드 펌웨어 개발 환경은 여러가지가 있습니다. 프레임워크를 사용하지 않고 개발해도 되고, Arduino, PlatformIO, ESPHome 같은 프레임워크를 이용할 수도 있죠. ESPHome은 Arduino와 PlatformIO 프레임워크를 사용하기 쉽게 한번 더 패키징 한 것이고, 소스코드를 작성할 필요 없이 yaml 형식으로 간단하게 정의해서 사용합니다.   2. ESPHome 설치. 문서. 최상위 문서: http...

Sep 21, 20241 min read

Albert Hongseok Gu's blog

18 posts