白嫖党的快乐,我在安卓手机上搭了服务器+内网穿透,再也不用买服务器了

起因

因为去年买的腾讯云服务器到期了,我一看续租的话要459元,作为白嫖党这是万万不能接受的!

于是我就想:能否搞一个简单的服务器,能跑基本的项目就好了。

然后我就在掘金上看到了一篇文章:如何将旧的Android手机改造为家用服务器

最后结合全网,搜到了如下两种方案:

  • KSWEB
  • Ternux

综合对比下,我选择用Termux试试。

前提

想要跑起来Termux,首先你要有一个安卓手机。

于是我就开始逛咸鱼,最后选了一款IQOO Neo5型号的,12+256G(有些小毛病),花了315元,这个内存跑服务应该是够了的。

开始安装

安装Termux

1)通过github或者APKFab应用商店安装Termux。

2)更新和安装基础软件包

bash 复制代码
pkg update && pkg upgrade -y 
pkg install wget curl nano -y
安装nodejs

由于本人是前端开发,所有用的服务都是nodejs写的,所以只安装node相关的东西

js 复制代码
pkg install nodejs
// 安装PHP或其他的同理,示例如下:
pkg install php 

安装完成后,打印一下看看是否成功了

安装其他

由于我的项目也有nodejs服务端,所以还需要安装以下:

  • mysql 数据库
  • ssh 远程连接
  • redis 缓存
  • cpolar 内网穿透(本地部署的项目,外网无法访问,用它来给外网访问)
  • nginx 高性能代理

具体的教程就不展示细节了,推荐几个教程地址,仅供参考:

设置完ssh后,就可以在电脑上的Xshell连接登录了,注意了:

默认端口号为8022,不是22

默认端口号为8022,不是22

默认端口号为8022,不是22

连接成功后是这样的

其中有一个用户身份验证,用户名输入whoami查看

放入几个项目

我用Xftp传入几个vue项目和nodejs项目

启动服务

项目放入后,启动的服务应该是只能局域网访问的,几个vue项目都是打包的dist文件,所以需要配置nginx代理,关键配置如下,有多少个项目,就来多少个server就行,慢慢配吧。

因为个人项目不多,也不找其他高大上的管理工具了

nginx 复制代码
 # 加解密 配置
    server {
        listen       5290;
        server_name  192.168.3.155;

        location / {
            root   /data/data/com.termux/files/home/vue/rui-utils-crypt/dist;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /data/data/com.termux/files/usr/share/nginx/html;
        }
    }

    # 个人博客 配置
    server {
        listen       5173;
        server_name  192.168.3.155;

        location / {
            root   /data/data/com.termux/files/home/vue/vite-press-blog/dist;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /data/data/com.termux/files/usr/share/nginx/html;
        }
    }

    # 若依 - nodejs-vue
    server {
        listen 5000;
        server_name 192.168.3.155;

        location / {
        # dist为静态资源文件夹,dist内有index.html,
          root   /data/data/com.termux/files/home/vue/ruoyi-vue/dist;
          index  index.html index.htm;
          # 解决单页面应用中history模式不能刷新的bug
          try_files $uri $uri/ /index.html;
          # try_files $uri $uri/ =404;
        }

        # 服务器代理实现跨域
        location /prod-api/ {
            proxy_pass   http://192.168.3.155:7002/; # 将/api/开头的url转向该域名
            #如果报错则使用这一行代替上一行 proxy_pass   http://localhost:8000;  将/api/开头的url转向该域名
            rewrite "^/prod-api/(.*)$" /$1 break ; # 最终url中去掉/api前缀
        }

        # 静态资源优化 - 添加 ^~ 前缀提高匹配优先级
        location ^~ /assets/ {
            root /data/data/com.termux/files/home/vue/ruoyi-vue/dist;
            expires 12h;
            error_log /dev/null;
            access_log /dev/null;
        }


        #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
        error_page 404 /404.html;

        #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
#         include /www/server/panel/vhost/rewrite/60.204.201.111.conf;
        #REWRITE-END

        #禁止访问的文件或目录
        location ~ ^/(.user.ini|.htaccess|.git|.env|.svn|.project|LICENSE|README.md)
        {
            return 404;
        }

        #一键申请SSL证书验证目录相关设置
        location ~ .well-known{
            allow all;
        }

        #禁止在证书验证目录放入敏感文件
        if ( $uri ~ "^/.well-known/.*.(php|jsp|py|js|css|lua|ts|go|zip|tar.gz|rar|7z|sql|bak)$" ) {
            return 403;
        }

        location ~ .*.(gif|jpg|jpeg|png|bmp|swf|ico)$
        {
            expires      30d;
            error_log /dev/null;
            access_log /dev/null;
        }

        location ~ .*.(js|css)?$
        {
            expires      12h;
            error_log /dev/null;
            access_log /dev/null;
        }
        access_log  /data/data/com.termux/files/usr/var/log/nginx/access.log;
        error_log   /data/data/com.termux/files/usr/var/log/nginx/error.log;
    }
本地访问

本人手机的ip为:192.168.3.155,端口用nginx的配置项即可,在Termux中输入nginx来启动,这样就可以本地访问了。

不知道ip的可以输入ifconfig来查看

先访问一下192.168.3.155:5173

可以看到,在电脑上已经能访问手机上启动的服务了。

但是我们需要外网也能访问,这就需要前面说的内网穿透了。

内网穿透

本项目的内网穿透选的是cpolar,教程见上文链接。

因为我装了sv工具,所以我输入sv up cpolar就启动了cpolar,启动后在电脑上输入手机IP + 9200端口号即可登录cpolar后台

配置本地的端口号: 配置完后,就可以在在线隧道列表菜单看到已配置的了

然后我们就可以在公网地址访问了,复制列表的地址,打开:

至此,我们已经可以在外网访问手机上、部署的vue打包项目了。但是此时没有后端服务,接下来我们同时部署后端的服务。

部署nodejs后端

先运行以下命令,启动redis和数据库

js 复制代码
redis-server --daemonize yes 

mysqld_safe &

然后根据nodejs的启动方法启动即可,一般为node 入口文件.js

我的启动成功如下

对应的前端地址如下:6331dea4.r5.cpolar.top/index

这个前后端是我用nodejs改写的java版若依管理后台,源码地址:gitee.com/ruirui-stud... 我以前的文章也有介绍的

最后,如果需要启动多个nodejs项目,可以用pm2管理

注意:本文的地址可能无法访问,因为手机我有别的用处,不一定随时开着

相关推荐
radient9 分钟前
MySQL数据线上扩容方案
后端
bobz96511 分钟前
Alfred 简析
后端
二闹11 分钟前
Map穿越JSON边境后惨遭“洗白”?前端:我只认识Object!
javascript·后端
ze_juejin11 分钟前
Fetch API 详解
前端
生无谓13 分钟前
ApplicationContextAware作用
后端
用户669820611298219 分钟前
js今日理解 blob和arrayBuffer 二进制数据
前端·javascript
想想肿子会怎么做22 分钟前
Flutter 环境安装
前端·flutter
断竿散人23 分钟前
Node 版本管理工具全指南
前端·node.js
转转技术团队24 分钟前
「快递包裹」视角详解OSI七层模型
前端·面试
1024小神29 分钟前
Ant Design这个日期选择组件最大值最小值的坑
前端·javascript