自建 Git 服务:Gitea 在 2GB 内存上跑得比 GitHub 私有仓库还顺
先说清楚适用场景:如果你只是一个人写几个小项目,托管在公开平台上更省事。自建的价值出现在三种情况——代码不能出国、仓库里有客户资料、或者你受够了按人头收费。
一、为什么是它,不是别的
| 方案 | 资源占用 | 特点 |
|---|---|---|
| Gitea | 约 100–200 MB 内存 | 单二进制,功能完整,社区版最轻 |
| GitLab | 4 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里。
三、跑起来之后配什么
- 关闭开放注册:自建服务默认允许注册,公网暴露一天就会有人来推垃圾仓库;
- 配 SSH key:比每次输密码强得多,也是日常 push 的主要方式;
- 开双因素认证:管理员账号被撞库,整个代码库就没了;
- 配反向代理和证书:直接暴露 3000 端口既不安全也不方便,用 Caddy 一行配置就能自动签发证书。
四、内置 CI 能不能替代托管平台
它的 Actions 兼容主流工作流语法,跑个测试、构建镜像、部署静态站够用。限制在执行环境:runner 要自己起,多语言并行构建会排队。
实用配置是一台机器跑 Gitea,另一台跑 runner,或者用已有的容器主机兼职。如果 CI 需求很重,这套方案的维护成本会超过收益。
五、备份与迁移
需要备份三样:data 目录(仓库与附件)、数据库、配置。前两个都在同一目录下,用文件级备份即可;但要注意一致性——备份前最好停容器,或者用数据库自带的导出功能。
迁移到新机器时,把 data 目录整包拷过去、版本号对齐、起容器就行。这也是自建的好处:迁移不比换服务器更难。
六、什么时候不该自建
- 仓库需要公开给外部协作者:自建站的曝光度和信任度都不如大平台,外部人加仓库会有顾虑;
- 依赖平台生态:issue 模板、自动化机器人、代码扫描这些现成能力,自建大多要自己拼;
- 只有两三个人、代码不敏感:省下的钱抵不上维护时间。
关于自建与托管服务的成本比较,可以对照 自建 vs SaaS:什么该自己搭,什么该买。服务器本身的开销见 云服务选型里看不到的五个成本。
相关阅读
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。





评论