自建 Git 服务:Gitea 在 2GB 内存上跑得比 GitHub 私有仓库还顺

admin 开源软件 2026-10-20 5 0

先说清楚适用场景:如果你只是一个人写几个小项目,托管在公开平台上更省事。自建的价值出现在三种情况——代码不能出国、仓库里有客户资料、或者你受够了按人头收费。

一、为什么是它,不是别的

方案资源占用特点
Gitea约 100–200 MB 内存单二进制,功能完整,社区版最轻
GitLab4 GB 起功能最全,但一台 2C2G 的机器根本跑不动
裸 Git + SSH几乎为零没有网页界面、没有协作功能

关键差异在资源:GitLab 自带一大堆服务(Sidekiq、Gitaly、Redis、Postgres),Gitea 把同样的事压缩进一个进程。对小机器来说这不是优化,是「能不能跑」的区别。

二、部署:一条 compose 就够

services:
  gitea:
    image: gitea/gitea:latest
    restart: always
    ports:
      - "3000:3000"
      - "2222:22"
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=sqlite3
    volumes:
      - ./data:/data
      - /etc/localtime:/etc/localtime:ro

三个细节值得注意:

  • SSH 端口要单独映射(这里用 2222),否则会和宿主机的 SSH 抢 22 端口,改完连服务器都进不去;
  • SQLite 对个人够用,几百个仓库、单用户完全没问题;多人协作再换 Postgres;
  • 数据目录要挂出来,而且必须纳入备份——仓库、附件、配置全在 ./data 里。

三、跑起来之后配什么

  1. 关闭开放注册:自建服务默认允许注册,公网暴露一天就会有人来推垃圾仓库;
  2. 配 SSH key:比每次输密码强得多,也是日常 push 的主要方式;
  3. 开双因素认证:管理员账号被撞库,整个代码库就没了;
  4. 配反向代理和证书:直接暴露 3000 端口既不安全也不方便,用 Caddy 一行配置就能自动签发证书。

四、内置 CI 能不能替代托管平台

它的 Actions 兼容主流工作流语法,跑个测试、构建镜像、部署静态站够用。限制在执行环境:runner 要自己起,多语言并行构建会排队。

实用配置是一台机器跑 Gitea,另一台跑 runner,或者用已有的容器主机兼职。如果 CI 需求很重,这套方案的维护成本会超过收益。

五、备份与迁移

需要备份三样:data 目录(仓库与附件)、数据库、配置。前两个都在同一目录下,用文件级备份即可;但要注意一致性——备份前最好停容器,或者用数据库自带的导出功能。

迁移到新机器时,把 data 目录整包拷过去、版本号对齐、起容器就行。这也是自建的好处:迁移不比换服务器更难。

六、什么时候不该自建

  • 仓库需要公开给外部协作者:自建站的曝光度和信任度都不如大平台,外部人加仓库会有顾虑;
  • 依赖平台生态:issue 模板、自动化机器人、代码扫描这些现成能力,自建大多要自己拼;
  • 只有两三个人、代码不敏感:省下的钱抵不上维护时间。

关于自建与托管服务的成本比较,可以对照 自建 vs SaaS:什么该自己搭,什么该买。服务器本身的开销见 云服务选型里看不到的五个成本。

相关阅读

评论

访问统计