Gitea:自建Git新选择

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

安装

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:

参考资料

请勿全文转载,部分引用请注明出处。
本文链接地址: https://www.annhe.net/article-4276.html
博客能带货吗

发表评论

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