老旧安卓机改装服务器
背景
看阮一峰的周刊,有一篇文章,激起了自己折腾的想法。
谁家没有老旧安卓机呢?
不妨拿出来试试。
准备
文章里讲的是用Termux,一款安卓模拟器,提供了linux环境,无需root权限。
但本人还是想用原生的linux以及root权限,初始方案是root手机然后安装ubuntu。
- 老旧手机测试
共有5台旧安卓设备,经过测试,有3台无法进行充电及开机操作,电池老化严重。
剩下2台,vivo x5m(Android 5) 以及 Honor 6x(Android 7),经过长时间充电后可以正常开机,触屏功能正常。 - 查询root方案
在2024年的今天,root操作已经是非常常见的了,逛了2家的论坛和一些帖子,发现现在都是卡在解锁bootloader(简称bl)。
一些老旧的帖子还有通过官方链接申请解锁bl,但很久前入口就关闭了。
尽管如此,还有一些视频教程,点开后发现都是需要硬件拆机,遂放弃。 - 无法root,只能选择Termux
实施
Termux安装
文章里写的是通过Google Play,显然国内的老旧型号手机是没有条件的。在(F-Droid)[https://f-droid.org/zh_Hans/packages/com.termux/]中找到对应的额apk包,一个android7 一个android5,导入手机上进行安装。
完成后直接运行即可进入一个命令行环境。
一通把玩。。
不仅没有root权限,只要涉及到设备的路径全都访问不了,这给常年运维的人带来了不小的麻烦,总之就是不顺手~
安装一些必要的软件:nginx、git等都没有问题,运行时可能会缺少一些环境变量,想办法设置一下就可以搞定。
接下来就是网络了,如果网络能跟我自己的虚拟局域网搞通,那就非常耐斯了。
zerotier安装
Termux里的软件包是自己维护的,里面的包都是需求比较高的,zerotier还真没有。
用zerotier官网方式)尝试安装。
~ $ curl -s https://install.zerotier.com | sudo bash |
果然是不行的,一般来讲涉及网络的服务,都会要求root权限。
尝试用安卓app的形式给手机设置vpn,这样底层(Termux)的网络也会直接通的。
仍然去(F-Droid)找,找不到。。
官网下载链接中,找到旧版本,可以看到版本最新的是1.14.0,依次点击进入,在1.12.2版本找到了.apk包,下载上传到手机上安装。
结果发现,官方的app无法更换planet文件,这样就只能连接官方维护的虚拟局域网了,与最终目标是有一定距离的
继续探索!
最终在自建planet的仓库中找到了!
仓库地址:https://github.com/kaaass/ZerotierFix
找到下载链接后发现最新的版本是1.0.10,与官方的版本还是有一定差距的,不过能满足需求就需要去尝试一下!
下载到手机上安装。
这个时候,android 5的vivo x5m 掉队了,在替换planet文件时,app闪退了。
Honor 6x设备在加入网络后成功连接上了,网络设备列表里也出现了,ip也成功分配到了。
zerotier 配置
经过重重困难,只有1台设备走到了配置阶段。珍惜最后的实验机会。
虚拟局域网内的各设备互ping
发现planet节点与Honor 6x节点互相ping不通,同公网ip下的设备节点与Honor 6x可以互通。
‘结点列表’中有很多不知名的中转设备,这个是不符合预期的。
遂使用自己手机安装相同版本的软件ZerotierFix进行测试,未发现类似问题,结点列表里都是正常的节点,与zerotier-cli peers命令执行结果相符。
ZerotierFix的代码已有1年没有更新、维护,作为一个开源安卓项目,能够使用自定义planet和moon已经非常友好了,我们不做奢求,毕竟个人的要求是“既要又要”的,无法完全满足。
ngrok安装
zerotier有他的优势,但并不是没有替代品。
ngrok就是本人在研究ddns时第一个瞄上的工具,但由于免费限制过多,就暂时弃用了,不过现在看来刚好合适,毕竟类似的设备只有1台。
打开官网,找到对应的安装方法:https://dashboard.ngrok.com/get-started/setup/linux
ngrok 配置
是离线包下载的形式,安装还算比较顺利。
配置鉴权时,有警告:
~ $ ./ngrok config add-authtoken 2k0************************************************ao |
emm,比较明显是环境变量的问题。暂时无视
运行时报错了:
ngrok (Ctrl+C to quit) |
看起来是网络的原因,但本地是可以解析那个域名的,而且端口都是通的。
恐怕跟域名解析有关,毕竟没有root权限,遂在官方渠道和github中检索。
发现有不少用Termux的兄弟也遇到了这个问题~ 大家都是一样的
直到我看到了这个issue,里面指出了按照这个文章的步骤使用ssh公钥的形式登录,以隧道的形式提供ngrok的服务。
只要避免了执行ngrok命令,就有机会出现不一样的结果。操作后是可以的。
顺带一提,注册ngrok后,会免费提供一个随机但固定的域名,通过域名能够访问这台改装的服务器就成功了。
这样的话,通过老旧安卓机改装服务器的问题就得到解决了。
总结
整个流程(从有想法到完成),共计2天。
功劳最大的应该就是gpt吧哈哈,简单的命令、软件选择上都给出了非常明智的建议,少走了不少弯路。
当然,像zerotier的安装配置、ngrok的使用,都是以往的经验积累的,软件也非常的实用,易安装易配置。