웹사이트 검색

Rocky Linux 8에서 Docker를 사용하여 Gitea 코드 호스팅을 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 1단계 - 방화벽 구성\n
  3. 2단계 - Docker 설치
  4. 3단계 - Docker Compose 설치
  5. 4단계 - Gitea 구성 및 설치
    1. 시스템 시간대 구성
    2. Gitea 디렉토리 만들기
    3. Gitea Docker Compose 파일 구성
    4. Gitea 설치 사용자 지정
    5. Gitea 설치

    Gitea는 Github, Bitbucket 및 Gitlab과 유사한 자체 호스팅 코드 호스팅 서비스입니다. Go 언어로 작성되었으며 Linux, macOS, Windows 및 amd64, i386, ARM 등과 같은 아키텍처를 포함한 여러 운영 체제에 설치할 수 있습니다. 가벼운 응용 프로그램이므로 최소한의 하드웨어 요구 사항으로 설치할 수 있습니다. 여기에는 리포지토리 파일 편집기, OpenSSH 서버, 문제 추적, 풀 요청, 사용자 관리, 알림, 내장 위키, LFS 지원, Git 후크 등이 포함됩니다.

    이 기사에서는 Rocky Linux 8 서버에서 Docker를 사용하여 Gitea를 설치하는 방법을 배웁니다.

    전제 조건

    • A Server running Rocky Linux 8.5.

    • A non-root user with sudo privileges.

    • Disable SELinux.

    • Update everything.

      $ sudo dnf update
      
    • Install essential packages.

      $ sudo dnf install yum-utils nano curl
      
    • A fully qualified domain name(FQDN) pointing to the server like gitea.example.com.

    1단계 - 방화벽 구성

    첫 번째 단계는 방화벽을 구성하는 것입니다. Rocky Linux는 Firewalld Firewall을 사용합니다. 방화벽 상태를 확인하십시오.

    $ sudo firewall-cmd --state
    running
    

    방화벽은 다른 영역에서 작동하며 공개 영역은 우리가 사용할 기본 영역입니다. 방화벽에서 활성화된 모든 서비스와 포트를 나열합니다.

    $ sudo firewall-cmd --permanent --list-services
    

    다음 출력이 표시되어야 합니다.

    cockpit dhcpv6-client ssh
    

    HTTP 및 HTTPS 포트를 허용합니다.

    $ sudo firewall-cmd --permanent --add-service=http
    $ sudo firewall-cmd --permanent --add-service=https
    

    SSH용 포트 2221을 엽니다.

    $ sudo firewall-cmd --permanent --add-port=2221/tcp
    

    방화벽에 의해 활성화되는 모든 서비스를 나열합니다.

    $ sudo firewall-cmd --permanent --list-all
    

    비슷한 출력이 표시되어야 합니다.

    public
      target: default
      icmp-block-inversion: no
      interfaces:
      sources:
      services: cockpit dhcpv6-client http https ssh
      ports: 2221/tcp
      protocols:
      forward: no
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:
    

    변경 사항을 적용하려면 방화벽을 다시 로드하십시오.

    $ sudo firewall-cmd --reload
    

    2단계 - 도커 설치

    Rocky Linux는 이전 버전의 Docker와 함께 제공됩니다. 최신 버전을 설치하려면 먼저 공식 Docker 리포지토리를 설치합니다.

    $ sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    

    최신 버전의 Docker를 설치합니다.

    $ sudo dnf install docker-ce docker-ce-cli containerd.io
    

    Docker 데몬을 활성화하고 실행합니다.

    $ sudo systemctl enable docker --now
    

    실행 중인지 확인합니다.

    ? docker.service - Docker Application Container Engine
       Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
       Active: active (running) since Sat 2022-04-02 13:26:08 UTC; 2s ago
         Docs: https://docs.docker.com
     Main PID: 21152 (dockerd)
        Tasks: 7
       Memory: 30.9M
       CGroup: /system.slice/docker.service
               ??21152 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    ...
    

    기본적으로 Docker에는 루트 권한이 필요합니다. sudo 명령을 실행할 때마다 sudo를 사용하지 않으려면 docker 명령에 사용자 이름을 추가하세요. > 그룹.

    $ sudo usermod -aG docker $(whoami)
    

    이 변경 사항을 활성화하려면 서버에서 로그아웃하고 동일한 사용자로 다시 로그인해야 합니다.

    3단계 - Docker Compose 설치

    Docker Compose의 최신 안정 릴리스를 다운로드하십시오.

    $ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    

    Docker Compose 바이너리 파일에 실행 권한을 적용합니다.

    $ sudo chmod +x /usr/local/bin/docker-compose
    

    설치를 테스트하십시오.

    $ docker-compose --version
    docker-compose version 1.29.2, build 5becea4c
    

    Docker-compose Bash Completion 스크립트를 설치합니다.

    $ sudo curl \
        -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \
        -o /etc/bash_completion.d/docker-compose
    

    bash 완료가 작동하도록 프로필 설정을 다시 로드합니다.

    $ source ~/.bashrc
    

    4단계 - Gitea 구성 및 설치

    시스템 시간대 구성

    다음 명령으로 시스템의 현재 시간대를 확인할 수 있습니다.

    $ timedatectl
      Local time: Mon 2022-05-02 06:38:36 UTC
               Universal time: Mon 2022-05-02 06:38:36 UTC
                     RTC time: Mon 2022-05-02 06:38:36
                    Time zone: Etc/UTC (UTC, +0000)
    System clock synchronized: yes
                  NTP service: active
              RTC in local TZ: no
    

    시스템이 GMT 또는 UTC 시간대로 설정되어 있음을 알 수 있습니다. 시간대가 다른 지역에 거주하거나 시간대를 변경하려면 다음 명령을 사용하십시오.

    $ sudo timedatectl set-timezone Asia/Kolkata
    

    시간대를 다시 확인하십시오.

    $ timedatectl
    Local time: Mon 2022-05-02 12:09:23 IST
               Universal time: Mon 2022-05-02 06:39:23 UTC
                     RTC time: Mon 2022-05-02 06:39:22
                    Time zone: Asia/Kolkata (IST, +0530)
    System clock synchronized: yes
                  NTP service: active
              RTC in local TZ: no
    

    시간대가 GMT+5:30인 IST로 업데이트된 것을 볼 수 있습니다.

    Gitea 디렉터리 만들기

    Gitea에 대한 디렉터리를 만듭니다.

    $ mkdir ~/gitea-docker
    

    Gitea 디렉터리로 전환합니다.

    $ cd ~/gitea-docker
    

    Gitea 데이터 및 PostgreSQL 데이터베이스를 저장하기 위한 디렉터리를 만듭니다.

    $ mkdir {gitea,postgres}
    

    Gitea Docker Compose 파일 구성

    현재 로그인한 사용자의 UID(사용자 식별자) 및 GID(그룹 식별자) 값을 가져옵니다. 첫 번째 명령은 UID를 생성하고 두 번째 명령은 GID를 생성합니다. Docker 작성 파일을 구성하는 데 필요하므로 두 값을 모두 복사합니다.

    $ echo $(id -u)
    1000
    $ echo $(id -g)
    1000
    

    편집을 위해 Docker Compose 파일을 만들고 엽니다.

    $ nano docker-compose.yml
    

    다음 코드를 붙여넣습니다. 앞에서 생성한 UID 및 GID 값을 붙여넣습니다.

    version: "3"
    
    networks:
      gitea:
        external: false
    
    services:
      server:
        image: gitea/gitea:1.16.6
        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"
          - "2221: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
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    위의 Docker Compose 파일은 두 개의 컨테이너를 배포합니다. 하나는 Gitea용이고 다른 하나는 PostgreSQL용입니다. 데이터베이스 세부 정보를 구성하기 위해 몇 가지 환경 변수를 추가했습니다. PostgreSQL 데이터베이스를 Gitea 컨테이너에 연결하기 위해 파일에서 PostgreSQL 서비스의 이름으로 호스트를 지정했습니다.

    포트 매개변수 "3000:3000""2221:22"는 왼쪽 포트가 호스트 포트를 나타내는 포트 매핑을 지정합니다. 오른쪽 포트는 컨테이너 포트를 나타냅니다. Gitea는 웹 서비스에 포트 3000을 사용하며, 이는 우리가 서버에도 노출한 것입니다. SSH의 경우 우리 시스템은 이미 로깅 목적으로 포트 22를 사용하고 있습니다. 따라서 SSH 작업을 수행할 사용자 지정 포트를 지정합니다. 우리의 경우에는 포트 2221을 사용하고 있습니다. 이 포트는 또한 이 튜토리얼의 1단계에서 이미 수행한 방화벽을 통해 열어야 합니다.

    Gitea와 PostgreSQL 컨테이너는 모두 gitea라는 공통 내부 Docker 네트워크를 통해 연결됩니다. 볼륨 마운트는 Docker 설치를 시작할 때 현재 폴더에 giteapostgres 디렉토리를 자동으로 생성합니다. Compose 파일에 지정된 사용자 ID는 Gitea 컨테이너가 gitea 디렉토리를 생성하는 데 사용할 것입니다. 반면에 PostgreSQL 컨테이너는 기본 동작인 systemd-coredump 사용자가 관리합니다. 해당 동작을 변경할 수 있지만 반드시 필요한 것은 아닙니다.

    Gitea 설치 사용자 정의

    app.ini 파일을 ~/gitea-docker/gitea/gitea/conf 디렉터리에 추가하여 Gitea 설치를 사용자 지정할 수 있습니다. 설치 후 컨테이너 내부의 /data/gitea/conf/app.ini 위치에서 이 파일을 편집할 수 있습니다. Giteas Github 리포지토리의 샘플 ini 파일을 참조용으로 사용할 수 있습니다.

    기테아 설치

    다음 명령을 실행하여 Gitea 컨테이너를 시작합니다.

    $ docker-compose up -d
    

    컨테이너가 제대로 실행되고 있는지 확인하려면 컨테이너의 상태를 확인하십시오.

    $ docker ps
    CONTAINER ID   IMAGE                COMMAND                  CREATED             STATUS             PORTS                                                                              NAMES
    bd06e370c46b   gitea/gitea:1.16.6   "/usr/bin/entrypoint…"   19 minutes ago   Up 19 minutes   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp, 0.0.0.0:2221->22/tcp, :::2221->22/tcp   gitea
    3fc6c4bce810   postgres:14          "docker-entrypoint.s…"   19 minutes ago   Up 19 minutes   5432/tcp                                                                           gitea_db_1
    

    다음 명령을 사용하여 상태를 확인할 수도 있습니다.

    $ docker-compose ps
       Name                 Command               State                                       Ports
    ------------------------------------------------------------------------------------------------------------------------------------
    gitea        /usr/bin/entrypoint /bin/s ...   Up      0.0.0.0:2221->22/tcp,:::2221->22/tcp, 0.0.0.0:3000->3000/tcp,:::3000->3000/tcp
    gitea_db_1   docker-entrypoint.sh postgres    Up      5432/tcp
    

    5단계 - SSL 설치

    Lets Encrypt를 사용하여 SSL 인증서를 설치하려면 Certbot 도구를 설치해야 합니다.

    먼저 EPEL 저장소를 다운로드하여 설치해야 합니다.

    $ sudo dnf install epel-release
    

    다음 명령을 실행하여 Certbot을 설치합니다.

    $ sudo dnf install certbot
    

    SSL 인증서를 생성합니다.

    $ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d gitea.example.com
    

    위의 명령은 서버의 /etc/letsencrypt/live/gitea.example.com 디렉토리에 인증서를 다운로드합니다.

    Diffie-Hellman 그룹 인증서를 생성합니다.

    $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
    

    Lets Encrypt 자동 갱신을 위한 챌린지 웹 루트 디렉터리를 만듭니다.

    $ sudo mkdir -p /var/lib/letsencrypt
    

    SSL을 갱신하기 위해 Cron 작업을 생성합니다. 인증서를 확인하고 필요한 경우 갱신하기 위해 매일 실행됩니다. 이를 위해 먼저 /etc/cron.daily/certbot-renew 파일을 생성하고 편집을 위해 엽니다.

    $ sudo nano /etc/cron.daily/certbot-renew
    

    다음 코드를 붙여넣습니다.

    #!/bin/sh
    certbot renew --cert-name gitea.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    실행 가능하도록 태스크 파일에 대한 권한을 변경하십시오.

    $ sudo chmod +x /etc/cron.daily/certbot-renew
    

    6단계 - Nginx 설치

    최신 버전의 Nginx를 설치합니다. 편집을 위해 /etc/yum.repos.d/nginx.repo 파일을 만들고 엽니다.

    $ sudo nano /etc/yum.repos.d/nginx.repo
    

    다음 줄을 붙여넣습니다.

    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    Nginx를 설치합니다.

    $ sudo dnf install nginx
    

    설치를 확인하십시오.

    $ nginx -v
    nginx version: nginx/1.20.2
    

    Nginx 서비스를 활성화하고 시작합니다.

    $ sudo systemctl enable nginx --now
    

    편집을 위해 /etc/nginx/conf.d/gitea.conf 파일을 만들고 엽니다.

    $ sudo nano /etc/nginx/conf.d/gitea.conf
    

    다음 코드를 붙여넣습니다.

    # Redirect all non-encrypted to encrypted
    server {
        listen 80;
        listen [::]:80;
        server_name gitea.example.com;
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        
        server_name gitea.example.com;
    
        ssl_certificate     /etc/letsencrypt/live/gitea.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/gitea.example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/gitea.example.com/chain.pem;
        ssl_session_timeout 1d;
        ssl_session_cache shared:MozSSL:10m;
        ssl_session_tickets off;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    
        access_log /var/log/nginx/gitea.example.com.access.log main;
        error_log  /var/log/nginx/gitea.example.com.error.log;
    
        location / {
            client_max_body_size 100M;
            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;
        }
    }
    

    완료되면 Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다. 위의 구성을 통해 Nginx는 프록시 서버로 작동하고 localhost의 포트 3000에 바인딩할 수 있습니다. Git LFS에 대한 대용량 파일 업로드를 활성화하려면 요구 사항에 따라 client_max_body_size 변수의 값을 변경할 수 있습니다. 자습서에서는 100MB를 제한으로 사용합니다.

    편집을 위해 /etc/nginx/nginx.conf 파일을 엽니다.

    $ sudo nano /etc/nginx/nginx.conf
    

    include /etc/nginx/conf.d/*.conf; 줄 앞에 다음 줄을 추가합니다.

    server_names_hash_bucket_size  64;
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    Nginx 구성 파일 구문을 확인합니다.

    $ sudo nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    새 구성을 활성화하려면 Nginx 서비스를 다시 시작하십시오.

    $ sudo systemctl restart nginx
    

    7단계 - Gitea 액세스 및 설정

    브라우저에서 URL https://gitea.example.com을 방문하면 다음 설치 화면이 나타납니다.

    대부분의 필드는 Docker 작성 파일의 값을 기반으로 미리 채워집니다.

    gitea.example.com을 서버 도메인으로 입력하고 https://gitea.example.com을 Gitea Base URL로 입력합니다. SSH 서버 포트 값을 22에서 2221로 변경합니다. 나머지 설정은 그대로 둡니다.

    메일 기능을 사용하려면 SMTP 서버 세부 정보를 추가할 수 있습니다. 페이지의 이메일 설정 섹션을 확장하고 스크린샷에 표시된 대로 값을 입력합니다. 표시된 호스트 이름과 함께 SMTP 포트를 포함해야 합니다. 자습서에서는 Amazon SES 서비스를 사용하고 있습니다. 원하는 SMTP 서비스를 사용할 수 있습니다.

    설치하기 전에 확인해야 할 설정이 몇 가지 더 있습니다. 이를 변경하려면 페이지의 서버 및 타사 서비스 설정 섹션을 펼치십시오.

    요구 사항에 따라 설정을 변경하십시오. 더 나은 개인 정보 보호를 위해 기본적으로 이메일 주소 숨기기 옵션을 활성화했습니다. 사람들이 계정을 등록하는 것을 원하지 않으면 자체 등록 비활성화 옵션을 활성화하십시오.

    마지막으로 관리자 계정을 설정합니다. 페이지의 관리자 계정 설정 섹션을 확장하고 필요한 값을 입력합니다.

    완료되면 Gitea 설치 버튼을 클릭하여 설치를 완료합니다. Gitea 대시보드로 리디렉션됩니다. 어떤 이유로든 502 오류가 발생하면 페이지를 새로 고칩니다.

    8단계 - 첫 번째 리포지토리 만들기

    첫 번째 저장소를 만들어 보겠습니다. 그렇게 하려면 대시보드에서 + 기호를 클릭합니다.

    리포지토리 세부 정보를 입력합니다. 드롭다운 메뉴에서 선택하여 기본 문제 레이블을 선택합니다. 리포지토리에 적합한 라이선스를 선택합니다.

    리포지토리의 기본 분기를 선택합니다.

    만족하면 리포지토리 생성 버튼을 클릭하여 Gitea 설치에 첫 번째 리포지토리를 생성합니다. 리포지토리 홈으로 리디렉션됩니다.

    9단계 - SSH 설정

    새로 생성된 리포지토리와 함께 사용할 SSH를 설정하겠습니다.

    튜토리얼에서는 Ubuntu가 사전 설치된 로컬 PC를 사용합니다. 그러나 명령은 많은 변경 없이 모든 OS 터미널에서 작동해야 합니다.

    로컬 PC에서 Gitea와 함께 사용할 새 SSH 키를 만듭니다.

    $ ssh-keygen -f ~/.ssh/gitea-demo -t rsa -b 4096 -C "HowtoForge Gitea Demo" -q -N "yourpassphrase"
    

    위 명령에서 자리 표시자 대신 강력한 암호를 입력합니다. 이렇게 하면 ~/.ssh/gitea-demo 위치에 SSH 키가 생성됩니다.

    다음으로 프로필 이미지의 드롭다운 메뉴를 클릭하고 설정 옵션을 선택하여 표시된 대로 Gitea 프로필 설정을 엽니다.

    그런 다음 페이지에서 SSH/GPG 키 탭으로 전환합니다.

    SSH 키의 이름을 추가합니다. 로컬 PC의 터미널로 돌아가서 다음 명령을 실행하여 Gitea의 공개 키를 출력합니다.

    $ cat ~/.ssh/gitea-demo.pub
    

    결과 출력을 복사하여 Gitea의 SSH 키 페이지에 있는 콘텐츠 상자에 다시 붙여넣습니다.

    키 추가 버튼을 클릭하여 키 추가를 완료합니다.

    로컬 PC로 돌아가 SSH 에이전트를 설정하여 1시간 동안 활성 상태를 유지합니다.

    $ eval $(ssh-agent -t 3600)b
    

    새로 생성된 SSH 키를 SSH 에이전트에 추가합니다.

    $ ssh-add ~/.ssh/gitea-demo
    Enter passphrase for /home/navjot/.ssh/gitea-demo:
    Identity added: /home/navjot/.ssh/gitea-demo (HowtoForge Gitea Demo)
    

    암호를 입력하라는 메시지가 표시됩니다.

    10단계 - SSH를 사용하여 리포지토리 복제

    새로 생성된 리포지토리를 SSH를 사용하여 복제하겠습니다. 저장소 페이지를 다시 방문하여 SSH 옵션을 선택한 후 SSH URL을 복사하십시오.

    다음과 같아야 합니다.

    ssh://:2221/navjot/howtoforge.git
    

    로컬 PC에서 다음 명령을 실행하여 SSH를 사용하여 리포지토리를 복제합니다.

    $ git clone ssh://:2221/navjot/howtoforge.git
    Cloning into 'howtoforge'...
    The authenticity of host '[gitea.example.com]:2221 ([209.23.11.75]:2221)' can't be established.
    ECDSA key fingerprint is SHA256:sN0N4OkpChwuR00xpGZU1mGJrp7ktwHRC7uxGP7Nh08.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '[gitea.example.com]:2221,[209.23.11.75]:2221' (ECDSA) to the list of known hosts.
    remote: Enumerating objects: 4, done.
    remote: Counting objects: 100% (4/4), done.
    remote: Compressing objects: 100% (3/3), done.
    remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
    Receiving objects: 100% (4/4), done.
    

    호스트 자격 증명을 추가하라는 메시지가 표시됩니다. 리포지토리 복제를 진행하려면 yes를 입력합니다.

    시스템에 복제된 리포지토리가 표시됩니다.

    $ ls
    howtoforge
    

    디렉터리로 전환합니다.

    $ cd howtoforge
    

    새로 복제된 리포지토리의 Git 상태를 확인합니다. 이를 위해서는 로컬 PC에 Git이 설치되어 있어야 합니다.

    $ git status
    On branch master
    Your branch is up to date with 'origin/master'.
    
    nothing to commit, working tree clean
    

    이것은 SSH가 완벽하게 작동한다는 결론을 내립니다.

    11단계 - 첫 커밋 테스트

    이제 첫 번째 리포지토리를 설정했으므로 몇 가지 변경 사항을 적용하고 다시 커밋할 시간입니다.

    README.md 파일을 업데이트하겠습니다. 로컬 PC에서 편집을 위해 readme 파일을 엽니다.

    $ nano README.md
    

    파일을 편집하고 완료되면 Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 저장합니다.

    Git 상태를 다시 확인하십시오.

    $ git status
    On branch master
    Your branch is up to date with 'origin/master'.
    
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   README.md
    
    no changes added to commit (use "git add" and/or "git commit -a")
    

    이는 Readme 파일이 편집되었지만 커밋되지 않았음을 나타냅니다. 파일을 추가하여 커밋을 준비합니다.

    $ git add README.md
    

    파일을 커밋합니다.

    $ git commit -m "Update the Readme file for Gitea tutorial."
    [master 5e9b039] Update the Readme file for Gitea tutorial.
     1 file changed, 3 insertions(+), 1 deletion(-)
    

    Gitea 서버에 파일을 푸시합니다.

    $ git push origin master
    Enumerating objects: 5, done.
    Counting objects: 100% (5/5), done.
    Delta compression using up to 4 threads
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 392 bytes | 392.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    remote: . Processing 1 references
    remote: Processed 1 references in total
    To ssh://gitea.example.com:2221/navjot/howtoforge.git
       a61dfce..5e9b039  master -> master
    

    확인하려면 Gitea 리포지토리 페이지로 돌아갑니다.

    Readme 파일이 업데이트되고 최신 커밋 메시지도 표시되는 것을 확인할 수 있습니다. 변경 사항을 보려면 커밋 메시지를 클릭하면 다음과 같은 차이점이 있는 페이지를 볼 수 있습니다.

    이것으로 저장소에 대한 첫 번째 커밋을 마칩니다. 프로젝트용 Gitea 설치 작업을 시작할 수 있습니다.

    12단계 - Gitea 업그레이드

    Gitea 업그레이드는 간단한 과정입니다.

    기존 컨테이너를 종료하고 제거합니다. 데이터는 호스트의 컨테이너 외부에 저장되므로 그대로 유지됩니다.

    $ cd ~/gitea-docker
    $ docker-compose down --remove-orphans
    

    docker-compose.yml 파일을 열고 Gitea 컨테이너의 버전을 변경합니다. 다음으로 새 Gitea 이미지를 가져옵니다.

    $ docker pull
    

    새 컨테이너를 시작합니다.

    $ docker-compose up -d
    

    상태를 확인하십시오.

    $ docker ps
    

    결론

    이것으로 Rocky Linux 서버에서 Docker를 사용하여 Gitea Code Hosting Service를 설치한 튜토리얼을 마칩니다. 또한 프록시 역할을 할 Nginx 서버를 설치하고 SSL을 사용하여 공개 URL을 통해 Gitea를 노출했습니다. 질문이 있으시면 아래 의견에 게시하십시오.