ubuntu 安裝 gitea 搭配 mysql

本文介紹如何使用 ubuntu 搭配 mysql或 mariadb 建立 gitea 私人 git 伺服器

事前準備

安裝 mysql 或 mariadb 使用下面指令建立資料庫

CREATE DATABASE giteadb;
CREATE USER 'gitea'@'localhost' IDENTIFIED BY '你的密碼';
GRANT ALL ON giteadb.* TO 'gitea'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
ALTER DATABASE giteadb CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;
FLUSH PRIVILEGES;
EXIT;

安裝 git

apt install git

 

linux 建立 git 用戶

adduser –system –shell /bin/bash –group –disabled-password –home /home/git git

 

一、下載並安裝 gitea

wget https://dl.gitea.io/gitea/1.18/gitea-1.18-linux-amd64
cp gitea-1.18-linux-amd64 /usr/bin/gitea
chmod 755 /usr/bin/gitea

二、建立會用到的資料夾

mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
chown git:git /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
chmod 750 /var/lib/gitea/{data,indexers,log}
chmod 770 /etc/gitea

三、編輯系統檔

nano /etc/systemd/system/gitea.service

貼上下面的設定檔

[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=mysql.service

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target
接著輸入下面指令
systemctl daemon-reload
systemctl start gitea
systemctl status gitea
systemctl enable gitea

四、安裝並設定 nginx

安裝 nginx apt install nginx 建立設定檔 nano /etc/nginx/sites-enabled/gitea.conf

貼上下面的 nginx 設定檔(記得改網址)
upstream gitea {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name example.domain;
root /var/lib/gitea/public;
access_log off;
error_log off;
location / {
try_files maintain.html $uri $uri/index.html @node;
}
location @node {
client_max_body_size 0;
proxy_pass http://localhost:3000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_max_temp_file_size 0;
proxy_redirect off;
proxy_read_timeout 120;
}
}

重新開啟 nginx 並看 nginx 的運作狀態
systemctl restart nginx
systemctl status nginx

PS: SSL 可以搭配 certbot

五、設定 gitea

瀏覽器輸入網址 example.domain 開始設定

輸入資料庫名稱、帳號、密碼

gitea http listen port 要設定為 3000

ssh domain 設定為自己的網域

如果不想跟原本登入的 ssh port 的話

ssh port 請改成為不同 port ssh port 改為 21022 (自訂)

按下一步即可安裝完成

 

六、修改 /etc/gitea/app.ini

關閉註冊

DISABLE_REGISTRATION = true

登入後才能搜尋原始碼

REQUIRE_SIGNIN_VIEW = true

關閉 openid 登入及註冊

ENABLE_OPENID_SIGNIN = false

ENABLE_OPENID_SIGNUP = false

 

修改完成存檔重啟

systemctl restart gitea

 

七、新增 ssh port

複製原本的設定檔

cp /etc/ssh/sshd_config /etc/ssh/sshd_config_git

修改 /etc/ssh/sshd_config_git 內容

Protocol 2

Port 21022

AllowUsers git

LoginGraceTime 1m

PermitRootLogin no

PasswordAuthentication no

PermitEmptyPasswords no

 

八、新增 ssh port 的 system server 檔

複製一份原來的 ssh 設定檔

cp /lib/systemd/system/ssh.service /lib/systemd/system/sshd-git.service

 

編輯 sshd-git.service

nano /lib/systemd/system/sshd-git.service

ExecStart=/usr/sbin/sshd -D $SSHD_OPTS

改成 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS -f /etc/ssh/sshd_config_git

 

Alias=sshd.service

改成

Alias=sshd-git.service

 

設定開機啟動並開啟服務

systemctl enable sshd-git.service

systemctl start sshd-git.service

 

九、登入 gitea 並設定私鑰

macos 可以使用下面指令查看公鑰

cat /Users/用戶名/.ssh/id_rsa.pub

將內容貼到新增公鑰的欄位裡,gitea 會顧示如何驗證,依指示操作即可。

 

最後新增一個儲存庫 使用 git clone 測試能不能複製一份回來,可以就代表成功了

ssh://[email protected]:21022/帳號名稱/儲存庫名稱.git