为什么需要自建Git服务器
团队做项目,代码托管是个刚需。用GitHub、GitLab这些平台当然方便,但有些公司或个人更在意数据隐私,不想把核心代码放在别人家的服务器上。这时候,自己搭一个Git服务器就成了更稳妥的选择。
比如你是个小团队负责人,客户要求代码不能外泄,连私有仓库都不放心。或者你在内网开发嵌入式设备,根本没法联网。这些场景下,本地Git服务器就是最佳方案。
选择合适的系统环境
大多数情况下,Linux服务器是首选。Ubuntu Server 20.04 或 CentOS 7 都很稳定,资源占用也不高。如果你只有台旧电脑或者树莓派,也能跑起来。
先确保系统已经更新到最新:
sudo apt update && sudo apt upgrade -y然后安装必要的工具包:
sudo apt install git openssh-server -y创建专用用户管理代码库
别直接用root或者你的日常账户跑Git服务。新建一个专门的git用户,安全又清晰:
sudo adduser git设置完密码后,切换到这个用户:
su - git初始化一个空白仓库
进入git用户的家目录,创建一个项目仓库:
cd /home/git
mkdir myproject.git
cd myproject.git
git init --bare这里的 --bare 参数很重要,它表示这是一个不带工作区的仓库,专用于远程推送和拉取。
客户端如何连接并使用
在你的开发机上,比如笔记本电脑,执行克隆命令:
git clone git@你的服务器IP:/home/git/myproject.git第一次连接会提示是否信任主机指纹,输入 yes 继续。之后就能像用GitHub一样提交代码了。
如果不想每次输密码,可以把本地的SSH公钥放到服务器上:
cat ~/.ssh/id_rsa.pub | ssh git@你的服务器IP \"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys\"权限控制的小技巧
默认情况下,所有能通过SSH登录git用户的人都能读写仓库。如果想精细化控制,可以用 Gitolite 或者 Gitea 这类工具。
比如用Gitolite,只需要把管理员的公钥传上去,它就能自动管理多个仓库和不同用户的访问权限,配置文件也用Git来维护,非常方便。
备份与日常维护
自建服务器最大的好处是完全掌控。你可以加个定时任务,每天凌晨把仓库打包备份到NAS里:
0 2 * * * tar -czf /backup/git-$(date +\%F).tar.gz /home/git/*.git再配合rsync同步到另一台机器,基本就不用担心数据丢失了。
平时注意查看磁盘空间,尤其是日志增长快的时候。一条 df -h 能省去很多麻烦。
进阶:用Docker快速部署Gitea
如果你想要图形界面,又不想折腾配置,可以直接用Docker跑Gitea:
docker run -d \
-p 3000:3000 \
-p 222:22 \
-v /data/gitea:/data \
--name=gitea \
gitea/gitea:latest启动后访问 http://你的IP:3000,按页面引导一步步完成初始化,几分钟就能拥有一个功能完整的Git服务平台,支持用户注册、仓库管理、Issue跟踪等。