本文介紹如何使用 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