旧手机秒变服务器?315元搞定459元续费难题,你还在花冤枉钱吗
作者:佚名 时间:2025-11-12 09:37
身为一位长时间留意开源技术的媒体工作者,我察觉到有越来越多的开发者着手尝试运用低成本的方案去替换传统的云服务。这一趋势不但体现出技术民主化方面取得的进展,而且还揭示出商业云服务定价跟个人开发者预算之间存在的矛盾。就在今天,我们所要进行报道的恰恰就是这样一个把闲置手机转变为服务器的真实事例。

设备选择与成本控制
选购二手平台设备之际,开发者得综合考量性能、功耗以及稳定性。这位开发者最终花315元买入了一部带12GB内存的iQOO Neo5手机,此容量足够支撑运行多个Node.js服务。挑选二手设备的要点在于确认其网络模块、存储硬件有无完好,防止因硬件隐患致使服务中断 。
于改造进程里发觉手机存有细微的瑕疵,可那并不会对核心功能造成影响,跟传统云服务器每年459元的续费成本相比较而言,此次设备投入仅仅等同于云服务费用的68%,同时这是属于一次性的投入,这般的方案格外契合那些需要长期运行轻量级服务的个人开发者。
Termux环境配置
pkg update && pkg upgrade -y
pkg install wget curl nano -y
名为Termux的、作为Android端 Linux模拟环境的事物,可经由GitHub或者APKFab应用商店来获取。在开展安装操作时,要确保Android系统版本处于7.0以上,以此获得完整的软件包支持。此环境供给apt包管理功能,这功能能够安装涵盖Node.js的多种开发工具。
pkg install nodejs
// 安装PHP或其他的同理,示例如下:
pkg install php
留意存储权限的设置过程当中是必要的呀,保障Termux获得访及手机存储空间的权益哟。依照开发者推荐的方式,借助termux - setup - storage这样的指令而去开展存储权限的初始化操作呢,便于让后续的项目文件部署得以顺利进行呀。然后呢,在环境配置完毕之后,需要更新软件源呀,以此来保证能够取得最新版本化的软件包哟。
Node.js环境搭建

要在Termux里安装Node.js环境,得使用pkg install nodejs命令来安装啦,此命令安装完毕后呢,就要通过node -v去验证版本咯。当前Termux官方源所提供的是Node.js 18及至该数以上的版本哦,而且是能够完全支持现代JavaScript特性的呢。鉴于考虑到手机的存储空间这种情况呀,建议只去安装项目所必需的那些依赖包哦。
在内存管理方面,开发者察觉到,12GB的内存量,足够用来同时运行多个Node.js服务。然而,要留意手机的散热状况,因为长时间保持高负载运行,有可能致使CPU出现降频现象。另外,可以借助termux-cpu-info命令,来监控设备的状态了,在必要的时候,对服务配置作出调整 。

SSH远程连接配置
配置SSH服务,从而让开发者能够于电脑端借助Xshell等工具对手机服务器进行远程操作,开始于Termux里安装openssh软件包,接着运用whoami命令去查看用户名,此用户名会被用于SSH登录验证,默认情形下SSH服务监听8022端口,通过这些步骤来完成相关操作。

从安全设置的层面来看,提议去更改默认的 SSH 配置,并且采用密钥认证的方式。能够借助编辑$PREFIX/etc/ssh/sshd_config 文件,以此来禁止使用密码登录,进而避免出现未被授权的访问情况。在处于内网的环境中,运用 ifconfig 命令去获取设备的 IP 地址,从而达成在局域网范围内的远程管理操作。
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;
}
Nginx担当反向代理服务器,承担着把外部请求转至具体的Vue项目的职责,配置文件里要针对每个项目构建独立的server块,明确不同的监听端口以及静态文件路径,开发者能够依照项目需求去设定缓存策略和超时参数。
在Termux里头启动Nginx服务只需要输入nginx命令,配置弄好之后,在电脑浏览器输入手机IP地址再加上端口号就能对部署的项目进行访问,设若碰到端口冲突,能够借助netstat命令去检查端口占用状况,对配置文件里的端口设置作出调整。

内网穿透与公网访问
达成内网穿透选用cpolar这一工具,于Termux里借由sv up cpolar命令开启服务,向访问手机IP的9200端口步入管理界面,配置隧道映射将本地端口曝露至公网,cpolar备有免费版与付费版,个人开发者一般选用免费版本便能满足需求 。

对于公网访问而言,是需要去关注安全问题的,还建议设置复杂度高的访问密码并且要定期去更换认证令牌。有些网络环境也许会限制内网穿透工具的使用,这就需要用户自己去确认网络政策。这样的一种方案致使个人项目能够通过接近零成本状态的方式来提供公网访问的能力。
在当下技术飞速迭代之际,个人开发者怎样去平衡成本跟效能呢?你们可有试着那样相似的替代方案呀,又碰到了什么意料之外的技术难题呢?欢迎于评论区分享你们的实践经历呀,要是觉着本文具备价值,请毫不迟疑地点赞予以支持。




