群晖Nas构建Github镜像服务器(ubuntu系统可参考)

由于众所周知的原因,github的访问不是很顺畅,如果需要拉一些内容下来,用nas做一个镜像server,不断定时去更新,需要的时候再从nas的git server去clone就会是一个比较经济的办法了。

群晖设定

  • 安装GitServer

在群晖NAS的套件中心安装GitServer

创建Git用户(组),eg, git_local

  • 开启SSH登录权限

控制面板->终端机与SNMP->启动SSH功能

  • 开启home

控制面板->用户与群组->高级设置->启动家目录服务

  • Root密码修改(Optional)

sudo -s
synouser --setpw root xxxxxxx
  • Crontab使用

sudo -s
vim /etc/crontab #编辑加入定时信息并退出
synoservice --restart crond (before DSM7.0)
synosystemctl restart crond #DSM7.0

构建Git项目本地mirror server

  • 创建一个git用户和用户组,设置git home目录的权限为git,条件允许,可以考虑把git用户加入到sudo用户(Ubuntu Only, 群晖不需要)

sudo adduser git
sudo chown -R git:git /home/git/
sudo usrmod -a -G sudo  git
  • 创建一个gitmirror目录,用来做镜像中转目录

sudo mkdir /volume1/gitmirror
  • 生成pub key,并添加到bitbucket/github (optional step,群晖不需要)

ssh-keygen -t rsa -C  "your_email@example.com"
cat ~/.ssh/id_rsa.pub
  • 使用git --mirror将项目克隆到本地

cd /volume1/gitmirror; git clone --mirror  git://w1.fi/srv/git/hostap.git
  • 创建 local 仓库

mkdir -p /volume1/Gitserver/hostap.git
cd /volume1/Gitserver/hostap.git; git init --bare
  • 设置本地的repo

cd /volume1/gitmirror/hostap.git; git remote set-url  --push origin git_local@127.0.0.1:/volume1/Gitserver/hostap.git
git push --mirror
  • 更新远程server到mirror

cd /volume1l/gitmirror/hostap.git; git remote update
  • 设置脚本更新远端

编写脚本更新远端,local执行看是否有需要添加可信git用户,按照提示复制粘贴即可。

参考脚本auto_update_git.sh:

#!/bin/sh
 
MAC80211_GIT_PATH="/volume1/gitmirror/mac80211.git"
cd $MAC80211_GIT_PATH
git remote update
HOSTAPD_GIT_PATH="/volume1/gitmirror/hostap.git"
cd $HOSTAPD_GIT_PATH
git remote update
  • 使用crontab自动更新远端

crontab -e (ubuntu,如果是群晖参考群晖crontab使用)

加入一下一行,表示每10分钟执行一次更新脚本

*/10 * * * * /volume1/gitmirror/auto_update_git.sh
  • 客户端clone之后,如果需要提交到远端而不是local repos,需要set push url(Optionabl)

git remote set-url --push origin git://w1.fi/srv/git/hostap.git
  • 修改权限使得git_local账户能从客户端clone镜像server的code

sudo chown -R git:git  /usr/local/gitmirror
sudo chown -R git:git  /usr/local/repos

附录

一些开源项目的git地址

  1. Hostapd:

git://w1.fi/srv/git/hostap.git

  1. mac80211 kernel:

git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git

客戶端使用参考命令

git clone git@192.168.11.105:/volume1/gitmirror/hostap.git

一些问题

git clone hostapd.git 的问题

“warning: remoteHEAD refers to nonexistent ref, unable to checkout.”

git show-ref
    # no refs of "refs/head/branch_name"
git branch -a
git checkout remotes/origin/main
git checkout -b remotes/origin/main (switch to specified branch)
git branch -m remotes/origin/main main (rename the local branch)
git branch --set-upstream-to=origin/main main (set the target merge branch)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值