1. 방화벽 해제하기
$ sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
success
3015로 도전
$ sudo firewall-cmd --reload
success
1. Gitea 다운로드
wget 명령어를 이용하여 Gtiea Linux 바이너리를 다운로드 한다.
다운로드 경로는 /home/사용자_디렉토리/ 경로에 gitea-버전-linux.amd64 파일을 다운로드 받을 것이다.
$ wget -O /home/사용자_디렉토리/gitea https://dl.gitea.com/gitea/1.23.1/gitea-1.23.1-linux-amd64
--2025-01-29 10:46:17-- https://dl.gitea.com/gitea/1.23.1/gitea-1.23.1-linux-amd64
Resolving dl.gitea.com (dl.gitea.com)... 54.230.176.38, 54.230.176.120, 54.230.176.28, ...
Connecting to dl.gitea.com (dl.gitea.com)|54.230.176.38|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 114451088 (109M) [binary/octet-stream]
Saving to: `/home/saakmiso/gitea'
/home/saakmiso/gitea 100%[=========================================================================>] 109.15M 8.59MB/s in 12s
2025-01-29 10:46:30 (8.91 MB/s) - `/home/사용자_디렉토리/gitea' saved [114451088/114451088]
위 명령을 실행하면 /home/사용자_디렉토리/ 경로에 gitea라는 이름으로 파일이 저장된다.
Gitea를 시스템 전역에서 실행할수 있도록 gitea 바이너리 파일을 "/usr/local/bin"으로 이동시킨다.
$ sudo mv /home/사용자_디렉토리/gitea /usr/local/bin
이제 gitea 명령어를 터미널 어디에서든 실행 시킬 수 있다.
Gitea가 /usr/local/bin으로 이동한 후, 실행권한을 부여해 주어야 한다.
$ sudo chmod +x /usr/local/bin/gitea
이제 gitea를 실행할 수 있다.
3. Gitea 시스템 사용자 생성
$ sudo groupadd --system gitea
먼저, gitea라는 시스템 사용자를 생성해야 합니다.
$ sudo useradd --system --create-home --home-dir /var/lib/gitea --shell /bin/bash --gid gitea gitea
--system → 시스템 계정으로 생성
--create-home → 홈 디렉토리 생성
--home-dir /var/lib/gitea → 홈 디렉토리를 /var/lib/gitea로 지정
--shell /bin/bash → 기본 셸을 /bin/bash로 설정
--gid gitea → gitea 그룹을 지정
gitea → 생성할 사용자 이름
사용자 정보 확인
$ id gitea
uid=991(gitea) gid=988(gitea) groups=988(gitea)
4. Gitea 디렉토리 생성 및 권한 설정
$ sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
$ sudo chown gitea:gitea /var/lib/gitea/{data,indexers,log}
$ sudo chmod 750 /var/lib/gitea/{data,indexers,log}
$ sudo mkdir /etc/gitea
$ sudo chown gitea:gitea /etc/gitea
$ sudo chmod 770 /etc/gitea
$ sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
$ sudo chown -R gitea:gitea /var/lib/gitea/{data,indexers,log}
$ sudo chmod 750 /var/lib/gitea/{data,indexers,log}
$ sudo mkdir /etc/gitea
$ sudo chown -R gitea:gitea /etc/gitea
$ sudo chmod 770 /etc/gitea
$ sudo mkdir -p /var/lib/gitea/.ssh
$ sudo chown -R gitea:gitea /var/lib/gitea/.ssh
$ sudo chmod 700 /var/lib/gitea/.ssh
다음 명령을 사용하여 파일 권한을 부여한다.
$ restorecon -rv /usr/local/bin/gitea
Relabeled /usr/local/bin/gitea from unconfined_u:object_r:user_home_t:s0 to unconfined_u:object_r:bin_t:s0
Systemd Unit File을 만듭니다.
Systemd Unit File이란?
systemd는 리눅스 시스템에서 서비스(daemon), 장치, 마운트 포인트 등을 관리하는 기본적인 시스템 및 서비스 관리 도구입니다. systemd의 구성 요소 중 하나인 Unit File은 특정 서비스나 프로세스를 정의하고 관리하는 설정 파일입니다.
다음 명령을 사용하여 "/etc/systemd/system/" 디렉터리에 파일을 다운로드합니다.
$ sudo wget https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service -P /etc/systemd/system/
--2025-02-05 19:51:35-- https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.109.133, 185.199.108.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2435 (2.4K) [text/plain]
Saving to: `/etc/systemd/system/gitea.service'
gitea.service 100%[===========================================================================================>] 2.38K --.-KB/s in 0s
2025-02-05 19:51:35 (33.6 MB/s) - `/etc/systemd/system/gitea.service' saved [2435/2435]
$ sudo vim /etc/systemd/system/gitea.service
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target
###
# Don't forget to add the database service dependencies
###
#
#Wants=mysql.service
#After=mysql.service
#
#Wants=mariadb.service
#After=mariadb.service
#
#Wants=postgresql.service
#After=postgresql.service
#
#Wants=memcached.service
#After=memcached.service
#
#Wants=redis.service
#After=redis.service
#
###
# If using socket activation for main http/s
###
#
#After=gitea.main.socket
#Requires=gitea.main.socket
#
###
# (You can also provide gitea an http fallback and/or ssh socket too)
#
# An example of /etc/systemd/system/gitea.main.socket
###
##
## [Unit]
## Description=Gitea Web Socket
## PartOf=gitea.service
##
## [Socket]
## Service=gitea.service
## ListenStream=<some_port>
## NoDelay=true
##
## [Install]
## WantedBy=sockets.target
##
###
[Service]
# Uncomment the next line if you have repos with lots of files and get a HTTP 500 error because of that
# LimitNOFILE=524288:524288
RestartSec=2s
Type=simple
## User 변경
User=git
## Group 변경
Group=git
WorkingDirectory=/var/lib/gitea/
# If using Unix socket: tells systemd to create the /run/gitea folder, which will contain the gitea.sock file
# (manually creating /run/gitea doesn't work, because it would not persist across reboots)
#RuntimeDirectory=gitea
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
## USER, HOME 변경
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
# If you install Git to directory prefix other than default PATH (which happens
# for example if you install other versions of Git side-to-side with
# distribution version), uncomment below line and add that prefix to PATH
# Don't forget to place git-lfs binary on the PATH below if you want to enable
# Git LFS support
#Environment=PATH=/path/to/git/bin:/bin:/sbin:/usr/bin:/usr/sbin
# If you want to bind Gitea to a port below 1024, uncomment
# the two values below, or use socket activation to pass Gitea its ports as above
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE
###
# In some cases, when using CapabilityBoundingSet and AmbientCapabilities option, you may want to
# set the following value to false to allow capabilities to be applied on gitea process. The following
# value if set to true sandboxes gitea service and prevent any processes from running with privileges
# in the host user namespace.
###
#PrivateUsers=false
###
[Install]
WantedBy=multi-user.target
User=gitea
Group=gitea
Environment=USER=gitea HOME=/var/lib/gitea GITEA_WORK_DIR=/var/lib/gitea
$ sudo chown gitea:gitea /usr/local/bin/gitea
$ sudo chmod 750 /usr/local/bin/gitea
포트 이쪽으로
$ sudo vim /etc/gitea/app.ini
[server]
HTTP_ADDR = 0.0.0.0
HTTP_PORT = 3000
Gitea 서비스를 다시 로드합니다.
$ sudo systemctl enable --now gitea
Created symlink /etc/systemd/system/multi-user.target.wants/gitea.service → /etc/systemd/system/gitea.service.
Gitea 서비스 시작
$ sudo systemctl start gitea
Gitea 서비스의 상태를 확인한다.
$ systemctl status gitea
gitea.service - Gitea (Git with a cup of tea)
Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-07-20 18:25:45 CEST; 23s ago
Main PID: 14699 (gitea)
Tasks: 8 (limit: 11120)
Memory: 127.1M
CPU: 896ms
CGroup: /system.slice/gitea.service
└─14699 /usr/local/bin/gitea web --config /etc/gitea/app.ini
$ sudo vim /etc/gitea/app.ini
APP_NAME = Gitea: Git with a cup of tea
RUN_USER = gitea
WORK_PATH = /var/lib/gitea
RUN_MODE = prod
[server]
HTTP_ADDR = 0.0.0.0
HTTP_PORT = 3015
SSH_DOMAIN = https://gitea.saakmiso.com/
DOMAIN = https://gitea.saakmiso.com/
ROOT_URL = https://gitea.saakmiso.com/
APP_DATA_PATH = /var/lib/gitea/data
DISABLE_SSH = false
SSH_PORT = 22
LFS_START_SERVER = true
LFS_JWT_SECRET = ie2WNu7p5eF7LN_ZRQLM1IVzdQZYXVRGEAxh0QPfFyw
OFFLINE_MODE = true
[database]
DB_TYPE = mysql
HOST = 127.0.0.1:3306
NAME = gitea_db
USER = gitea
PASSWD = 비밀번호
SCHEMA =
SSL_MODE = disable
PATH = /var/lib/gitea/data/gitea.db
LOG_SQL = false
[repository]
ROOT = /var/lib/gitea/data/gitea-repositories
[lfs]
PATH = /var/lib/gitea/data/lfs
[mailer]
ENABLED = false
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = false
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.localhost
[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = true
[cron.update_checker]
ENABLED = false
[session]
PROVIDER = file
[log]
MODE = console
LEVEL = info
ROOT_PATH = /var/lib/gitea/log
[repository.pull-request]
DEFAULT_MERGE_STYLE = merge
[repository.signing]
DEFAULT_TRUST_MODEL = committer
[security]
INSTALL_LOCK = true
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3NDA5MDYxMjJ9.Cu7KpkpK0a5gvzRK-KgJxGQm5LeWj92oHrVN7lDTHwo
PASSWORD_HASH_ALGO = pbkdf2
[oauth2]
JWT_SECRET = fu0xNRS416tNjtapiDjGDwrA_jgNW7DlR4U4TEbRaTY