把旧手机变成一台服务器
我桌上有一台淘汰的 Android 手机。屏幕碎了,电池也不太行,但它有 16 核的 CPU、 32 GB 内存和 221 GB 存储。这个配置,比很多入门级云服务器高出一个数量级。
于是就有了这个站——它没有跑在机房里,而是跑在这台手机里。
先泼一盆冷水
手机不是服务器,差距不在性能,在三个地方:
- 没有公网 IP。移动网络在运营商 NAT 后面,外部连不进来,这是硬伤。
- 后台会被杀。Android 的 Doze 机制会主动冻结后台进程,各家定制系统更激进。
- 数据不可靠。UFS 闪存坏了不可恢复,而且随时可能因为一次进水全部消失。
所以定位要摆正:当练习机、内网服务、临时演示,非常合适;当正式服务器,不合适。
装 Termux
必须从 F-Droid 装,不要用 Play 商店那个版本——它 2022 年就停更了,包源是坏的。
pkg update && pkg upgrade -y
pkg install -y openssh git python3 proot-distro
passwd # 设登录密码
sshd # 启动 SSH,默认 8022 端口
termux-wake-lock
termux-wake-lock 是关键。它让 CPU 在锁屏后不休眠,否则你合上屏幕,
sshd 十分钟后就没了。
让它在重启后自己活过来
还需要装一个 Termux:Boot,它会在开机后执行
~/.termux/boot/ 目录下的脚本:
mkdir -p ~/.termux/boot
cat > ~/.termux/boot/start.sh <<'EOF'
#!/data/data/com.termux/files/usr/bin/sh
sleep 10
termux-wake-lock
sshd
EOF
chmod +x ~/.termux/boot/start.sh
注意两个细节:一是 sleep 10,开机瞬间网络和存储还没准备好;
二是脚本必须可执行,否则会被静默跳过。
三个必须做的系统设置
光装软件不够,系统层面不做这些,服务照样会死:
- 电池优化设为「不限制」
- 允许 Termux 自启动(国产 ROM 路径各不相同,搜「自启动」)
- 把 Termux 加进 Doze 白名单:
cmd deviceidle whitelist +com.termux
结果
现在这台手机跑着 sshd、nginx 和一个 Python 接口,开机自动拉起, 锁屏不掉线。功耗大约 5 瓦——比一个路由器高不了多少。
代价是:它随时可能因为一块电池而报废。所以这台机器上只放能重来的东西。