開始在本地部署自己的 Gitea 服務器

0.簡介

在軟件開發和團隊協作中,代碼管理是至關重要的環節。筆者一直使用gitblit管理自己的倉庫。然鵝,這個軟件已經很久沒有更新了。經過多方考察,發現Gitea 是一款輕量級的開源代碼托管平臺,具有易于部署、資源占用少、功能豐富等特點,非常適合個人開發者或小型團隊在本地搭建自己的代碼倉庫。

本文將詳細介紹如何在安裝了git的Windows 10 操作系統上部署 Gitea 服務器,使用 Gitea 自帶的 SSH 服務器,端口設置為 10022,且不開啟 avatar 服務。

文章目錄

  • 0.簡介
  • 1. 準備工作
  • 2. 安裝與初始化配置
    • 2.1. 啟動 Gitea 并生成配置文件
    • 2. 停止 Gitea 并修改配置文件
      • (1)基本配置
      • (2)查看SSH服務器情況
    • 2.2. 登入
  • 3. 有效地組織倉庫
    • 3.1 gitblit和Gitea在倉庫路徑上的一些區別
    • 3.2 gitblit 和 gitea的主要區別
  • 4. 關于版本控制的好處
  • 5. 最重要的事情

1. 準備工作

  1. 下載 Gitea 安裝包:從 Gitea 官方網站(https://gitea.com/)下載適用于 Windows 系統的最新版本可執行文件(.exe 格式)。

  2. 創建安裝目錄:在 Windows 10 系統中選擇一個合適的位置創建目錄,例如在 E 盤根目錄下創建 “gitea” 目錄,路徑為 D:\gitea

2. 安裝與初始化配置

2.1. 啟動 Gitea 并生成配置文件

將下載好的 Gitea 可執行文件(例如 gitea.exe)復制到創建好的 D:\gitea 目錄中。打開git bash命令提示符,進入該目錄,執行以下命令啟動 Gitea:

$cd /e/gitea
$ ./gitea-1.23.8-gogit-windows-4.0-amd64.exe

start gitea
首次啟動后,請打開瀏覽器,進行配置:

set注意:

  1. 為了配置內建SSH選項,暫時把“SSH端口”置空。如果不置空。可能出錯。
  2. 選擇 Sqlite 作為數據庫,個人足夠了,且是綠色版,可以直接U盤拷貝走。如果要配置PG或者MySQL,則會麻煩一些,且不能放到 U盤里帶走了。
  3. 點擊“確定”后,要等待一會(30-300秒),就會跳入注冊界面。
  4. 注冊一個賬號,如admin。

2. 停止 Gitea 并修改配置文件

按下 Ctrl+C 停止 Gitea 服務。接下來需要修改配置文件 app.ini,以滿足我們的預設環境要求。配置文件路徑為 E:\gitea\custom\conf\app.ini 進行以下修改:

(1)基本配置

參考: https://docs.gitea.com/next/administration/config-cheat-sheet

找到 [server] 部分,修改以下內容:

[server]
SSH_DOMAIN = 192.168.101.100
DOMAIN = 192.168.101.100
HTTP_PORT = 3000
ROOT_URL = http://192.168.101.100:3000/
OFFLINE_MODE = true
# 省略N個配置...#下列選項開啟內建SSH服務,必須加入這個選項
START_SSH_SERVER = true#必須修改這個選項為false
DISABLE_SSH = false#網頁上展示的SSH端口
SSH_PORT = 10022#實際監聽的端口
SSH_LISTEN_PORT = 10022

這里建議采用內建SSH,是因為怕gitea把系統ssh服務的配置給改壞了。一般的像我這樣水平不高的個人用戶,最好是使用內建ssh。在Linux下更要注意,Gitea如果使用系統SSH,會配置相關用戶的.ssh文件夾下的內容。主要與內建SSH相關的配置選項如下:


### DISABLE_SSH: false  
當 SSH 功能不可用時禁用該功能。
### START_SSH_SERVER: false  
啟用時,使用內置的 SSH 服務器。
### SSH_SERVER_USE_PROXY_PROTOCOL: false  
期望內置 SSH 服務器的連接攜帶 PROXY 協議頭。
### BUILTIN_SSH_SERVER_USER: {RUN_USER}  
內置 SSH 服務器使用的用戶名。
### SSH_USER: {BUILTIN_SSH_SERVER_USER}  
克隆 URL 中顯示的 SSH 用戶名。若設置為 `(DOER_USERNAME)`,則使用當前登錄用戶的用戶名。此選項僅適用于已配置 SSH 反向代理且需要為 Git SSH 克隆使用不同用戶名的高級用戶,大多數用戶應保持為空或修改 `BUILTIN_SSH_SERVER_USER`。
### SSH_DOMAIN: {DOMAIN}  
服務器的域名,用于顯示克隆 URL。
### SSH_PORT: 22  
克隆 URL 中顯示的 SSH 端口。
### SSH_LISTEN_HOST: 0.0.0.0  
內置 SSH 服務器的監聽地址。
### SSH_LISTEN_PORT: {SSH_PORT}  
內置 SSH 服務器的端口。

(2)查看SSH服務器情況

再次啟動 gitea,會看到如下兩行:

2025/06/05 13:16:36 modules/ssh/ssh.go:385:Listen() [I] Adding SSH host key: E:\gitea\data\ssh\gitea.rsa
2025/06/05 13:16:36 modules/ssh/init.go:26:Init() [I] SSH server started on :10022

可以看見自動創建了ssh的key,并啟動了服務。用 netstat -na 可以看見 3000端口,10022端口都已經啟動。

netstat -naTCP    0.0.0.0:3000           0.0.0.0:0              LISTENINGTCP    0.0.0.0:10022          0.0.0.0:0              LISTENING

注意,如果你的git的版本很老,這一步可能出錯,原因是 gitea 調用 ssh-keygen時候,路徑名里的"“轉義符的問題,讓路徑里的”"破壞了key的全路徑。此時,只要根據data文件夾里多出來的奇怪長文件名“egitea?ata?sh?itea.rsa”,手工恢復到指定文件夾“E:\gitea\data\ssh”里即可。

2.2. 登入

使用創建的賬戶,登入網頁:

gitea
如果能夠順利運行到這里,倉庫就建好了。

3. 有效地組織倉庫

3.1 gitblit和Gitea在倉庫路徑上的一些區別

Gitblit在建立倉庫的時候,會按照用戶輸入的多級路徑來自動歸并倉庫。比如:同樣以user登入,可以直接建立以頂級域名為根的倉庫(和用戶名可以沒關系),且支持多級配置路徑。類似 /opensource/database, /proj2025/simu_test/cargo01 等等,每個路徑下面,可以包含N個倉庫。這種特性特別有利于個人歸攏自己的零碎的小程序。說句實話,如果不是 gitblit 目前更新緩慢,且java發展太快,和gitblit依賴的版本之間的代差越來越大,我是絕對不會遷移的。

Gitea雖然很現代,但是不支持這種配置。默認的倉庫的前綴是和用戶名高度關聯的。這就很要命額。因為作為個人的git倉庫,用戶就我一個人,或者小企業也就幾個人,這種情況下,如果收集的小東西太多,就很混亂了。目前的解決方法:

  1. 按照功能建立組織。組織名稱就是“數據庫工具”、“網絡工具”、“SDR”、“OpenStreetMap” 等名字,組織成員就一個人,就是筆者。
  2. 把各個項目建立在組織名下,這樣,前綴就有了一層劃分,如 SDR/spectrum。
  3. 第二級別劃分,建議采用 class.name的范式,比如 viewer.gqrx,alg.ransac等等。

經過這樣的處理,確保每個大類別里只有10-20個倉庫,就比較清晰了。

3.2 gitblit 和 gitea的主要區別

作為個人用戶本地使用,Gitea 和 Gitblit 相比:

社區活躍度 Gitea勝出。活躍的社區意味著更頻繁的更新、補丁以及更多社區驅動的插件和擴展,能更好地滿足用戶需求和及時修復問題。

綠色安裝與部署,Gitea勝出,作為基于 Go 語言開發的單一二進制文件,個人使用sqlite時,依賴更少,不需要java虛擬機。安裝和部署過程更簡單直接。由于沒有虛擬機, Gitea 對系統資源要求低,能在樹莓派2+TF卡這種低配置設備上運行。而 Gitblit對Java有版本的要求,資源消耗稍微多一些。

用戶界面,Gitblit 勝出。雖然Gitea 提供了更現代、更友好的 web 界面,但我覺得個人使用而言,由于無需pull request和工單這種高級操作,也不需要web hooks,翻到gitblit 導航更直觀、一個屏幕顯示的信息量更全面。 相比之下 Gitea 的界面字很大,很現代,但是用戶體驗不如 Gitblit 好。

功能特性, Gitea更適合現代化開發。Gitea 的敏捷開發支持進步較快, Actions 支持 CI/CD 功能且兼容 GitHub Actions,用戶可采用熟悉的 YAML 格式編寫 workflows 并重用大量已有 Actions 插件,在 CI/CD 方面的支持更現代化和便捷。Gitblit 在這方面的功能更新和集成能力相對較弱。

安全定制性,Gitea略有優勢:Gitea 用戶權限管理更細致,可以設置組織、團隊,控制列表等功能,相比之下 Gitblit 在安全方面配置比較單一。這一點對單用戶來說意義不大。

4. 關于版本控制的好處

個人開發者雖然不總是和別人打交道,但自己使用 Git 也是必要的,主要有以下幾點好處:

一、代碼版本管理更有序
Git 能為每一次代碼修改生成唯一版本號,形成清晰的開發時間線。例如,當你在迭代某個功能時,可能會嘗試多種實現方案,通過 git commit 記錄每版代碼的核心改動(如“優化算法邏輯”“修復內存泄漏”),后續可通過 git log 快速回溯任意階段的代碼狀態。若新功能引入 bug,無需手動恢復文件,直接用 git checkout 切換到穩定版本即可,避免因誤操作導致代碼丟失或混亂,尤其適合長期維護的個人項目。 同時,像我這樣30多年的老園丁,回顧20多年前的時光還是很激動的(我有 Visual Source Safe和SVN歷史庫)。

二、本地協作與實驗更自由
即使不與他人協作,Git 也能在本地構建“虛擬團隊”環境。你可以創建多個分支(如 feature/new-login hotfix/bug-123),在獨立分支上安全地測試新想法或修復緊急問題。例如,開發主程序時想嘗試集成新框架,可新建分支隔離實驗代碼,失敗后直接刪除分支,不影響主分支的穩定性。這種“隔離式開發”能大幅降低試錯成本,讓你更敢于探索新技術,提升開發效率。 我見過很多“ZIP”大神,每天打包一次代碼,這種方式不是不可以,但是很容易糊涂。相對而言,版本控制能解決大部分的問題。

三、數據備份與跨設備同步更便捷
Git 的版本庫本質是代碼的完整備份。將本地倉庫同步到遠程(如 GitHub、Gitee 等個人倉庫可以在U盤里或者云服務器),既能防止本地硬盤故障導致數據丟失,又能實現跨設備開發。比如,你在辦公室用臺式機編寫代碼,下班途中用筆記本電腦通過 Git 拉取最新進度繼續開發,無需手動拷貝文件。此外,一些云服務商提供自動備份功能,進一步增強了數據安全性,讓個人開發者無需擔心因設備故障中斷工作。

四、培養專業開發習慣
使用 Git 是遵循行業標準的體現,能幫助個人開發者養成規范化的工作流程。從編寫有意義的提交信息(如“feat: 添加用戶注冊功能”“docs: 更新 README 文檔”)到合理管理分支,這些習慣會滲透到日常開發中,提升代碼質量和項目可維護性。當未來參與團隊協作時,你已熟練掌握 Git 操作,能快速適應企業級開發流程,避免因工具使用問題拖慢進度。

5. 最重要的事情

要給每個組織、每個項目選取一個言簡意賅的名字,以及一個好看直觀的PNG圖標。這樣,每天打開自己的Git網站,就像是來到了自己的后花園,棒極了。

gitea

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83791.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83791.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83791.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Xsens-AAA工作室品質,為動畫師準備

每一幀都講述著一個故事,當動作真實呈現時,故事便鮮活起來。我們打造并改進了 Xsens Animate,助力專業人士突破數字動畫的界限。 通過升級后的 Xsens Animate,您可以獲得女性和男性解剖模型以及更精確的運動引擎,從一…

嵌入(Embedding)技術的實現原理與應用場景解析

嵌入(Embedding)技術的實現原理與應用場景解析 引言:從One-Hot到語義空間 在自然語言處理的演進歷程中,嵌入技術(Embedding)的誕生標志著一個重要轉折點——它讓離散的符號表示突破了維度詛咒&#xff0c…

金倉數據庫征文-金倉KES數據同步優化實踐:邏輯解碼與增量同步

目錄 一.同步場景與方案選型 二.什么是KES 三.同步環境配置 1.前置條件驗證 2.邏輯解碼配置 四.同步實施與問題排查 1.結構映射規則 2.增量數據捕獲 3.數據一致性校驗 五.性能調優實踐 1.同步線程優化 2.批量提交優化 3.資源監控指標 六.典型場景解決方案 1.雙向…

開源語義分割工具箱mmsegmentation基于Lovedata數據集訓練模型

開源語義分割工具箱mmsegmentation安裝環境 文章目錄 1、下載數據集2、整理數據集3、下載預訓練模型4、測試5、訓練模型參考官方數據處理步驟 https://github.com/open-mmlab/mmsegmentation/blob/main/docs/zh_cn/user_guides/2_dataset_prepare.md#loveda 數據集類別標簽:…

Python概率統計可視化——概率分布、假設檢驗與分子運動模型

Python概率統計可視化——概率分布、假設檢驗與分子運動模型 前言 概率統計作為描述不確定性和隨機現象的數學工具,廣泛應用于物理學、生物學、經濟學等領域。然而,抽象的概率分布和統計推斷過程往往難以直觀理解。可視化技術通過將概率密度、假設檢驗邏…

NLP學習路線圖(二十二): 循環神經網絡(RNN)

在自然語言處理(NLP)的廣闊天地中,序列數據是絕對的核心——無論是流淌的文本、連續的語音還是跳躍的時間序列,都蘊含著前后緊密關聯的信息。傳統神經網絡如同面對一幅打散的拼圖,無法理解詞語間的順序關系&#xff0c…

禪道5月更新速覽 | 新增交付物配置功能,支持建立跨執行任務依賴關系,研發效能平臺上線

禪道體驗又升級啦!禪道5月新功能合集來啦,研發效能平臺與大家見面啦! 我們將繼續堅持,月月有大招,迭代不停歇,快來更新禪道,體驗全新的項目管理工具吧~ ?

【PDF PicKiller】PDF批量刪除固定位置圖片工具,默認解密,可去一般圖、背景圖、水印圖!

PDF批量刪除固定位置圖片工具 PDF PicKiller <center>PDF PicKiller [Download](https://github.com/Peaceful-World-X/PDF-PicKiller)&#x1f929; 工具介紹&#x1f973; 主要功能&#x1f92a; 軟件使用&#x1f92a; 參數解釋&#x1f92a; 關鍵代碼&#x1f929; 項…

kubeadm安裝k8s

1、環境準備 1.1、升級系統內核 參考另一篇文章&#xff1a;https://blog.csdn.net/u012533920/article/details/148457715?spm1011.2415.3001.5331 1.2、設置Hostname cat <<EOF > /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhos…

Vue基礎(14)_列表過濾、列表排序

Array.prototype.filter()【ES5】 filter() 方法創建給定數組一部分的淺拷貝&#xff0c;其包含通過所提供函數實現的測試的所有元素。 語法&#xff1a; filter(callbackFn) filter(callbackFn, thisArg) 參數&#xff1a; callbackFn(回調函數)&#xff1a;為數組中的每個元…

ComfyUI 中如何使用 Depth ControlNet SD1.5

目錄 SD1.5 Depth ControlNet 簡介 Depth ControlNet 主要特點 SD1.5 Depth ControlNet工作流準備工作 1. 安裝必要插件 方式一:使用 ComfyUI Manager(推薦) 方式二:通過 git 安裝必要插件 方式三:手動安裝(不推薦) 2.1 下載工作流所需模型 2.2 模型存放位置 SD…

IoT/HCIP實驗-3/LiteOS操作系統內核實驗(任務、內存、信號量、CMSIS..)

文章目錄 概述HelloWorld 工程C/C配置編譯器主配置Makefile腳本燒錄器主配置運行結果程序調用棧 任務管理實驗實驗結果osal 系統適配層osal_task_create 其他實驗實驗源碼內存管理實驗互斥鎖實驗信號量實驗 CMISIS接口實驗還是得JlINKCMSIS 簡介LiteOS->CMSIS任務間消息交互…

mysql的分頁場景下,頁數越大查詢速度越慢的解決方法

一 問題描述 select * from table limit 0,10掃描滿足條件的10行&#xff0c;返回10行&#xff0c; 但當limit 99989,10的時候數據讀取就很慢,limit 99989,10的意思掃描滿足條件的99999行&#xff0c;扔掉前面的99989行&#xff0c;返回最后的10行&#xff0c;這樣速度就會很慢…

MDP的 Commands模塊

文章目錄 Isaac Lab Commands 模塊詳細指南&#x1f4cb; 模塊概述&#x1f3d7;? 模塊架構&#x1f3aa; 命令類型詳解1. &#x1f6ab; 空命令 (NullCommand)2. &#x1f3c3; 速度命令 (VelocityCommand)&#x1f3b2; 均勻分布速度命令 (UniformVelocityCommand)&#x1f…

全流程開源!高德3D貼圖生成系統,白模一鍵生成真實感紋理貼圖

導讀 MVPainter 隨著3D生成從幾何建模邁向真實感還原&#xff0c;貼圖質量正逐漸成為決定3D資產視覺表現的核心因素。我們團隊自研的MVPainter系統&#xff0c;作為業內首個全流程開源的3D貼圖生成方案&#xff0c;僅需一張參考圖與任意白模&#xff0c;即可自動生成對齊精確…

Levenberg-Marquardt算法詳解和C++代碼示例

Levenberg-Marquardt&#xff08;LM&#xff09;算法是非線性最小二乘問題中常用的一種優化算法&#xff0c;它融合了高斯-牛頓法和梯度下降法的優點&#xff0c;在數值計算與SLAM、圖像配準、機器學習等領域中應用廣泛。 一、Levenberg-Marquardt算法基本原理 1.1 問題定義 …

理解網絡協議

1.查看網絡配置 : ipconfig 2. ip地址 : ipv4(4字節, 32bit), ipv6, 用來標識主機的網絡地址 3.端口號(0~65535) : 用來標識主機上的某個進程, 1 ~ 1024 知名端口號, 如果是服務端的話需要提供一個特定的端口號, 客戶端的話是隨機分配一個端口號 4.協議 : 簡單來說就是接收數據…

如何計算光伏工程造價預算表?

在光伏工程的推進過程中&#xff0c;造價預算表的編制是至關重要的環節&#xff0c;傳統的光伏工程造價預算編制方法&#xff0c;往往依賴人工收集數據、套用定額&#xff0c;再進行繁瑣的計算與匯總&#xff0c;不僅效率低下&#xff0c;而且容易出現人為誤差&#xff0c;導致…

新聞速遞|Altair 與佐治亞理工學院簽署合作備忘錄,攜手推動航空航天領域創新

近日&#xff0c;全球計算智能領域領先企業 Altair 與佐治亞理工學院正式簽署合作備忘錄&#xff0c;旨在深化航空航天領域的技術創新合作。 根據協議&#xff0c;佐治亞理工學院的航空航天系統設計實驗室 (ASDL) 將獲得 Altair 的技術支持&#xff0c;運用仿真與數據分析 (DA)…

PLSQLDeveloper配置OracleInstantClient連接Oracle數據庫

PL/SQLDeveloper配置Oracle Instant Client連接Oracle數據庫 文章目錄 PL/SQLDeveloper配置Oracle Instant Client連接Oracle數據庫 1. Oracle Instant Client下載與配置1. Oracle Instant Client下載2. Oracle Instant Client解壓配置1. 解壓2. 配置 2. PL/SQL Developer下載、…