自建 Git 服务 Gitea:仓库、CI 与备份

自建服务 · 3 分钟阅读· 415 次阅读

代码放第三方托管省心,但私有项目、内部脚本总想有个自己的地方。Gitea 轻量,单容器 + 数据库即可。

最容易踩的坑是 SSH:宿主机的 22 端口已被 sshd 占用,Gitea 的 SSH 要换端口。

先说结论

SSH 换端口并在克隆地址里体现,备份用 dump 而不是拷目录。

  • SSH 端口与宿主机 sshd 分开
  • 仓库备份用 gitea dump,包含配置与数据
  • Actions 用 Act Runner,注意容器内访问宿主网络
  • 对外只暴露 HTTPS,SSH 限制来源

先把问题说清楚

Gitea 的数据分三块:仓库文件、数据库、配置。只备份仓库目录会丢 issue、PR、用户。

gitea dump 会把三者打包成一个 zip,是官方推荐的备份方式。

具体怎么做

按顺序执行,每步都验证完再进下一步:

  • compose 部署 Gitea + PostgreSQL
  • 映射 SSH 端口(如 2222),并在 app.ini 里配置 SSH_DOMAIN 与 SSH_PORT
  • 创建管理员,关闭公开注册
  • 配置 Act Runner 执行 CI
  • 加每日 gitea dump 备份任务

参数与成本对照

把关键数值摊开,方便判断该选哪条路:

数据 位置 备份方式
仓库 /data/git/repositories dump 包含
数据库 PostgreSQL dump 包含
配置 /data/gitea/conf dump 包含
附件/LFS /data/gitea dump 包含

自建 Git 服务 Gitea

几个容易踩的坑

下面这些是最常见的错误做法:

  • SSH 端口不写进克隆地址:clone 一直超时
  • 只备份 repositories:issue 与用户全丢
  • Runner 里访问宿主机服务用 localhost:容器内不是宿主
  • 开放注册被爬虫建号

最后补两句

私有 Git 的价值是「代码不出去」,前提是备份做足、权限收紧。

工具是手段,理解机制才是能力。命令记不住没关系,知道「该看什么」就够了。

评论 (3)

阿
阿哲

照着做了一遍,确实少走弯路。第二步最容易漏,建议顺手加个检查清单。

南
南风

比「一键脚本」有用多了,知道为什么比知道怎么做重要。

K
Kevin

补充一句:不同版本行为会变,动手前先确认自己的版本号。

发表评论

验证码

提交后需站长审核,通过后才会显示。