阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

路由器改装git服务器之路

262次阅读
没有评论

共计 5256 个字符,预计需要花费 14 分钟才能阅读完成。

导读 在单位中,通常都标配了 git 服务器用来管理代码。对于家庭或者小办公室,这种方式有点不经济。当然如果是开源项目就简单了,刚刚被微软收购的 github 是理想选择。但如果没有打算开源,我今天的话题可能对你有用。我就属于喜欢在家中干活的那一类,以前常年开着一台电脑做下载,最近改了这个坏习惯。但是没有了长期开机的设备,也就没有了 git server。趁着周末,把一台老的路由器改了改,当成 git server 来用,感觉效果爆棚,不能不安利给大家。
硬件

一台能够安装 OpenWRT(或者 Linux 系统的)路由器,我用的是一台老设备,Netgear WND3700V1。
视你日常工作量大小,准备一个空间足够的 U 盘,最好是高速的,当然这个高速是指能匹配路由器 USB 口的标准就足够。

系统软件

成文时,OpenWRT 的版本是 18.06.0,其它版本应当也可以,OpenWRT 挺早就支持 git 软件包了。下载地址在:http://downloads.openwrt.org/。也可能是我的问题,但至少看起来,这样一个纯技术网站,不 FQ 已经下载不到了。
因为各家路由设备的硬件复杂性,虽然都是同样的 OpenWRT,不同的路由器仍然要下载自己硬件对应的版本。如果之前没有安装过 OpenWRT 的话,建议你在 https://openwrt.org/toh/views/toh_fwdownload 查询 OpenWRT 支持的设备列表,确认自己应当使用的版本。
OpenWRT 的安装这里不讲,请参考官方相关文档。通常都是在自己路由器的管理界面使用软件更新功能,选择下载的固件文件,上传随后升级。
接着请根据自己家里网络的情况,配置上网设置各项目,保证基本路由功能工作正常。

管理路由器

OpenWRT18.06.0 的默认管理方式是使用 ssh,方法:ssh root@[IP 地址]。根据路由器的 FLASH 大小,比较小的 FLASH 是默认没有 WEB GUI 界面的,比如我用的这台。所幸大多情况下使用命令行配置路由器效率更高,而且有些工作是使用 GUI 界面做不到的。
OpenWRT 的默认账户用户名是 root,没有密码,正常情况下第一次登陆会要求你修改密码。在一个连接公网的环境中,请尽早登陆修改密码。

配置镜像源

如果你不用 FQ 就能访问官方的源服务器的话,请跳过这一节内容。

OpenWRT 使用 opkg 工具来管理扩展包。因为前面所说的原因,需要配置使用镜像源来保证所需软件包的安装。
中间碰到一个小麻烦是国外的镜像服务器,基本都使用了 https 协议,OpenWRT 不能直接支持。国内的镜像大多倒是 http 协议,但镜像中又缺乏一些驱动包,无法驱动 U 盘。
所以如果找不到更好的完整源的话,只好把变更源这样一件小事分成两步来做。
opkg 的源配置文件路径为:/etc/opkg/distfeeds.conf,首先做一个备份,然后你可以使用你喜欢的编辑工具修改,我通常都是 vi。
把 distfeeds.conf 文件的内容修改为:

src/gz openwrt_core http://openwrt.proxy.ustclug.org/releases/18.06.0/targets/ar71xx/generic/packages
src/gz openwrt_kmods https://downloads.lede-project.urown.net/snapshots/targets/ar71xx/generic/kmods/4.9.117-1-e017c397f3c6ba06dc921b136a63fb36
src/gz openwrt_base http://openwrt.proxy.ustclug.org/releases/18.06.0/packages/mips_24kc/base
src/gz openwrt_luci http://openwrt.proxy.ustclug.org/releases/18.06.0/packages/mips_24kc/luci
src/gz openwrt_packages http://openwrt.proxy.ustclug.org/releases/18.06.0/packages/mips_24kc/packages
src/gz openwrt_routing http://openwrt.proxy.ustclug.org/releases/18.06.0/packages/mips_24kc/routing
src/gz openwrt_telephony http://openwrt.proxy.ustclug.org/releases/18.06.0/packages/mips_24kc/telephony
这里面使用了两个源,分别是:http://openwrt.proxy.ustclug.org 和 https://downloads.lede-project.urown.net。

接着在 OpenWRT 命令使用 opkg update 命令,只要网络没有问题,可以完成源目录包的更新,当然在 https 的那个源会报错,先不用管。

通常的情况下,每次进行包安装工作之前进行一次 opkg update 就够了,这是下载软件源中的所有目录索引到本地。路由器关机、或者云端的源内容发生了变化才需要重新执行。

随后安装 https 协议所需的软件包:

opkg install libustream-openssl ca-bundle ca-certificates

接着再做一次 opkg update,这一次,应当所有的源都可以拿到目录包了。
如果你有更好的 http 源,配置 https 访问这一步可以省略。

至此,opkg 包管理工具算配置完成。喜欢使用 GUI 界面的话,这时候可以使用下面命令安装:

opkg update
opkg install luci
安装 U 盘并设置自动加载

如果只是当做私有云盘使用,U 盘的格式可以随意。但如果打算用作 git 仓库以及用以弥补路由器可怜的 FLASH 存储,则必须使用 Linux 专有格式,比如 EXT4。所以准备用在路由器上的 U 盘你要提前做好备份,因为后面的安装会重新格式化 U 盘。
首先是安装加载 U 盘所需的各项驱动和相关支持工具:

# 假设你已经做过 opkg udpate
opkg install block-mount e2fsprogs kmod-fs-ext4 kmod-usb3 kmod-usb2 kmod-usb-storage
随后使用 ext4 格式,重新初始化 U 盘:#注意这一步会清掉 U 盘上现有的所有内容
mkfs.ext4 /dev/sda1
接着将 U 盘设置为路由器启动后自动加载:block detect > /etc/config/fstab
uci set fstab.@mount[0].enabled='1' && uci set fstab.@global[0].check_fs='1' && uci commit
/sbin/block mount && service fstab enable

这时候可以使用 mount 命令检查一下 U 盘是否加载成功(不需要重启),如果输出信息中,通常是在最后一行,如果有类似下面信息表示 U 盘加载成功了:

/dev/sda1 on /mnt/sda1 type ext4 (rw,relatime,data=ordered)

在我实验的时候,有一个 U 盘无论如何无法自动加载成功,猜测同 U 盘型号或者具体硬件及 OpenWRT 版本的支持有关系。就不去深究原因了,碰到这种情况可以使用启动脚本的方式解决,首先执行一次 mkdir /mnt/sda1,然后在 /etc/rc.local 文件最后一行增加:

mount /dev/sda1 /mnt/sda1

以后重启将会自动加载 U 盘。

安装 git 工具包

这一步对于新款路由器实在不是事儿,使用 opkg 一条命令就搞定:

opkg install git

对于我这款老路由器来讲是个大麻烦,因为这款 WND3700 这款路由器只有 4M 的 FLASH, 相当于硬盘的存储空间。而 git 软件包压缩之后是 4.3M, 完全盛不下。
这时候刚才安装的 EXT4 格式的 U 盘就起作用了,我使用手工安装的方式把 git 安装到 U 盘上,这样多大的软件包都不算问题了。
首先下载 git 软件包:

cd /mnt/sda1/
wget http://openwrt.proxy.ustclug.org/releases/18.06.0/packages/mips_24kc/packages/git_2.16.3-1_mips_24kc.ipk

注意下载路径是跟你所使用的路由器版本有关的,比如上面的下载地址表示 OpernWRT18.06.0 版本,跑在 mips_24kc 的芯片上。根据这些信息,你要寻找自己路由器可用的软件包,平常这件事情是由 opkg 帮你做的。
下载完成后,手工解压取出文件:

tar xzvf git_2.16.3-1_mips_24kc.ipk
#上面的解压完成通常会出来 3 个文件,我们只使用其中的 data.tar.gz 文件。mkdir ipks
cd ipks
tar xzvf ../data.tar.gz
cd ..
# 删除 3 个解压出的临时文件
rm control.tar.gz data.tar.gz debian-binary

所有的文件都保存在 /mnt/sda1/ipks/usr 路径下,我们还需要手工完成安装,才能够运行:

ln -s /mnt/sda1/ipks/usr/bin/git /usr/bin/
ln -s /mnt/sda1/ipks/usr/bin/git-receive-pack /usr/bin/
ln -s /mnt/sda1/ipks/usr/bin/git-upload-archive /usr/bin/
ln -s /mnt/sda1/ipks/usr/bin/git-shell /usr/bin/
ln -s /mnt/sda1/ipks/usr/bin/git-upload-pack /usr/bin/
ln -s /mnt/sda1/ipks/usr/lib/git-core/ /usr/lib/
ln -s /mnt/sda1/ipks/usr/share/git-core/ /usr/share/

此时 git 已经可以使用了。接下来我们建立工作目录:

mkdir /mnt/sda1/prjs
ln -s /mnt/sda1/prjs/ /

/prjs 目录是我们的主要存储目录。因为路由器只有一个 root 账号,也就不用考虑额外的权限问题。
今后所有的 git 仓库,都可以在 /prjs 路径下另外建目录来保存。我们来建立一个测试仓库来验证工作是否正常:

mkdir /prjs/test
cd /prjs/test
git init --bare

好了,至此路由器上的所有准备都已经完成。今后增加新的 git 仓库,使用新的仓库名称,重复上面最后一个建立 test 仓库的操作就可以。

测试路由器上的 git 仓库

回到我们的工作电脑上,随意建立一个工作目录,测试路由器上的 git 仓库是否工作正常,下面假设我们路由器的 IP 地址为 192.168.1.1,请修改成自己路由器的正确地址。

mkdir testgit
cd testgit
git init .
echo "test information" > abc.txt
echo "测试信息" > abc1.txt
git add .
git commit -m "something new"
git remote add origin root@192.168.1.1:/prjs/test/
git push --set-upstream origin master

最后的 git push 执行后,需要输入路由器 root 账号密码,随后如果显示类似下面信息,就表示成功了:

Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 231 bytes | 231.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To root@192.168.1.1:/prjs/test/
570db28..5ab2627 master -> master
自动验证

如果不希望每次 git push 都输入路由器密码,可以把自己电脑的公钥存储到路由器备案,以后就不需要输入密码了,首先拷贝公钥到路由器:

scp ~/.ssh/id_rsa.pub root@192.168.1.1:~/

接着在路由器上执行:

cat id_rsa.pub >> /etc/dropbear/authorized_keys

可以使用 ssh 来测试是否生效,ssh root@192.168.1.1 之后,如果不再要求输入密码直接登录了路由器,表示自动验证生效了。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2025-02-07发表,共计5256字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7973865
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新 SSL 证书系统、申请 godaddy 的 APIKEY 公司之前花钱购买的 ssl 证书快...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...