自建 git 服务器

所有老板(至少 99%)都一样,想花一分钱办两分钱的事,想招十块钱的人干二十块钱的事......我表示理解(A Pei ~~ 既想马儿跑得快,又想马儿不吃草)

在老板眼中,我恰好是那个性价比最高的人(自以为是)!对于我来说,多学点东西不是什么坏事,虽然有点辛苦。我一贯赞同一个观点:在一件中上超过90%以上的人,不容易;在两件事上超过80%以上的人,相对容易;......在五件事、十件事上超过90%以上的人,也相对容易!在快认(天)命的年纪,我有勇气和能力认为工作对于我而言就是工作而已,我不看重任何一份工作,但是只要我干,我就会努力去干好,尽一个职工打工人的本分。

gitee 企业版......呵呵!gitee 私域部署......呵呵呵!

我总不能天天找小伙伴们要源码吧,我不愿意被人 BS:既不专业又多心!这点我也理解:毕竟源码也是公司的资产,现在的小伙伴们流动又快,谁能保证走的时候源码是完整的?

于是,自建 git 服务器就是当下要紧的任务了。

网上搜索了相关的资料,以为 Gitea 是最为理想的方案。开源、免费,支持代码审查、错误跟踪、网络托管、私人分支、个人分支、自托管,版本控制系统为 git (接地气),除不支持构建系统、发布二进制文件外和商业支持外,可以说接近于完美了。而且是开箱即用,只需简单配置即可搭建完成。

服务器:实体、云、虚拟,均可(本例是 win 的 server 系统)

git 工具包:Git,自行安装即可

gitea软件包https://github.com/go-gitea/gitea/releases,相对麻烦一点点,老司机都懂得如何踩油门加速,想办法弄下来就是成功(本例下的是 windows-4.0-amd64,建议下载压缩包,不压缩下载还是有些慢的)

要戳"show all ......",不然是找不到 win 的包的。

sqlite3:SQLite Download Page,小型、快速,免安装(需配置环境变量,方便迁移)

sqlite3 解压到文件夹中(不要有中文、空格、特殊字符等),环境变量中系统变量 Path 添加一条 sqlite3 所在路径(界面为 power toys 系统变量编辑界面)

gitea 下载(解压)完成,放到一个文件夹中(开箱即用,无需安装),位置任意但不建议有中文字符、空格及特殊符号。

自动生成目录不用管。data 目录为手动创建,用于存放数据库及仓库相关文件。data 目录下又有手工创建目录 DB,用于存放 sqlite3 数据库文件。

所有手工创建目录必须要创建,否则在配置时会出错。

运行 gitea,如图。

访问默认地址:localhost:3000,配置说明如下图:

可选设置,依个人实际进行设置即可,无要求可默认。

管理员账号是必须要有,不然何以掌控全局?!填之......

稍等十秒左右,系统就部署完成。因为创建了管理员账号,部署完成后直接进入账号仓库界面。

按正常步骤创建仓库。除仓库名称是必填外(拥有者,可以选择注册用户),其它为选填。

创建完成!

github 20年10月1日后将新库主分支名称改为 main,而 git 默认初始化本地仓库仍为 master,可能导致推送到远程会出现这样或那样的问题。我们修改 git 配置文件(2.X 以上版本支持),将默认(主)分支名称改为 main。修改地方如下图。

万事俱备,以本地现有项目为基础,初始化本地仓库(git 已经安装或配置好)并推送到远程。

推送到远程,提示安全认证未启用。

再次强制推送(--force,创建时初始化了远程仓库【空库,仅有.gitignore】,但未做同步,因此强制推送,本地覆盖远程),弹出对话框要求验证。输入用户密码,确定。推送成功。再次推送时即无需再次认证了。

最终仓库内空如下:

成功!后续研究启用 https 的方法,成功便更新。


gitea 启动后的命令行窗口不能关闭。


一个可以坠落的老菜鸡的自我救赎!

自勉!!!


开启了 https ,因使用的是自签名,所以也一样要添加用户凭据, 添加过一次后续就可以直接 push 推送了。【后面有空再研究使用第三方证书颁发机构签名】

生成自签名,两个签名文件在 gitea 所在目录中,将两个文件复制到 custcom 目录中。

注意:gitea cert --host 127.0.0.1,这里的 gitea 是 gitea 的文件名。如是有版本号则为:

gitea-1.22.1-windows-4.0-amd64 cert --host 127.0.0.1

嫌麻烦可以修改 gitea 的文件名。

复制代码
;; HOST 是 gitea 服务器的地址/域名,架在内网的就直接使用内网 IP
gitea cert --host [HOST]

本次使用 gitea 内置的 HTTPS 支持,通过编辑 app.ini 文件实现。app.ini 文件在 custcom 下 的 conf 目录中。修改如下:

复制代码
    [server]
    PROTOCOL  = https
    ROOT_URL  = https://git.example.com:3000/
    HTTP_PORT = 3000
    CERT_FILE = cert.pem
    KEY_FILE  = key.pem

ROOT_URL 和 HTTP_PORT 按实际进行修改。

重新启动 gitea 后,就只能使用 https 登录 ROOT_URL 指定的地址了,127 的回环地址不能使用了。

漏了一点:要设置HTTP重定向。Gitea服务器仅支持监听一个端口;要重定向 HTTP 请求至 HTTPS 端口,需要启用HTTP重定向服务:

复制代码
[server]
REDIRECT_OTHER_PORT = true
;; Port the redirection service should listen on
PORT_TO_REDIRECT = 3080
相关推荐
前进的李工4 分钟前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
vibecode21 分钟前
网站服务器失去响应怎么解决?我把连接超时和读超时这两段计时拆开跑了一遍
运维·服务器
全栈陈序员2 小时前
【Git】从入门到精通(七)—— git status:查看仓库状态
大数据·git·elasticsearch
正在走向自律2 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
迪康Defender2 小时前
终端供应链安全:应用白名单与软件正版化检测落地|终端安全治理实践
运维·服务器·网络·安全·web安全·自动化·运维开发
沫璃染墨3 小时前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
CCIE-Yasuo3 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
La Pulga4 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
li星野5 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
旖旎夜光5 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习