旧手机做web服务器+文件服务器+下载机+语音助手

阿里云服务器到期了,就想着再怎么整一台,刚好手边有个红米note4x,老早就有把他鼓捣成个服务器的想法一直没有付诸实践,这次就好好折腾一下。

一、web服务器

博客环境搭建这块儿我参考了很多大佬的文章,都写得很详细,我就不在赘述了,只在这做个指路人,详细的操作到相应的博文中去参考就可以。

1. Termux + Vim + SSH + Mysql + Wget

基础环境使用高级终端Termux搭建,这里很感谢国光大佬写了 Termux 高级终端安装使用配置教程 这篇文章(大佬的博客过于详细导致文章打开可能会出现假死的情况,稍等一会儿就好),帮自己省去了很多时间,详细的介绍及安装教程跟着一步一步操作就可以了。如果想节省时间可以直接Ctrl+F找到相应的章节。

2. JDK

我们要用到的博客系统是基于Java的,所以就必须要有JDK环境,JDK的安装参考 在 Android 系统使用 Termux 安装 JDK 并运行 Minecraft 服务端 ,Termux提供了JDK17的包,但我们需要的是JDK11的环境,注意使用文中方法二配置。最好也使用作者提供的地址下载JDK压缩包,我试了几个其他地方下载来的都不太好使,也可以评论区留言,我会分享出下载地址,为防链接总失效这里我就不贴了。

3. 博客系统

博客系统这里使用 Halo ,有自己的管理系统,直接提供Jar包,而且不用注册任何博客社区,可以很方便的管理自己得博客。

  1. 在Termux创建存放运行包的目录,并进入该目录

    mkdir ~/blog && cd ~/blog
    
  2. 下载运行包

    wget https://dl.halo.run/release/halo-1.6.0.jar -O halo.jar
    
  3. 创建工作目录

    mkdir ~/.halo && cd ~/.halo
    
  4. 下载示例配置文件到工作目录

    wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml 
    
  5. 编辑配置文件,配置数据库或者端口 官方详解

    vim application.yaml
    
    • 默认使用的是h2数据库,如果你也想使用h2只需要修改数据库和密码即可,其他的不需要动,这里我使用MySQL数据库,所以配置文件需要改一下,具体可以参考我的配置文件;

    • application.yaml(Mysql版)

      server:
        port: 8090
      
        # Response data gzip.
        compression:
          enabled: false
      spring:
        datasource:
      
          # H2 database configuration.
          # driver-class-name: org.h2.Driver
          # url: jdbc:h2:file:~/.halo/db/halo
          # username: admin
          # password: 123456
      
          # MySQL database configuration.
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
          username: root #你的数据库用户名
          password: root #你的数据库密码
      
        # H2 database console configuration.
        #h2:
        #  console:
        #    settings:
        #      web-allow-others: false
        #    path: /h2-console
        #    enabled: false
      
      halo:
      
        # Your admin client path is https://your-domain/{admin-path}
        admin-path: admin
      
        # memory or level
        cache: memory
      
  6. 创建数据库(仅使用MySQL时需要,H2会自动生成)

    create database halodb character set utf8mb4 collate utf8mb4_bin;
    
  7. 测试运行

    cd ~/blog && java -jar halo.jar
    
  8. 若看到如下输出,则表示启动成功,可以在手机浏览器输入http://localhost:8090进行测试

    run.halo.app.listener.StartedListener    : Halo started at         http://127.0.0.1:8090
    run.halo.app.listener.StartedListener    : Halo admin started at   http://127.0.0.1:8090/admin
    run.halo.app.listener.StartedListener    : Halo has started successfully!
    

    这里仅仅是测试启动,终端被占用无法再输入内容,而且终端关闭后博客会马上停止,测试成功后按Ctrl + C停止程序运行接着往后配置。

4. 后续配置

现在基本的博客可以正常运行了,但每次都需要手动启动MySQL服务,再启动博客很鸡肋,这里可以配置一个启动脚本,打开终端自动执行启动命令。

  1. 打开Termux,在home目录输入以下命令编辑.bashrc文件

    vim .bashrc		# 如果在配置Termux时终端改为了zsh,则此命令改为 vim .zshrc
    
  2. 在文件中添加如下内容并保存(具体的vim编辑操作自行百度)

    if pgrep -x "sshd" >/dev/null
        then
                echo "sshd运行中"
        else
                sshd
                echo "sshd启动..."
    fi
    if pgrep -f "mysql" >/dev/null
        then
                echo "mysql运行中"
        else
                nohup mysqld_safe &
                echo "mysql启动..."
    fi
    sleep 1s
    if pgrep -f "halo.jar" >/dev/null
        then
                echo "halo运行中"
        else
                rm -rf ~/blog/out.log
                nohup ~/software/openjdk-11.0.1/bin/java -jar ~/blog/halo.jar > ~/blog/out.log &
                echo "halo启动..."
                sleep 1
                tail -f ~/blog/out.log
    fi
    

    命令很简单,就是通过pgrep -f 查找进程,如果已存在就输出运行中,如果不存在就执行启动命令并输出启动nohup … & 是使程序后台运行,不占用终端,并将程序日志输出到对应的文件中(若指定路径则输出到指定文件,若不指定则输出到执行目录下nohup.out文件中),启动博客jar包时,会输出启动的日志,便于在启动时查看是否启动成功,启动日志输出完毕后直接Ctrl + C结束进程,不影响博客的运行。

  3. 博客配置

    这样我们的博客就配置好了,在termux中输入ifconfig查看服务器的IP地址,在局域网任意浏览器输入http://服务器IP:8090,就可以开始博客的首次配置了,后面博客页面的配置,主题选用就很简单了,都是傻瓜式操作的,我就不介绍了。

  4. 后台运行

    各种系统优化可能会让我们的博客一段时间后就一直转圈无法加载,所以我们要给Termux各种后台运行权限,各种系统具体操作不一样就不细说了,这里提醒下有以下几处可以设置:

    • 开启后台自启动;
    • 多任务界面加小锁;
    • 耗电优化设置无限制;
    • 参考 国光大佬的安装 Termux:Boot ,安装下这个插件,博客中说这个插件是收费的,百度找下一大堆。
  5. 还有一些终极优化需要用到root权限,以及后续内网穿透,后面一些功能也用的到,所以直接放在了最后。

web服务器配置结束: 酷安还有一种旧手机web服务器解决方案直接用ksweb这个软件,配置起来要比我这个简单很多,有需要的可以去看下,但是那个使用比较局限,所以我选择了Termux,还可以用来跑个Python脚本啥的。

二、文件服务器

这部分就很简单了,直接下载安装 X-plore ,并打开WiFi共享即可通过局域网访问,X-plore功能还是挺强的,除了基本的文件管理,通过局域网访问也可以直接浏览里面的图片、音乐、视频等,后面的下载机也是以此为基础。

  1. 打开x-plore,并打开WiFi共享

    image-20221119203058284
  2. 设置密码(可选),并打开自动开启选项(必选)

    image-20221119203859510
  3. 使用效果,在局域网任何一个设备浏览器输入你无线文件共享设置中显示的服务器地址即可访问

    image-20221119212735748

    打开地址就可以看到了,界面还是挺友好的。

三、下载机

就是安装一个下载软件,这里推荐 IDM ,可以配合 X浏览器 解析音视频,实现快速下载。

  1. 使用方法

    • 安装好以上两个软件,打开x浏览器找到你需要的视频,然后开始解析下载。
    image-20221120175703119
    • 选择工具箱—>嗅探媒体资源,获取音、视频源文件(如果获取不到就先播放几秒,或者刷新页面重试)

      image-20221120181529727
    • 操作结束之后(可以多存一点),我们尽管去干别的,等想追剧的时候直接用手机或者电脑连上上面的文件服务器,找到视频文件就可以尽情的享受了,因为已经下载好了,并且在局域网访问,所以不会出现卡顿的现象

    有的小伙伴可能会想不明白了,我还得去拿着旧手机下载,还得给他充电,这还不如直接在经常用的手机上下载呢,别着急,现阶段只是能用,终极解决方案都放在了最后一节!

四、语音助手

  1. 小米/红米手机
    • 更新最新版的小爱同学,开启语音唤醒
    • 按自己所需进行简单的设置,有灭屏唤醒的也可以打开,我的是不支持了,灭屏无法唤醒,长期亮屏会烧屏的问题最后一节会提供解决方案
    • 在小爱同学设置中打开小爱实验室—>录屏教学,自定义唤醒词,教小爱唤醒我们之前的那些配置的那些软件,万一被杀后台直接让小爱帮我们打开。比如:自定义唤醒词打开web服务器,然后会进入录屏,你手动打开Termux之后结束录屏,保存之后对小爱说打开web服务器,他就会帮你打开Termux。同理,X-plore也做此设置。
  2. 非小米手机
    • 下载 小爱同学 (两年前实测可用),或用手机自带的语音助手(如果自己觉得好用的话)进行以上类似的设置

五、终极优化方案

以上配置的功能都仅限能用,但使用起来总是不够流畅,接下来把我目前能想到的一一解决,如果你觉得上面的就够用,就可以到此为止了。

1. 常驻后台

首先最基本的就是按照Termux配置那一节给需要常驻后台的软件添加相应权限

2. 电源直供电

正经服务器通常是插着电源使用的,但是手机经常插电源电池会有危险,直接扣掉电池接电源又不能开机,这里提供三个思路,每个手机可选用的方式不一样,根据自己机型选择:

  • root之后刷magisk电量控制模块,教程和资源酷安都有,我没使用这种方案,就不提供了;

  • 拆掉后盖,扣下电池排线,拆下电池保护板,剪个数据线,保护板直接接5V电源正负极,然后扣上排线就可以通电开机使用了,个人建议去闲鱼搜“手机直供线”,他们有卖的,基本就可以用这种方式了(当然你直接买我也没意见)

    image-20221120214800504
  • 如果你是红米Note4X,那么恭喜你了,只要你是MIUI10及以上,你就可以扣掉电池排线,通过充电口插着电源使用了。这也是我一直将这部手机留在身边的原因,也是我目前试过的唯一一部可以这样操作的手机。

  • 如果以上三种方式你都手机都实现不了,那就有些麻烦了,按照第二种方式,再接法拉第电容啥的,我也没试过,去论坛之类的找找看吧,这里有一篇文章也可以参考 手机如何做到不插电池直接用充电器供电?

3.通电自启动(需root)

有了电源直供电我们就可以设置通电自启动,避免断电关机之后还得去找到手机再启动,这里提供两位大佬的教程 安卓6.0+关机状态下通电自动开机方案 关于安卓安卓设备如何魔改成其他东西 ,都写得很详细,两篇结合着来就行。

4. 远程调试(建议root)

服务器一般都是远程调试(这一步只是实现局域网,外网后面再说),所以我们需要打开手机的无线adb调试功能,而且最好设置开机自动开启,避免万一断电还得重新设置,这一步也是解决烧屏问题的关键,想要避免每次手动打开就必须root。参考 Android 设备开机或联网时自动开启无线调试

  • 如果是小米手机,还需要开启下面两项,没装手机卡会提示需要装sim、登录小米账号,只需要登录账号,装个手机卡,将这两项打开之后再取出手机卡,以后每次开机就默认开启了。

    image-20221120221558531
  • 至于远程调试的话这里也推荐两个软件,手机端的甲壳虫,电脑端使用晨钟酱的投屏控制器

    • 甲壳虫: 输入旧手机ip:端口(adb默认5555)点击连接,连接成功后,下面会显示已连接的设备,点击选择设备进入管理页面。

      Screenshot_20221122_194722

      点击鼠标图片,再点连接可开始远程控制,其他页面可查看手机信息

      Screenshot_20221122_194751
    • 投屏控制器:下载解压后,先修改配置文件

      image-20221122201247447 image-20221122201804052 image-20221122202214666
  • 如果设置了开机启动无线调试,并且之前连上了,一段时间之后连接不上,只需重启手机即可。

5. 小爱唤醒

  • 方法一:硬件法(推荐)

    • 小爱同学只能亮屏唤醒,但是一直亮着屏幕又会烧屏,所以我直接使用了物理方式:手机设置永不灭屏,拆后盖拔下手机屏幕和触摸屏的排线开机使用(前提是上一步远程调试设置好了,并且测试一两天没问题,不然来回拔插怪麻烦)。

    • 如果上面小爱录频教学那一步你做好了,那么小爱同学也可以用作一个调试工具,如果实在连不上了,可以让小爱同学打开软件,或者干脆找小爱重启。

  • 方法二:软件法

六、后续优化(可选)

1. 内网穿透

局域网我们实现了,如果想要正真的做一个服务器,还需要做内网穿透,内网穿透的方案也有好多,想整的话可以去酷安或者百度找一找,这里我使用了花生壳的免费体验版,说是体验版其实要6元,好处就是简单易上手,而且有管理端,可以随时灵活设置要映射的内网端口,送一个超难记的二级域名,如果没有固定外网IP或者向我这种居无定所的可以考虑,省得一直配置。缺点是免费两年,而且每月限流只有1G。

  • 花生壳 下载地址 ,服务器手机下载花生壳内网版APP,打开登录就好,同样设置后台免杀小爱唤醒。管理端可以下在常用的手机上或者也有web端的管理平台,具体的映射需要在管理端添加,很简单就不介绍了。

2. 域名设置

说到这里就不得不吐槽下了,在腾讯云看到个域名跟我的博客名挺搭,而且还挺便宜,一冲动买了10年的。。。结果去备案了才知道备案需要在域名服务提供商有云资产,也就是说服务器也要在腾讯云,自己搭建的博客是不允许备案的!!!国内服务器不备案就无法访问!!!找了一圈找到个解决方案,不过感觉折腾起来挺麻烦,我又希望把手机带在身边使用小爱同学,外网使用除了博客也没啥需求,所以就此打住了,还有想法的可以继续整下去,这里贴下大佬的教程

家里搭建服务器的折腾-有动态公网ip,域名没备案,80端口和443端口被封如何运行网站服务


七、闲言碎语

为了搞这个东西手机先后刷了四次,第一次miflash刷机按默认选了刷机并上锁,结果卡米无法开机,短接9008救回来了;之刷了MIUI9,想着会流畅一些,软件都配置好了,结果最后低版本小爱不支持语音唤醒;又卡刷了MIUI12,从头配置了一遍,小爱也支持语音唤醒,但是电源直供电又开不了机了(不知道具体原因,猜想是因为系统底包,因为开始搞这些之前确实是可以的);然后又线刷了MIUI10,从头配置一遍,总算搞定!

这篇文章就是提供个旧手机利用思路,大佬勿喷,另外搞机需谨慎,斟酌能力再动手。