한줄명령

sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git&&sudo mkdir -p /var/lib/gitea/{custom,data,log}  &&sudo chown -R git:git /var/lib/gitea/  &&sudo chmod -R 750 /var/lib/gitea/  &&sudo mkdir /etc/gitea  &&sudo chown root:git /etc/gitea  &&sudo chmod 770 /etc/gitea&&echo 'export GITEA_WORK_DIR=/var/lib/gitea/' >> ~/.bashrc&&export GITEA_WORK_DIR=/var/lib/gitea/
 
sudo wget -O gitea https://dl.gitea.io/gitea/1.22.3/gitea-1.22.3-linux-amd64&&sudo chmod +x gitea&&sudo mv gitea /usr/local/bin

파일 추가

sudo vi /etc/systemd/system/gitea.service

[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target
 
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
 
[Install]
WantedBy=multi-user.target
sudo systemctl enable gitea --now

Nginx 설치 및 설정

Nginx 설치

sudo apt install -y nginx

SSL 임시 인증 처리

sudo mkdir /etc/nginx/ssl && cd /etc/nginx/ssl && sudo gitea cert --host git.lhk.o-r.kr #임시 키

Nginx 설정파일 작성

sudo vi /etc/nginx/sites-available/gitea
server {
	listen 80;
	server_name git.lhk.o-r.kr;
	return 301 https://$server_name$request_uri;
}

server {
	listen 443 ssl http2;
	server_name git.lhk.o-r.kr;
	
	ssl_certificate /etc/nginx/ssl/cert.pem;
	ssl_certificate_key /etc/nginx/ssl/key.pem;
	
	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;
	}	
}

Nginx 설정 적용 및 테스트 및 재시작

sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/ && sudo nginx -t
sudo systemctl reload nginx

여기서 재부팅 후 최초 설치 한 다음 작업

SSL 인증 및 재인증 자동화 처리

# Nginx 플러그인
sudo apt install -y python3-certbot-nginx
 
# --nginx 옵션을 이용해 certbot이 nginx 리로드를 자동으로 수행하게 설정
sudo certbot --nginx -d git.lhk.o-r.kr

Gitea 재설정

app.ini 파일 수정

sudo vi /etc/gitea/app.ini
[server]
PROTOCOL = http
HTTP_ADDR  = 127.0.0.1
SSH_DOMAIN = git.lhk.o-r.kr
DOMAIN = git.lhk.o-r.kr
HTTP_PORT = 3000
ROOT_URL = https://git.lhk.o-r.kr/
APP_DATA_PATH = /var/lib/gitea/data
DISABLE_SSH = false
SSH_PORT = 22
OFFLINE_MODE = false
 
[service] 
DISABLE_REGISTRATION = true
REQUIRE_SIGNIN_VIEW = true
EMAIL_DOMAIN_ALLOWLIST = saehanjsoft.co.kr
 
[i18n]
LANGS = ko-KR
NAMES = 한국어
 
[time]
DEFAULT_UI_LOCATION = Asia/Seoul
 
[webhook]
ALLOWED_HOST_LIST = *

서비스 재시작

sudo systemctl restart gitea

자동 업데이트 처리

sudo rm /usr/lib/python3.12/EXTERNALLY-MANAGED && sudo apt install -y python3-pip && sudo pip3 install gitea-auto-update && cd ~ && mkdir gitea-auto-update && sudo vi /home/ubuntu/gitea-auto-update/settings.ini
[Gitea]
site=https://git.lhk.o-r.kr/api/v1/version
apiUrl=https://api.github.com/repos/go-gitea/gitea/releases/latest
system=linux-amd64
file=/usr/local/bin/gitea
tmpDir=/tmp/
buildFromSource=
sourceDir=
logFile=update.log
sudo crontab -e

매주 일요일 새벽 3시에 업데이트

0 3 * * 0 gitea-auto-update --settings=/home/ubuntu/gitea-auto-update/settings.ini

크론탭 재실행

sudo service cron restart