群晖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地址
-
Hostapd:
git://w1.fi/srv/git/hostap.git
-
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)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)