Gitea:自建Git新选择

前些年自建 Git 的首选应该是 Gitlab,印象中 Gitlab 是非常臃肿的,对内存的需求比较大,最好是 4G 以上内存的机器。相比之下,Gitea 就很轻量级了,能够很好的节约系统资源。另外 Go 程序部署起来也更方便。还有一个比较实用的功能是,Gitea 支持全文搜索,而 Gitlab 社区版本不支持。和 Gerrit 对比,Gitea 有着和 Github 体验类似的工单系统,也能很好的和CI工具集成,比如 Drone CI,获得和 Github 类似的使用体验。综合来看,使用 Gitea 是一个不错的选择。

安装

Go 程序基本都是把二进制跑起来就可以了,不论是直接二进制方式运行,还是跑到容器里,都比较省心。

二进制安装

提供 2 个基本的环境变量,用如下命令启动:

可以用 systemd 获取 supervisor 来管理,以下是 systemd 的例子。

使用Kubernetes安装

使用 Kubernetes,可以很容易的实现高可用。参考 Github 项目 ops-itop/gitea-k8s。由于该项目是针对 iTop 的 kubernetes 插件来开发的,没有提供 Deployment 的 yaml 文件,但是仍然有一定的参考性。

镜像制作

Dockerfile 如下:

启动脚本 run.sh 如下:

备份脚本 dump.sh 见下文。

SSH 代理

通过 ingress nginx 的 tcp 代理 功能来代理 ssh。

数据安全

除了做好备份,可以考虑更改 Gitea pv 的回收策略为 Retain

初始化

使用命令行添加管理员, 用户名不能为 admin

使用

以下是我的一些配置,供参考:

  • 配置 SMTP 和 ENABLE_NOTIFY_MAIL = true,让用户可以收到通知邮件
  • 配置代码搜索,[indexer] 下配置REPO_INDEXER_ENABLED = true
  • 禁用 gravatar DISABLE_GRAVATAR
  • 开启 OIDC 方便用户登录,如果公司没有 OIDC,可以用 dex 代理一下,实现一个 OIDC
  • 设置 LANDING_PAGE = explore
  • 使用 HTTPS,方便 Go 程序开发,对于私有仓库,可能还需要 ~/.gitconfig 中添加如下配置:

备份与恢复

备份可以参考上文提到的备份脚本 dump.sh

可以考虑用挂载 PV 的方式将备份移到另一个盘,或者如果有 minio 之类的 S3 服务,可以上传过去。

恢复目前需要手动,将备份包解压到目标目录即可,记得权限改为 Gitea 运行用户。

如果恢复的是一个启用了 OIDC 的 Gitea 实例,当 OIDC 不可用时,将导致 Gitea 无法启动,报错如下:

处理方式一个是恢复 OIDC 服务,另外就是从数据库中禁用 OIDC:

参考资料

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注