Raspberry Pi에 Gitea를 설치하여 나만의 코드 리포지토리 생성

Raspberry Pi에 Gitea를 설치하여 나만의 코드 리포지토리 생성

Git은 소프트웨어 개발자, 코더 및 팅커러가 오픈 소스 프로젝트를 공동 작업하고 배포하는 데 사용하는 버전 제어 시스템입니다. Git을 사용하면 모든 크기의 프로젝트를 처리하고, 코드 변경 및 병합을 가져오고, 사용자가 자신의 시스템에 리포지토리를 복제하도록 허용할 수 있습니다. 오픈 소스 에코시스템은 Git에서 실행되며 MakeUseOf.com에 소개된 많은 프로젝트에는 GitHub의 리소스 사용이 포함됩니다. Gitea를 사용하면 가정의 Raspberry Pi에서 완전한 기능을 갖춘 Git 리포지토리를 호스팅할 수 있습니다.

GitHub를 사용하는 대신 Raspberry Pi에서 자체 Git 서비스를 호스팅하는 이유는 무엇입니까?

React 소스 코드의 파일 목록을 보여주는 GitHub 리포지토리 페이지

5,500만 명의 사용자를 보유한 GitHub는 지구상에서 가장 큰 무료 및 오픈 소스 소프트웨어 저장소이지만 현재 소유주인 Microsoft는 관리인의 역할에 적합하지 않습니다. 이 회사의 이전 CEO들은 Linux와 General Public License를 “암”이라고 표현했으며 대부분의 Microsoft 자체 제품은 독점적이고 폐쇄된 소스입니다.

Microsoft의 소유권은 또한 GitHub가 윤리적으로 모호한 일부 기술, 특히 프로그래머가 코드를 생성하는 데 도움이 되는 AI 도구인 GitHub Copilot을 탐색하는 것을 보았습니다. Copilot은 코더가 사용하는 Creative Commons 라이선스 조건을 위반할 가능성이 있는 GitHub의 데이터에 대해 교육을 받았습니다.

개발자는 GitHub를 사용하여 혁신을 억누르고 훼손하고 경솔한 간섭을 받을 수 있는 또 다른 관문을 만들고 있습니다.

Gitea를 사용하면 Raspberry Pi에서 자신만의 Git 서버를 설정할 수 있습니다.

Gitea는 Gogs의 포크이며 Go로 작성되고 MIT 라이선스로 게시된 커뮤니티 관리 경량 코드 호스팅 솔루션입니다. 이전 모델보다 더 개방적이고 빠른 개발 모델을 목표로 하며 Raspberry Pi와 같은 겸손한 리소스가 있는 시스템에서도 실행될 것입니다. Dotfile, 맞춤형 Ubuntu ISO, Bash 스크립트, Java 및 Python 유틸리티에서 DMCA 게시 중단 대상이 되거나, 사악한 소프트웨어를 교육하는 데 사용되거나, 통제 불능이 될 것이라는 두려움 없이 작업할 수 있습니다. .

Raspberry Pi에 Gitea를 설치하는 방법

Gitea에는 여러 가지 설치 방법이 있지만 가장 쉬운 방법은 Docker를 이용하는 것입니다. 아직 Raspberry Pi에서 실행되고 있지 않은 경우 지금 Docker 및 Docker Compose를 설치하십시오.

Gitea 서버에 저장하는 파일은 잠재적으로 많은 공간을 차지하므로 Raspberry Pi와 함께 외부 저장소를 사용하고 이를 Gitea 설치 위치로 사용하는 것이 좋습니다.

SSH를 통해 Pi에 연결한 다음 Gitea를 설치하려는 위치로 이동하고 새 디렉터리를 만든 다음 해당 위치로 이동합니다.

mkdir gitea
cd gitea

nano로 새 파일을 만듭니다.

nano 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=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:gb
- /etc/localtime:/etc/localtime:gb
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

시간대를 자신의 로케일로 변경하고 데이터베이스에 대한 강력한 암호를 선택한 다음 Ctrl + O , Ctrl + X를 사용하여 nano를 저장하고 종료합니다.

입력하다:

docker-compose up -d

…분리 모드에서 docker-compose를 불러옵니다. Docker-compose는 Gitea 및 Maria DB에 대한 여러 이미지를 가져오고 컨테이너를 설정합니다. 연결 속도에 따라 다소 시간이 걸릴 수 있습니다.

gitea 및 gitea_db_1이 작동 중인 것으로 표시되는 docker-compose ps

명령 프롬프트로 돌아가면 다음을 수행하십시오.

docker-compose ps

…”gitea” 및 “gitea_db_1″이 “up”으로 표시되어야 합니다. 이제 your.pi.local.ip.address:3000 에서 Gitea 사이트의 초기 구성 페이지를 방문할 수 있습니다 .

아직 아무 것도 변경하지 마십시오. 인터넷을 통해 Gitea 인스턴스에 액세스할 계획이라면 먼저 조금 더 준비해야 합니다.

인터넷을 통해 Gitea 인스턴스에 액세스

Gitea 인스턴스에 연결할 수 있도록 표준 URL을 입력할 수 있기를 원하므로 프록시를 처리하려면 Apache가 필요합니다. 다음을 사용하여 Apache를 설치합니다.

sudo apt install apache2

이제 다음 명령을 사용하여 Apache를 시작하고 활성화합니다.

sudo systemctl start apache2
sudo systemctl enable apache2

다음을 사용하여 Apache의 프록시 모듈을 활성화합니다.

sudo a2enmod proxy
sudo a2enmod proxy_http

평판이 좋은 등록 기관의 도메인 이름 또는 하위 도메인 이름을 선택하십시오. 그런 다음 등록 기관의 설정 페이지에서 ‘고급 DNS’ 옵션을 찾아 새 A 레코드를 추가합니다. 호스트 필드를 ” @” 로 설정 하고 값 필드를 고정 IP 주소로 설정합니다. TTL(Time to Lease) 값을 최대한 낮게 설정한 후 저장합니다.

라우터 관리 페이지를 열고 포트 포워딩 , 포트 매핑 또는 포트 관리 섹션을 찾으십시오 .

HTTP 요청에 대한 새 항목을 만듭니다. 로컬 및 공용 포트를 모두 80 으로 설정 하고 로컬 IP 주소를 Raspberry Pi의 IP 주소로 설정합니다.

HTTPS 요청에는 두 번째 열린 포트가 필요합니다. 로컬 및 공용 포트를 모두 443 으로 설정 하고 다시 로컬 IP 주소를 Pi의 IP 주소로 설정합니다.

마지막으로 Git 서버에 대한 SSH 요청을 위해 열려 있는 포트가 필요합니다. 로컬 및 공용 포트를 모두 222 로 설정 하고 로컬 IP 주소를 Pi의 IP 주소로 설정합니다.

Certbot을 사용하여 보안 인증서 및 키를 얻습니다. Certbot 리포지토리를 추가하고 업데이트한 다음 Certbot을 설치합니다.

sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt-get install python3-certbot-apache

디렉토리를 변경하고 nano로 새 파일을 만듭니다.

cd /etc/apache2/sites-available/
nano gitea.conf

새 파일에 다음을 붙여넣고 자신의 도메인 이름을 복사해야 합니다.

<VirtualHost *:80>ServerName your-domain-name.tldProxyPass / http://127.0.0.1:3000/ProxyPassReverse / http:/127.0.0.1:3000/ProxyPreserveHost On</VirtualHost>

Ctrl + O , Ctrl + X 를 사용하여 nano를 저장하고 종료하고 다음을 사용하여 새 conf 파일을 활성화합니다.

sudo a2ensite gitea.conf

아파치를 다시 시작합니다.

sudo service apache2 restart

다음을 사용하여 Certbot을 실행합니다.

sudo certbot

…그리고 목록에서 도메인 이름을 선택합니다. Certbot은 인증서와 키를 가져와서 설치합니다. 프롬프트로 돌아오면 Apache를 다시 시작합니다.

sudo service apache2 restart

Gitea 인스턴스 설정

이제 브라우저에서 https://your-domain-name.tld 주소로 Gitea 인스턴스를 방문할 수 있습니다 . 첫 번째 섹션에서 데이터베이스 유형, 암호 및 기타 변수를 설정할 수 있습니다. 이러한 값은 docker-compose 파일에 지정한 값이며 이미 채워져 있어야 하므로 변경할 필요가 없습니다.

일반 설정 에서 사이트 제목을 적절한 것으로 설정하고 서버 도메인은 도메인 이름이어야 하며 SSH 서버 포트는 222 로 설정해야 합니다 . 기본 URL은 “HTTPS://”를 포함하는 도메인 이름이어야 합니다.

완료되면 큰 파란색 Install Gitea 버튼을 누르십시오. 큰 녹색 차 한 잔과 인스턴스에 지정한 이름과 민달팽이가 여러분을 맞이할 것입니다. 첫 번째 사용자를 생성하려면 페이지 오른쪽 상단의 등록을 클릭한 다음 세부 정보를 입력하십시오. 축하합니다!

다른 사람이 Git 서버에 자신의 리포지토리를 등록하고 호스팅하지 못하도록 하려면 app.ini 파일 을 편집해야 합니다 . 처음에 / (루트) 디렉토리 에 gitea 디렉토리를 만든 경우 다음을 입력합니다.

nano /gitea/gitea/gitea/conf/app.ini

서비스 섹션까지 아래로 스크롤하고 DISABLE_REGISTRATION을 true로 설정합니다.

gitea diable 등록이 true로 설정됨

Ctrl + O , Ctrl + X 를 사용하여 nano를 저장하고 종료한 다음 컨테이너를 다시 시작합니다.

docker-compose downdocker-compose up -d

기테아 사용

GitHub를 사용해 본 적이 있다면 Gitea에서 즉시 집에 있을 것입니다. 로그인하면 사용 가능한 리포지토리가 없음을 알 수 있습니다. 페이지 오른쪽의 + 기호를 클릭하여 하나를 만들고 합리적인 이름을 지정합니다.

Gitea 초기 저장소 생성

확인란을 선택하여 리포지토리를 비공개로 만들거나 전 세계가 볼 수 있도록 열어 둘 수 있습니다. readme 파일로 초기화하려면 확인란을 선택한 다음 저장소 생성을 클릭하여 첫 번째 저장소를 만드십시오! 마치 GitHub인 것처럼 변경하고 커밋하고, 파일을 업로드하고, 편집할 수 있습니다.

SSH를 클릭하여 주소를 복사하면 리포지토리를 로컬 컴퓨터에 복제할 수 없으며 대신 “올바른 액세스 권한이 있고 리포지토리가 있는지 확인하십시오”라는 오류가 표시됩니다. 먼저 Gitea에 로컬 시스템의 SSH 키를 추가해야 합니다. 이렇게 하려면 다음에서 출력을 복사합니다.

cat ~/.ssh/id_rsa.pub

Gitea 웹 인터페이스에서 프로필 사진을 클릭한 다음 설정 > SSH/ GPG 키를 선택합니다 . 키 추가 를 클릭 하고 방금 복사한 키를 붙여넣습니다.

gitea에 ssh 키 추가

이제 Raspberry Pi의 자체 Git 서버에서 자체 Git 리포지토리와 상호 작용할 수 있습니다!

Gitea 인스턴스를 사용하여 멋진 소프트웨어 프로젝트 생성

Git은 놀라운 프로젝트에서 공동 작업을 할 수 있는 멋진 도구이지만 팀이 없어도 자신만의 워크플로를 구성하고 멋진 소프트웨어 또는 구성을 만드는 데 매우 유용합니다. 새로운 프로그래밍 언어를 배우거나 데스크탑 시스템을 최고로 사용자 정의할 때 파일을 추적하는 데 도움이 되도록 사용하십시오.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다