无公网IP解决方案:内网穿透实现OpenClaw+nanobot远程访问
1. 为什么需要内网穿透
上周我在家部署了OpenClaw和nanobot组合,想实现通过QQ远程控制家中电脑执行自动化任务。但很快发现一个现实问题:家里宽带没有公网IP,外网根本无法访问本地服务。这就像给AI助手装上了翅膀,却把它锁在了笼子里。
经过一番调研,我选择了frp作为内网穿透工具。相比其他方案,frp的优势在于配置简单、性能稳定,而且支持HTTPS和自定义域名。更重要的是,它完美解决了我的核心需求:在外网通过QQ机器人安全地控制家中OpenClaw执行任务。
2. 基础环境准备
2.1 硬件与网络要求
我的实验环境是一台闲置的Mac mini(M1芯片,16GB内存)作为家庭服务器,系统为macOS Ventura 13.5。网络方面,家庭宽带采用PPPoE拨号上网,路由器是小米AX6000。
关键点在于:
- 确保内网服务(OpenClaw网关)能在本地正常访问
- 路由器支持端口转发(虽然我们没有公网IP,但后续frp需要)
- 准备一个域名(我用的是阿里云购买的二级域名)
2.2 服务部署
首先按照常规方式部署nanobot和OpenClaw:
# 安装nanobot docker pull registry.cn-hangzhou.aliyuncs.com/qingchen/nanobot:latest docker run -d -p 8000:8000 --name nanobot registry.cn-hangzhou.aliyuncs.com/qingchen/nanobot:latest # 安装OpenClaw curl -fsSL https://openclaw.ai/install.sh | bash openclaw onboard --install-daemon openclaw gateway --port 18789验证本地访问正常:
- nanobot:
http://localhost:8000 - OpenClaw网关:
http://localhost:18789
3. frp服务端配置
3.1 购买云服务器
我选择了一台腾讯云轻量应用服务器(1核2G,上海区域,CentOS 7.6),主要考虑:
- 地理位置靠近我家(江苏)
- 有固定公网IP
- 月费仅需65元
3.2 安装frps
在云服务器上执行:
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz tar -zxvf frp_0.52.3_linux_amd64.tar.gz cd frp_0.52.3_linux_amd64配置服务端(frps.ini):
[common] bind_port = 7000 vhost_http_port = 8080 vhost_https_port = 8443 subdomain_host = ai.yourdomain.com token = your_secure_token_123启动服务:
nohup ./frps -c ./frps.ini > frps.log 2>&1 &3.3 域名与HTTPS配置
- 将域名解析指向云服务器公网IP
- 申请SSL证书(我使用acme.sh自动签发):
curl https://get.acme.sh | sh ~/.acme.sh/acme.sh --issue -d ai.yourdomain.com --standalone- 配置frps使用证书:
[common] ... tls_only = true tls_cert_file = /path/to/fullchain.cer tls_key_file = /path/to/ai.yourdomain.com.key4. 本地客户端配置
4.1 安装frpc
在家庭服务器(Mac)上:
brew install frpc配置文件(frpc.ini):
[common] server_addr = your_server_ip server_port = 7000 token = your_secure_token_123 [openclaw] type = http local_port = 18789 subdomain = claw [nanobot] type = http local_port = 8000 subdomain = nano4.2 启动客户端
frpc -c frpc.ini现在可以通过以下地址访问服务:
- OpenClaw:
https://claw.ai.yourdomain.com - nanobot:
https://nano.ai.yourdomain.com
5. QQ机器人集成
5.1 安装QQ插件
openclaw plugins install @m1heng-clawd/qq openclaw plugins list5.2 配置QQ开放平台
- 在QQ开放平台创建机器人应用
- 获取AppID和AppSecret
- 配置回调地址为
https://claw.ai.yourdomain.com/qq/callback
修改OpenClaw配置(~/.openclaw/openclaw.json):
{ "channels": { "qq": { "enabled": true, "appId": "你的QQ机器人AppID", "appSecret": "你的QQ机器人AppSecret" } } }5.3 测试远程控制
重启OpenClaw网关后,在QQ中给机器人发送:
/help应该能收到OpenClaw返回的命令列表。尝试执行一个简单任务:
整理桌面截图并发送6. 安全加固措施
6.1 IP访问限制
在frps.ini中添加:
[common] ... allow_ports = 7000,8080,84436.2 定期更换token
建议每月更新一次frp的token,并同步更新客户端配置。
6.3 日志监控
设置日志轮转和异常登录检测:
# 日志轮转 logrotate /etc/logrotate.d/frps # 异常检测脚本示例 grep "invalid token" /var/log/frps.log | mail -s "FRP警报" your@email.com7. 实际使用体验
这套方案已经稳定运行了两周,最实用的三个场景:
- 远程文件管理:在外出时通过QQ让OpenClaw打包发送指定文件
- 定时任务监控:让nanobot每天20点检查下载任务并微信通知我
- 紧急情况处理:有次家人电脑出现问题,我远程让OpenClaw截图并诊断
性能方面,内网穿透带来的延迟约200-300ms,对于非实时操作完全可接受。流量消耗主要来自截图和文件传输,建议在移动网络下发送压缩指令。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。