每个开发者电脑里都有那么几个"见不得人"的项目:写到一半的练手代码、存着各种私人配置的 dotfiles、不想公开但又想在多台电脑间同步的笔记仓库。扔到公共代码托管平台吧,私有仓库总有点不自在;只在本地放着吧,换台电脑就抓瞎,还没有备份。
我的解法是在自己的云服务器上搭一个私有 Git 服务,用的是 Gitea——一个用 Go 写的开源代码托管平台,界面和主流平台长得很像,上手零成本,关键是极轻量,1 核 1G 的机器跑得飞快。这篇把完整搭建流程写下来,跟着做十五分钟就能用上。
一、准备工作
Gitea 是出了名的省资源,官方说最低 256MB 内存就能跑,入门款服务器完全够用:
| 项目 | 建议 |
|---|---|
| 配置 | 1 核 1G 起步,个人用绰绰有余 |
| 系统 | Ubuntu 22.04 LTS |
| 磁盘 | 20G 起,代码仓库普遍不大 |
| 需要放行的端口 | 3000(Web 界面)、222(SSH 推拉代码) |
我自己用的是雨云rainyun-com的 1 核 1G 机器,跑 Gitea 大半年了,日常占用不到两百兆内存,注册填码:2026off,可领5折,一个月十来块钱。大厂轻量服务器节点多是优势,同配置月付贵一些,按预算选就行。
二、安装 Docker
用 Docker 部署最干净,Ubuntu 22.04 自带源里就有:
sudoaptupdatesudoaptinstall-ydocker.iosudosystemctlenable--nowdocker三、一条命令跑起 Gitea
Gitea 官方维护了 Docker 镜像(可以去 Docker Hub 搜 gitea/gitea 看说明):
dockerrun-d\--namegitea\--restart=always\-p3000:3000\-p222:22\-vgitea-data:/data\gitea/gitea:1参数说明:
-p 3000:3000:Web 界面端口-p 222:22:容器内 SSH 映射到宿主机 222,推拉代码走这个端口,和系统自己的 SSH(22 端口)错开-v gitea-data:/data:仓库、配置、数据库全在这个卷里,容器删了重建数据不丢
然后去云服务器控制台的安全组放行 3000 和 222 两个端口。
四、初始化配置
浏览器地址栏输入你的服务器 IP 加端口(形如服务器IP:3000),会进入安装向导,几个关键项:
- 数据库:选 SQLite3,个人用完全够,零额外维护
- SSH 服务器端口:改成 222(刚才映射的端口),这步别漏,不然网页里显示的仓库地址端口是错的
- 管理员账号:在页面底部展开填上,不填的话第一个注册的人会自动成为管理员
点安装,几秒钟后就能看到熟悉的主界面了。
五、把本地代码推上去
先把自己的 SSH 公钥加到 Gitea:网页右上角头像 → 设置 → SSH 密钥,粘贴本地~/.ssh/id_rsa.pub的内容(没有的话用ssh-keygen生成一个)。
然后在 Gitea 网页上新建一个仓库,回到本地项目目录:
gitinitgitadd.gitcommit-m"first commit"gitremoteaddorigin ssh://git@服务器IP:222/你的用户名/仓库名.gitgitpush-uorigin main刷新网页,代码已经躺在自己的服务器上了。以后换电脑、重装系统,git clone一下就全回来。
如果你已经有一个在别的平台上的仓库想搬过来,也不用重新 init,直接改远程地址再全量推就行:
gitremote set-url origin ssh://git@服务器IP:222/你的用户名/仓库名.gitgitpush--allgitpush--tags六、网页端不只是个仓库列表
Gitea 的网页端功能比想象中全,几个高频用法:
- Issue 和 PR:和主流平台一样的协作流程,小团队够用了
- Wiki:每个仓库自带文档区,项目的使用说明顺手就写了
- Web 编辑器:临时改个错别字不用拉代码,网页上直接改直接提交
- 迁移工具:新建仓库时选"迁移",粘贴别处仓库的地址,整个仓库含提交记录一把梭搬过来
对我个人来说最实用的是"多设备同步"这个场景:台式机写一半的配置,笔记本上git pull接着改,改完推回去,两边永远一致。配合提交历史,误删了什么东西随时能翻回来,比 U 盘和网盘靠谱得多。
七、日常运维两件事
备份:所有数据都在gitea-data这个卷里,定期打包就能万事大吉:
dockerrun--rm-vgitea-data:/data-v~/backup:/backup ubuntutarczf /backup/gitea-$(date+%Y%m%d).tar.gz-C/data.升级:Gitea 更新挺勤快,升级就是拉新镜像重建容器,数据不受影响:
dockerpull gitea/gitea:1dockerstop gitea&&dockerrmgitea# 重新执行第三步的 docker run 命令常见问题
问:和直接用公共托管平台的私有仓库比,图什么?
答:一是数据完全在自己手里,断网、账号出问题都不怕;二是没有私有仓库数量和协作者限制;三是访问速度看自己服务器,国内机器拉取很快。当然代价是你要自己维护它——好在 Gitea 基本不用管。
问:三五个人的小团队能用吗?
答:完全能。建个组织,把成员拉进来,按仓库分配权限,Issue、PR、代码评审这些都有。雨云rainyun-com的 1 核 1G 带一个小团队没压力,月付就十几块,人多了再升配置。
问:想要 CI 自动构建怎么办?
答:Gitea 有兼容主流语法的 Actions 功能,配一个 act_runner 就能跑流水线,这篇篇幅有限就不展开了,先把仓库跑起来。
总结
自建 Git 服务这件事,听起来硬核,实际就是一条 Docker 命令加十分钟初始化。换来的东西很实在:私人代码有了安稳的家,多设备同步、版本管理、自动备份一套全齐。如果你也有几个"不想给别人看但又怕丢"的项目,今晚就可以搭起来。