无公网IP解决方案:内网穿透下的OpenClaw+GLM-4.7-Flash远程办公助手
无公网IP解决方案:内网穿透下的OpenClaw+GLM-4.7-Flash远程办公助手
1. 为什么需要内网穿透下的OpenClaw?
去年夏天,我在家办公时遇到一个棘手问题:公司内网的开发机无法直接访问,但需要定时执行数据同步脚本。传统方案是让IT部门开通VPN权限,但审批流程长达两周。这时我发现了OpenClaw+内网穿透的组合方案——它让我在咖啡厅用手机就能触发家里的电脑完成自动化任务。
OpenClaw本身是本地化部署的AI智能体框架,默认只能在内网访问控制台(http://127.0.0.1:18789)。但通过frp/ngrok等工具,我们可以安全地将服务暴露到公网。这个方案特别适合:
- 需要在外网触发家中/办公室电脑任务的自由职业者
- 跨地区协作的小团队(成员在不同内网环境)
- 临时需要远程访问但不愿配置复杂VPN的场景
2. 基础环境搭建
2.1 部署GLM-4.7-Flash模型服务
我选择ollama部署的GLM-4.7-Flash作为后端模型,主要考虑其响应速度和中文处理能力。在Ubuntu服务器上执行:
ollama pull glm-4.7-flash ollama run glm-4.7-flash --port 11434测试模型服务是否正常:
curl http://127.0.0.1:11434/api/generate -d '{ "model": "glm-4.7-flash", "prompt": "你好" }'2.2 OpenClaw基础配置
修改~/.openclaw/openclaw.json对接本地模型:
{ "models": { "providers": { "local-glm": { "baseUrl": "http://127.0.0.1:11434", "api": "openai-completions", "models": [ { "id": "glm-4.7-flash", "name": "Local GLM", "contextWindow": 32768 } ] } } } }启动网关服务并验证:
openclaw gateway restart openclaw models list3. 内网穿透实战方案
3.1 frp服务端配置(公网服务器)
在具有公网IP的服务器上安装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编辑frps.ini:
[common] bind_port = 7000 authentication_method = token token = your_secure_token_here启动服务端:
./frps -c frps.ini3.2 frp客户端配置(内网OpenClaw主机)
在内网机器安装frpc,配置frpc.ini:
[common] server_addr = your_server_ip server_port = 7000 token = your_secure_token_here [openclaw-web] type = http local_port = 18789 custom_domains = openclaw.yourdomain.com [openclaw-ws] type = tcp local_port = 18790 remote_port = 18790启动客户端并设置开机自启:
./frpc -c frpc.ini sudo cp frpc /usr/local/bin/ sudo cp systemd/frpc.service /etc/systemd/system/ sudo systemctl enable frpc4. 安全加固关键措施
4.1 访问控制三重防护
- 基础认证:在OpenClaw网关前部署Nginx基础认证
location / { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://127.0.0.1:18789; }- IP白名单:限制frps只接受特定IP连接
[common] allow_ports = 7000-7100 allow_ports = 18789-18790- 双因素验证:通过飞书/钉钉等渠道二次确认敏感操作
4.2 日志监控方案
配置frps详细日志并接入ELK:
[common] log_file = /var/log/frps.log log_level = info log_max_days = 7使用fail2ban防御暴力破解:
[frp-auth-fail] enabled = true filter = frp-auth-fail logpath = /var/log/frps.log maxretry = 3 findtime = 300 bantime = 36005. 移动端任务触发实践
5.1 飞书机器人配置
安装飞书插件并配置openclaw.json:
{ "channels": { "feishu": { "enabled": true, "appId": "cli_xxxxxx", "appSecret": "xxxxxxxx", "connectionMode": "websocket", "verificationToken": "xxxxxx" } } }5.2 典型使用场景
早晨通勤时,我通过飞书发送: "帮我检查昨晚的日志,找出ERROR级别的记录并整理成表格"
OpenClaw执行流程:
- 通过WebSocket接收指令
- 调用GLM-4.7-Flash分析任务需求
- 在内网主机执行日志分析脚本
- 将结果表格通过飞书消息返回
6. 踩坑与优化经验
Token消耗问题:初期发现长任务Token消耗过大,通过以下方式优化:
- 在模型调用时添加
"max_tokens": 512限制 - 复杂任务拆分为多个子任务
- 对格式化输出使用函数调用而非纯文本生成
连接稳定性:移动网络下WebSocket易断开,解决方案:
- 配置心跳检测(pingInterval: 30000)
- 失败任务自动加入重试队列
- 关键操作要求二次确认
这套方案已经稳定运行半年多,最让我惊喜的是在海外旅行时,通过手机就能让家里的电脑完成紧急数据处理。不过要特别注意:每次使用后检查frp日志,发现异常连接立即更换token。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
