家用住宅主机本地私有Git仓库存储建站代码
不少个人站长或开发者会用家中的闲置电脑来管理网站代码,但又不希望把源码放到公共仓库。
这时,在住宅主机上搭建一个本地私有 Git 仓库就成了最直接的选择——既能随时随地提交代码,又完全由自己掌控数据。
需要准备什么
一台常开的主机(Linux 或 Windows 均可)和一个不复杂的想法:把代码存回到自己家里。
如果只是内网使用,连公网 IP 和域名都不需要;
如果想从外网访问,可搭配 DDNS 或内网穿透。
本文以内网 SS H 方式为例,覆盖最常用、最安全的新手方案。
开始前,请确认主机已安装 Git:
- Ubuntu/Debian:
sudo apt install git - CentOS/RHEL:
sudo yum install git - Windows:从 git-scm.com 下载安装包,安装时勾选“Git Bash”和“Use Git from the command line”
在主机上创建裸仓库
裸仓库(bare repository)没有工作区,只存储版本历史,是服务器端的标准形式。
登录住宅主机,执行以下命令:
# 选择存放仓库的目录,比如 /home/git/repos
mkdir -p /home/git/repos
cd /home/git/repos
# 初始化一个裸仓库,名为 mysite.git
git init --bare mysite.git
git 文件夹创建完成,现在这个仓库可以接收推送了。
注意:裸仓库不需要 git clone 来工作,它只负责存储。
配置 SSH 免密访问
为了让本地电脑(开发机)能够直接 git push 到家里主机,推荐使用 SSH 密钥认证,避免每次输入密码。
- 在你的开发机上生成密钥(如果已有则跳过):
ssh-keygen -t ed25519 -C "your_email@example.com"
一路回车,默认保存在 ~/.ssh/id_ed25519.pub。
- 把公钥添加到住宅主机:
ssh-copy-id user@house-ip
# 如果 Windows 没有 ssh-copy-id,手动将公钥内容追加到主机的 ~/.ssh/authorized_keys 文件
- 测试免密登录:
ssh user@house-ip,应直接进入 shell。
从开发机推送代码到住宅主机
现在在你的本地项目目录中操作。
假设你已经有一个网站项目,或者新建一个:
cd ~/my_website
# 初始化本地仓库(如果还不是 git 仓库)
git init
git add .
git commit -m "初始提交"
# 添加远程仓库,路径格式为 ssh://user@house-ip:/home/git/repos/mysite.git
git remote add origin ssh://user@192.168.1.100/home/git/repos/mysite.git
# 推动代码到主机的 master 分支
git push -u origin master
成功后,你的网站源代码就安全地存在家里主机上了。
以后每次修改,只需 git add、git commit、git push 即可同步。
避坑指南
- 防火墙端口:住宅主机需要允许 SSH(默认端口 22)入站。如果在路由器上,也要转发 22 端口(若从外网访问)。建议使用非默认端口并配合密钥登录,提高安全性。
- 磁盘空间:裸仓库占用的空间会随着提交次数增长,定期
git gc可压缩历史。 - 权限问题:如果主机上多个用户共用仓库,建议创建一个
git用户,所有仓库归该用户所有,然后通过 SSH 公钥控制访问。 - Windows 路径注意:Windows 下 Git Bash 的路径分隔是斜杠,远程仓库路径要写成
/c/Users/...格式。
验证你的私有仓库是否正常工作
完成推送后,可以用以下方式验证:
- 在另一台电脑上克隆仓库:
git clone ssh://user@192.168.1.100/home/git/repos/mysite.git,应该能拉下代码。 - 或者直接用 SSH 登录主机,进入裸仓库目录,执行
git log看推送记录。
如果遇到 Permission denied 或 not a git repository 报错,优先检查路径是否正确、用户是否有读写权限、SSH 密钥是否已添加。
在家用住宅主机上建立私有 Git 仓库存储建站代码,不仅安全可控,而且操作灵活。
一旦跑顺流程,后续每次提交都非常顺手。
如果你还想进一步实现外网访问,可以搭配 frp 或 DDNS,在内网穿透相关教程中有更详细的配置说明。
提示:本教程仅依赖 Git 本身,没有使用任何第三方面板或服务,适合希望在最小依赖下工作的用户。