Ubuntu 22.04에서 Docker를 사용하여 Gitea를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. Docker 설치 및 구성
  3. Gitea 배포 환경 설정\n
  4. Gitea 컨테이너 서비스 구축
  5. Nginx를 Gitea용 리버스 프록시로 설정\n
  6. Gitea 설치 구성 시작
  7. 결론

Gitea는 GitHub, BitBuacket 및 GitLab과 같은 무료 오픈 소스 자체 호스팅 Git 서비스입니다. MIT 라이센스로 Go로 작성된 Gogs git 서비스의 커뮤니티 포크입니다. Gitea는 버그 추적, 위키 및 코드 검토와 같은 공동 개발 및 팀을 위한 기능을 제공합니다. Gita는 Linux, macOS, Windows 및 ARM과 같은 여러 운영 체제에 설치할 수 있는 크로스 플랫폼 애플리케이션입니다.

Gitea의 주요 목표는 서버에서 Git 서비스를 만들고 배포하는 가장 쉽고 빠르고 간단한 방법을 제공하는 것입니다. 또한 Gitea는 LDAP, PAM, SMTP 및 FreeIPA와 같은 여러 인증 방법을 지원합니다. 웹후크 리포지토리 이벤트의 경우 Gitea는 Slack, Discord, Microsoft Team, Telegram 등과 같은 여러 웹후크를 지원합니다.

이 자습서에서는 최신 Ubuntu 22.04 서버에서 Docker를 사용하여 Gitea라는 자체 호스팅 Git 서버를 설치하고 구성하는 방법을 배웁니다. 또한 Gitea 컨테이너 서비스의 리버스 프록시로 Nginx 웹 서버를 설치하고 구성하는 방법도 다룹니다.

전제 조건

  • Ubuntu 서버 - 이 튜토리얼에서는 최신 Ubuntu 22.04 서버를 사용합니다.\n
  • 루트 권한이 있는 루트가 아닌 사용자 - 또는 루트 사용자를 사용할 수도 있습니다.\n

Docker 설치 및 구성

수행할 첫 번째 단계는 Ubuntu 머신에 Docker를 설치하고 구성하는 것입니다. 이 자습서에서는 공식 Docker 리포지토리에서 Docker를 설치하므로 Docker GPG 키와 리포지토리를 시스템에 추가해야 합니다.

시작하기 전에 아래의 apt 명령을 실행하여 gnupg2 및 curl과 같은 기본 패키지 종속성을 설치합니다.

sudo apt install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

설치가 완료되면 아래 명령을 실행하여 GPG 키를 다운로드하여 Docker 저장소에 추가합니다. GPG 키는 /etc/apt/keyrings 디렉토리에 저장됩니다.

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

그런 다음 다음 명령을 사용하여 Docker 리포지토리를 추가합니다.

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

그런 다음 아래 명령을 사용하여 Ubuntu 리포지토리를 업데이트하고 새로 고칩니다.

sudo apt update

아래 스크린샷에서 Ubuntu 22.04용 Docker 리포지토리가 추가된 것을 볼 수 있습니다.

마지막으로 다음 명령을 사용하여 Ubuntu 시스템에 Docker 엔진을 설치할 수 있습니다. 패키지 docker-compose 플러그인은 이제 Docker용 플러그인으로 사용할 수 있는 Docker Compose를 대체합니다.

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

설치를 확인하려면 Y를 입력하고 계속하려면 ENTER를 누르십시오. Docker 설치가 시작됩니다.

이제 아래 docker 명령을 실행하여 Docker 설치를 확인하십시오.

sudo docker run hello-world

Docker 설치에 성공하면 Docker의 Hello World 메시지가 표시됩니다.

Gitea 배포 환경 설정

Docker를 성공적으로 설치한 후 이제 Gitea 설치 환경을 설정하게 됩니다. 이 예에서 Gitea 컨테이너 서비스는 루트가 아닌 사용자로 실행되므로 시스템에서 새 사용자를 생성하고 그룹 도커에 사용자를 추가하여 사용자가 Docker 컨테이너를 실행하고 실행할 수 있도록 해야 합니다.

아래 명령을 실행하여 gitea라는 새 사용자를 추가합니다. 여기서 -m 옵션은 gitea 사용자의 새 홈 디렉토리를 자동으로 만드는 데 사용되며 새 사용자의 기본 셸은 /bin/bash.

useradd -m -s /bin/bash gitea

그런 다음 다음 명령을 사용하여 사용자 gitea를 그룹 docker에 추가합니다. 이제 사용자 gitea는 Docker 컨테이너를 실행할 수 있습니다.

usermod -aG docker gitea

확인하려면 다음 명령을 사용하여 사용자 gitea로 로그인하십시오.

su - gitea

이제 아래의 docker 명령을 실행하여 "hello-world" 이미지로 새 컨테이너를 시작합니다.

docker run hello-world

Gitea 설치를 위한 새 프로젝트 구성을 시작할 준비가 되었음을 의미하는 Docker의 Hello-world 메시지가 표시되어야 합니다.

Gitea 컨테이너 서비스 구축

Gitea 컨테이너 서비스를 실행하기 위해 새 사용자를 추가한 후 이제 Gitea 프로젝트 설치를 설정하게 됩니다. 이 섹션의 모든 명령은 새 사용자 gitea에서 실행됩니다.

먼저 "myapp"이라는 이름으로 새 프로젝트 디렉토리를 만들고 작업 디렉토리를 여기로 변경합니다.

mkdir -p myapp; cd myapp/

nano 편집기를 사용하여 새 docker-compose.yml 파일을 만듭니다.

nano docker-compose.yml

docker-compose.yml 파일에 다음 구성을 추가합니다.

version: "2"

volumes:
  gitea-data:
    driver: local
  gitea-config:
    driver: local

services:
  server:
    image: gitea/gitea:1.16.8-rootless
    environment:
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=gitea
    restart: always
    volumes:
      - ./data:/var/lib/gitea
      - gitea-data:/var/lib/gitea
      - ./config:/etc/gitea
      - gitea-config:/etc/gitea
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:2222"
    depends_on:
      - db

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

완료되면 파일을 저장하고 닫습니다.

이러한 구성을 사용하여 다음 리소스를 생성하게 됩니다.

  • Gitea 사용자 데이터 및 구성 파일을 저장하기 위한 두 개의 Docker 볼륨 gitea-data 및 gitea-config.\n
  • 이름이 \server\ 및 \db\인 두 서비스.
  • Gitea 컨테이너 서비스는 Docker 이미지 "gitea/gitea:1.16.8-rootless"를 기반으로 "server"라는 이름으로 실행되며 TCP 포트 내보내기 < em>30002222.
  • Gitea 컨테이너 서비스는 "db"라는 PostgreSQL 데이터베이스 서비스와 함께 실행됩니다.\n
  • "db" 서비스는 기본 Docker 이미지 PostgreSQL "postgres:14"과 함께 Gitea 서비스의 데이터베이스로 실행됩니다. 모든 데이터 관련 \db\ 서비스는 \postgres\라는 디렉토리에 로컬로 저장됩니다.

다음으로 아래의 docker 명령을 실행하여 Gitea 컨테이너 서비스 빌드 및 시작을 시작합니다.

docker compose up -d

아래에서 Gitea에 필요한 Docker 이미지의 다운로드 프로세스를 볼 수 있습니다.

모든 프로세스가 완료되면 다음 스크린샷과 같은 출력이 표시됩니다.

이제 아래의 docker 명령을 실행하여 gitea 컨테이너 서비스를 확인하십시오.

docker compose ps

다음 스크린샷에서 "server" 및 "db"라는 이름의 서비스가 실행 중인 것을 볼 수 있습니다. 이는 Gitea 컨테이너 서비스 배포가 완료되고 성공했음을 의미합니다.

Gitea 서비스는 3000 포트가 있는 localhost에서 실행 중입니다. 그리고 포트 2222는 SSH 연결에 사용할 수 있습니다.

설치 중 오류가 발생하면 항상 아래 명령을 사용하여 컨테이너 서비스의 로그를 확인합니다.

모든 컨테이너 서비스의 로그를 확인하십시오.

docker compose logs

각 컨테이너 서비스 db 및 서버에 대한 로그를 확인합니다.

docker compose logs db
docker compose logs server

Gitea의 리버스 프록시로 Nginx 설정

Gitea 컨테이너 서비스 설치를 완료했습니다. 이제 Nginx 웹 서버를 기본 포트 3000에서 실행되는 Gitea 컨테이너 서비스의 역방향 프록시로 설치 및 구성합니다.

이 예에서 Gitea 컨테이너 서비스는 도메인 이름 git.hwdomain.io 및 SSL Letsencrypt가 활성화된 상태로 실행됩니다. 따라서 nginx 리버스 프록시를 설정하기 전에 도메인 이름과 도메인 이름에 대해 생성된 SSL Letsencrypted가 있는지 확인하십시오.

이제 아래의 apt 명령을 사용하여 Nginx 패키지를 설치합니다.

sudo apt install nginx

설치를 확인하려면 Y를 입력하고 계속하려면 ENTER를 누르십시오.

다음으로 nano 편집기를 사용하여 새 SSL 구성 /etc/nginx/snippets/ssl.conf을 만듭니다.

sudo nano /etc/nginx/snippets/ssl.conf

파일에 다음 구성을 추가합니다. 또한 SSL 인증서 경로를 변경해야 합니다.

ssl_certificate /etc/letsencrypt/live/git.hwdomain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/git.hwdomain.io/privkey.pem;

# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
#ssl_stapling on;
#ssl_stapling_verify on;
#resolver 8.8.8.8 8.8.4.4 valid=300s;
#resolver_timeout 5s;
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

완료되면 파일을 저장하고 닫습니다.

다음으로 나노 편집기를 사용하여 Gitea 리버스 프록시 /etc/nginx/sites-available/gitea.conf에 대한 새 Nginx 서버 블록 구성을 만듭니다.

sudo nano /etc/nginx/sites-available/gitea.conf

파일에 다음 구성을 추가하고 도메인 이름 git.hwdomain.io을 도메인으로 변경했는지 확인합니다.

server {
    server_name git.hwdomain.io;
    listen 443 ssl http2;
    include snippets/ssl.conf;

    # Log files
    access_log /var/log/nginx/gitea.access.log;
    error_log /var/log/nginx/gitea.error.log;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

완료되면 파일을 저장하고 닫습니다.

이제 다음 명령을 실행하여 서버 블록 구성 gitea.conf을 활성화하고 Nginx 구성을 확인합니다.

sudo ln -s /etc/nginx/sites-available/gitea.conf /etc/nginx/sites-enabled/
sudo nginx -t

구성이 올바르면 "구문이 정상입니다 - 테스트 성공"과 같은 출력 메시지가 표시됩니다.

마지막으로 nginx 서비스를 다시 시작하여 새 Nginx 서버 블록 구성 gtea.conf 및 SSL 구성 ssl.conf를 적용합니다.

sudo systemctl restart nginx

이제 Gitea 컨테이너 서비스에 대한 리버스 프록시로 Nginx 구성을 완료했습니다. 이 서비스는 현재 도메인 이름 https://git.hwdomain.io에서 SSL이 활성화된 상태로 실행되고 있습니다.

Gitea 설치 구성 시작

Gitea 설치 및 구성을 시작하려면 웹 브라우저를 열고 설치에 대한 gitea 도메인 이름(예: https://git.hwdomain.io)을 방문하십시오. 이제 Gitea 설치 페이지가 표시됩니다.

초기 구성 섹션에서 docker-compose.yml 파일의 PostgreSQL 데이터베이스 자격 증명으로 자동으로 채워지므로 기본값으로 둡니다.

이제 도메인 설치와 함께 Gitea "Server Domain" 및 "Gitea 기본 URL"을 변경하십시오. 이 예에서 도메인 이름은 https://git.hwdomain.io입니다.

"선택적 설정" 섹션에서 "관리자 계정 설정"의 화살표를 클릭합니다. 이제 Gitea 서버의 새 관리자 사용자 이름, 비밀번호 및 이메일 주소를 입력하고 "Gitea 설치" 버튼을 클릭하십시오.

설치 프로세스가 완료되면 Gitea 홈페이지로 리디렉션되고 방금 만든 새 사용자로 로그인됩니다.

최신 Ubuntu 22.04에서 Docker와 함께 Gitea의 설치 및 구성이 성공적으로 완료되었습니다.

결론

축하합니다! 이제 최신 Ubuntu 22.04 서버에서 Docker를 사용하여 Gitea라는 자체 호스팅 git 서버 설치를 완료했습니다. 또한 컨테이너 서비스를 만들기 위한 docker-compose.yml의 기본 구성을 배웠습니다. 또한 Nginx를 컨테이너 애플리케이션의 리버스 프록시로 설정하는 방법을 배웠습니다. 이 예제에서는 Gitea 컨테이너 서비스입니다.