项目代号:Redmi-Server-IPv6(红米note7pro:重生之我怎么成服务器了😂) 核心目标:接上一篇文章 如果白嫖服务器到期怎么办,来个一劳永逸的;利用闲置安卓手机,在无 Root 环境(无需解BL哦,当然解了更好)下搭建基于 IPv6 的全功能私有服务器。 实现功能:
- RustDesk 自建中继:实现全平台毫秒级远程桌面。
- Nginx 静态服务:作为 GitHub Blog 的国内极速镜像站。
- DDNS 动态解析:利用阿里云 API 实现 IPv6 公网直连。
🛠 第一阶段:环境初始化 (Termux)
Termux 是安卓上的 Linux 终端模拟器,是我们一切服务的基础。
1. 安装与配置
-
下载安装 Termux (推荐 F-Droid 版本)。
-
权限设置:安卓设置 -> 应用 -> Termux -> 电池优化 -> 设为“无限制” (防止后台杀进程)。
-
小技巧:小米手机可以上划进入请后台界面,然后长按Termux,加锁,这样一键清后台也不会把Termux杀掉。
-
初始化环境:
# 换源并更新 termux-change-repo pkg update && pkg upgrade -y # 安装核心工具链 pkg install vim git nodejs nginx python lsof screen openssh wget curl -y
2. 目录结构规范 为了避免文件散落在 ~ 根目录,建立工程化目录结构:
~/ddns/:存放 DDNS 脚本及配置文件。~/www/blog/:存放博客静态文件。~/rustdesk/:存放远程桌面服务程序。
🌐 第二阶段:网络与域名 (最核心的坑)
这是本次折腾中最耗时、坑最多的部分,涉及公网 IPv6、DNS 解析以及本地代理冲突。
1. 域名解析 (Aliyun)
-
前提:在阿里云购买域名(也可以不买直接用IPV6地址,但不够优雅) 。
-
操作:
-
登录阿里云 DNS 控制台。
-
添加 AAAA 记录(针对 IPv6):
- 主机记录
@-> 指向手机当前 IPv6 地址。 - 主机记录
www-> 指向手机当前 IPv6 地址。
- 主机记录
-
获取 AccessKey ID 和 Secret (用于 DDNS),一定要保存下来!!!
-
2. 部署 DDNS-Go
-
下载:下载
ddns-go的linux_arm64版本。 -
配置:
-
运行
./ddns-go -s install。 -
浏览器访问
http://127.0.0.1:9876。 -
关键设置:
- DNS 服务商选 Aliyun。
- 启用 IPv6,获取方式选“通过网卡获取”。
- Domain: 填写
购买的域名。
-
⚠️ 3. 解决“代理冲突” (排错重点)
现象:不开梯子能连,开了梯子反而连不上(DNS 污染/拦截)。 解决方案 (必做) :
-
Clash/代理软件端:
-
开启 IPv6 支持。
-
在配置文件的
rules最上方添加直连规则(记得保存后重启):- DOMAIN-SUFFIX,你的域名,DIRECT
-
-
Windows 系统端 (必杀技) :
-
设置 -> 网络 -> 代理 -> 手动设置代理 -> 编辑。
-
在“请勿将代理服务器用于下列地址”中追加:
;你的域名
-
🖥 第三阶段:部署 RustDesk 中继服务
彻底摆脱 TeamViewer 和向日葵的限速。
1. 下载服务端
- 前往 GitHub Releases 下载
rustdesk-server-linux-arm64.zip。 - 解压至
~/rustdesk/。
2. 启动服务 利用 screen 保持后台运行:
# 启动 ID 服务 (hbbs)
screen -dmS hbbs ./hbbs -r 你的域名:21117
# 启动 中继服务 (hbbr)
screen -dmS hbbr ./hbbr
3. 客户端配置
- ID/中转服务器:填写
你的域名。 - Key:查看手机上的公钥文件 (
cat ~/rustdesk/id_ed25519.pub) 并填入客户端。
📝 第四阶段:Nginx 博客镜像站
将 GitHub Pages 镜像到本地,实现内网/国内极速访问。
1. 拉取博客代码
mkdir -p ~/www/blog
cd ~/www/blog
# 注意:这里直接克隆到当前目录
git clone https://github.com/github名/github名.github.io.git .
2. 配置 Nginx (核心配置) 编辑文件:vim $PREFIX/etc/nginx/nginx.conf 全量替换 http { server { ... } } 部分:
server {
# 手机非 Root 只能监听 1024 以上端口
# 避开运营商封锁的 80/8080,使用 8888
listen 8888;
listen [::]:8888;
server_name 你的域名 www.你的域名;
# 务必使用 pwd 获取的绝对路径
root /data/data/com.termux/files/home/www/blog;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
3. 启动与验证
# 检查配置
nginx -t
# 启动 (如果报错 invalid PID,直接运行 nginx 即可)
nginx
# 重载
nginx -s reload
访问地址:http://你的域名:8888
🤖 第五阶段:自动化运维脚本
为了防止手机重启服务挂掉,以及自动同步博客更新。
1. 一键启动脚本 (~/start_all.sh)
#!/bin/bash
echo "启动 DDNS..."
cd ~/ddns && screen -dmS ddns ./ddns-go
echo "启动 RustDesk..."
cd ~/rustdesk
screen -dmS hbbs ./hbbs -r wuwk.top:21117
screen -dmS hbbr ./hbbr
echo "启动 Nginx..."
pkill -9 nginx
nginx
echo "所有服务已启动!"
2. 博客自动同步脚本 (~/sync_blog.sh)
#!/bin/bash
cd /data/data/com.termux/files/home/www/blog
git pull origin master
# 检查 Nginx 是否存活,死则启,活则刷
if pgrep -x "nginx" > /dev/null; then
nginx -s reload
else
nginx
fi
建议配合 crontab 设置每小时执行一次。
🔋 第六阶段:硬件保命方案
红米 Note 7 Pro 长期插电运行的隐患是电池鼓包。
解决方案:
-
不推荐:拆机改直供电(风险大,断电即关机)。
-
推荐:由于没有root,购买小米智能插座就行了。
-
自动化设置:配合米家 APP 设置场景:
- IF 电量 > 80% THEN 关闭插座。
- IF 电量 < 30% THEN 开启插座。
-
散热:去掉手机壳即可。
❓ 常见问题排查手册 (Troubleshooting)
-
Nginx 报错
invalid PID number:- 原因:Nginx 进程没在运行。
- 解决:直接输入
nginx启动,不要用reload。
-
外网访问博客转圈圈 (Timeout) :
- 原因:路由器拦截了入站连接。
- 解决:进入路由器后台,关闭 IPv6 防火墙,或添加允许
8888和21116端口的规则。
-
RustDesk 提示“Key 不匹配” :
- 原因:服务端重新生成了密钥。
- 解决:检查手机上
id_ed25519.pub的内容是否变动,更新客户端设置。
-
curl本地通,外网不通:- 检查 Nginx 配置里是否写了
listen [::]:8888;(必须有[::])。
- 检查 Nginx 配置里是否写了
最后的话: 你现在拥有一台完全免费、带宽跑满、数据私有的高性能服务器。如果未来更换设备,只需要把 Termux 里的数据打包,按照这篇文档重新配置一下 IP 和 Nginx 路径即可。
Happy Hacking! 🚀