Gitea 是一套功能相當完整卻又非常輕量的 Git 源碼版控與議題追蹤系統,我在這幾年也幫好幾家公司安裝過,基本上在 Windows 上面安裝 Gitea 的過程十分容易,只要幾個命令就可以安裝到好,但是若真的要一次安裝到好,其實還是有一些門檻,畢竟網路上的資料太多太亂,這篇文章我將分享我的安裝過程,基本上照著做應該都可以順利的安裝到好。
以下命令皆以系統管理員身份執行 Windows PowerShell 命令視窗。
-
安裝 Chocolatey 套件管理器
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
-
安裝 Git for Windows 命令列工具
安裝 Gitea 之前,請務必事先安裝 Git 命令列工具!
choco install git -y
-
安裝 PostgreSQL 資料庫
以下命令會自動安裝好 PostgreSQL 14 資料庫,並自動註冊名為 postgresql-x64-14 - PostgreSQL Server 14 (postgresql-x64-14
) 的 Windows 服務。除此之外,這個版本也會連帶安裝 pgAdmin 資料庫管理工具!
choco install postgresql --version=14.1.1 --params '/Password:8ws9NVXS7s69' --params-global -y
以上命令的 8ws9NVXS7s69
是 PostgreSQL 資料庫的預設管理者密碼,預設使用者名稱為 postgres
!
安裝完畢請關閉 PowerShell 視窗之後重新開啟!
如果無法透過 Chocolatey 進行安裝,請到 PostgreSQL: Windows installers 下載 postgresql-14.1-1-windows-x64.exe 安裝檔,並執行以下命令進行 Silent 安裝:
postgresql-14.1-1-windows-x64.exe `
--mode "unattended" `
--unattendedmodeui "none" `
--superaccount "postgres" `
--superpassword "8ws9NVXS7s69" `
--enable_acledit 1 `
--install_runtimes 0 `
--serverport 5432 `
--debugtrace postgresql-install.log
-
測試連接 PostgreSQL 資料庫,確認帳號密碼都可以正確連線
$env:PGPASSWORD='8ws9NVXS7s69'; '\conninfo' | psql -Upostgres
請確認看到以下訊息才算安裝成功!
You are connected to database "postgres" as user "postgres" on host "localhost" (address "::1") at port "5432".
-
建立 Gitea 專用的資料庫
# 這是為了讓 psql 可以在執行時免輸入密碼
$env:PGPASSWORD='8ws9NVXS7s69'
# 這個是專門給 Gitea 使用的資料庫使用者帳號密碼
$GiteaDbPassword = 'FfW75FW3raWg'
"CREATE ROLE gitea WITH LOGIN PASSWORD '${GiteaDbPassword}';" | psql -Upostgres
# 建立名為 gitea 的資料庫
"CREATE DATABASE gitea WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';" | psql -Upostgres
-
下載 Gitea 主程式
Gitea 整套系統只有一個約 140 MiB 的單一執行檔而已,完全免安裝,直接下載執行檔就可以執行!
請下載 Current Release 版本,假設我們選擇安裝 Gitea 1.16.0 版本,你可以使用以下命令下載 Gitea 主程式:
mkdir C:\Gitea
Invoke-WebRequest -Uri https://dl.gitea.io/gitea/1.16.0/gitea-1.16.0-windows-4.0-amd64.exe -OutFile C:\Gitea\gitea.exe
下載路徑: https://dl.gitea.io/gitea
-
啟動 Gitea 伺服器
C:\Gitea\gitea.exe
第一次啟動會喚醒 Windows Security Alert 視窗,請務必按下 Allow access 按鈕,否則服務會連不上!
開啟瀏覽器並連到 http://localhost:3000/ 網址,並開啟 Initial Configuration 初始化設定頁面!
-
初始化 Gitea 設定 (Initial Configuration)
- Database Type:
PostgreSQL
- Host:
127.0.0.1:5432
- Username:
gitea
- Password:
FfW75FW3raWg
- Database Name:
gitea
- Gitea HTTP Listen Port:
80
- Gitea Base URL:
http://gitea.localhost/
- Server and Third-Party Service Settings
- 建議勾選 Enable Local Mode
- 取消勾選 Enable OpenID Sign-in
- 建議勾選 Disable Self-Registration
- 取消勾選 Allow Creation of Organizations by Default
- 設定欄位 Hidden Email Domain 為你公司的 E-mail 域名
- Administrator Account Settings
所有 Chromium-based 瀏覽器預設會將所有 *.localhost
域名自動導向 127.0.0.1
本機 IP 位址,所以你在本機可以不用特別調整 DNS 或 hosts
設定!
按下 Install Gitea 按鈕之後,完整的 Gitea 設定檔會儲存在 C:/Gitea/custom/conf/app.ini
檔案中,瀏覽器會自動開啟 http://gitea.localhost 網站,你只要使用上述設定的預設 Gitea 管理者名稱與密碼登入即可!
接著請回到 Windows PowerShell 視窗按下 Ctrl+C
停止 Gitea.exe
執行。
-
設定 Gitea 支援 HTTPS 與 SSH 安全加密連線
假設你的對外域名是 gitea.localhost
的話,可以使用 Gitea.exe
快速幫我們建立 TLS/SSL 自簽憑證。
以下命令會在 C:\Gitea\custom
目錄下自動產生 cert.pem
(憑證) 與 key.pem
(金鑰):
cd C:\Gitea\custom; C:\Gitea\gitea.exe cert --host gitea.localhost --ca
以下命令會將 cert.pem
註冊到「受信任的根憑證授權單位」的憑證儲存區,讓你的本機電腦(包含瀏覽器)可以信任這張憑證:
certutil -addstore -enterprise Root cert.pem
編輯 C:/Gitea/custom/conf/app.ini
設定檔,並調整 [server]
區段,合併以下設定:
[server]
ROOT_URL = https://gitea.localhost/
HTTP_PORT = 443
PROTOCOL = https
CERT_FILE = cert.pem
KEY_FILE = key.pem
REDIRECT_OTHER_PORT = true
PORT_TO_REDIRECT = 80
START_SSH_SERVER = true
BUILTIN_SSH_SERVER_USER = git
相關設定請參見 Gitea Config Cheat Sheet 文件。
-
修復 Gitea 內建的 OpenSSH Server 無法支援 RSA 演算法的問題
目前 Gitea 1.16 版還有個 RSA public keys cannot authenticate against internal SSH if the client has a recent ssh version (which disables ssh-rsa algorithm) #17798 問題尚待解決,所以如果你的 SSH 用戶端使用了太新的 SSH 版本,可能會有無法透過 SSH 連上 Gitea 的問題。
目前暫時的解決方案是在用戶端建立一個 ~/.ssh/config
檔案,並放置以下內容:
Host localhost
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
-
將 Gitea 註冊為 Windows 服務
首先你必須先查出目前的電腦名稱:
$env:COMPUTERNAME
然後再修改 C:/Gitea/custom/conf/app.ini
設定檔,務必將 RUN_USER
修改為 電腦名稱
+ $
這樣的格式(這是電腦帳戶的格式):
RUN_USER = COMPUTERNAME$
預設 C:/Gitea/custom/conf/app.ini
設定檔將所有 Log 輸出到 Console,如果我們要跑在 Windows 服務下,你必須修改 [log]
區段的設定,將所有 Log 改儲存到 C:/Gitea/log/gitea.log
檔案中。完整設定請參見 Advanced: Logging Configuration 說明。
[log]
MODE = file
LEVEL = info
ROOT_PATH = C:/Gitea/log
FILE_NAME = %(ROOT_PATH)/gitea.log
ROUTER = console
最後直接利用 sc.exe
自動註冊並啟動 Gitea
的 Windows 服務
sc.exe create gitea start= auto binPath= '"C:\gitea\gitea.exe" web --config "C:\gitea\custom\conf\app.ini"'
sc.exe start gitea
設定 Git 用戶端工具信任 Gitea 的自簽憑證
由於 Git for Windows 自己有一份 CA 清單,跟 Windows 憑證儲存區的 CA 憑證是分開的,因此使用自簽憑證架設 Gitea 的話,預設所有使用者都將無法成功利用 git clone
複製專案回去,你必須請每個人都使用以下步驟進行設定,就可以順利透過 Git 連上 Gitea 下載原始碼。
-
先將 Git 預設安裝的 CA 清單加入到個人的家目錄中,並修改 Git 設定使用自訂的路徑
$CABundlePath=$(git config --system http.sslCAInfo)
Copy-Item -Path $CABundlePath -Destination "$env:USERPROFILE\ca-bundle.crt"
git config --global http.sslCAInfo "$env:USERPROFILE\ca-bundle.crt"
注意:千萬不要關閉 http.sslVerify
設定,這會大幅降低 Git 連線的安全性!
-
將 Gitea 安裝的伺服器自簽憑證加入到 ca-bundle.crt
檔案中
Get-Content C:/Gitea/custom/cert.pem | Out-File -Append -FilePath "$env:USERPROFILE\ca-bundle.crt" -Encoding ascii
解除安裝 Gitea 與 PostgreSQL
-
停止並刪除 Windows 服務
sc.exe stop gitea
sc.exe delete gitea
-
解除安裝 PostgreSQL 資料庫
cuninst postgresql --force-dependencies -y
-
移除 Gitea 安裝目錄
CD C:\; Remove-Item C:\Gitea\ -Recurse -Force
相關連結