架构概览
手机 → https://你的域名.com (云服务器 nginx:443)
→ nginx 反代到 frps:8888 (本地监听)
→ frp 隧道 (frps:7000 ↔ frpc)
→ 本地电脑 OpenClaw:18789
前提条件
- 一台有公网 IP 的云服务器(如阿里云、腾讯云)
- 一个已备案的域名
- 本地电脑运行 OpenClaw
第一步:云服务器配置
1.1 下载安装 frp
mkdir -p /root/frp && cd /root/frp
wget https://ghproxy.com/github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
tar -xzf frp_0.61.1_linux_amd64.tar.gz --strip-components=1
rm -f frp_0.61.1_linux_amd64.tar.gz
1.2 创建 frps 配置文件
cat > /root/frp/frps.toml << 'EOF'
bindPort = 7000
vhostHTTPPort = 8888
auth.token = "你的密码_自己设一个"
log.to = "/var/log/frps.log"
log.level = "info"
log.maxDays = 7
EOF
1.3 创建 systemd 服务(开机自启)
cat > /etc/systemd/system/frps.service << 'EOF'
[Unit]
Description=frps service
After=network.target
[Service]
Type=simple
ExecStart=/root/frp/frps -c /root/frp/frps.toml
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable frps
systemctl start frps
1.4 配置 nginx 反代
cat > /etc/nginx/conf.d/openclaw.conf << 'EOF'
server {
listen 80;
server_name 你的域名.com;
location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
EOF
nginx -t && nginx -s reload
1.5 开放安全组端口
在云服务器控制台的安全组中开放:
- 7000 端口(frp 通信端口)
第二步:域名解析
在域名 DNS 管理页面添加 A 记录:
| 类型 | 主机记录 | 记录值 |
|---|---|---|
| A | 你的前缀 | 云服务器公网IP |
例如:openclaw.example.com → 123.45.67.89
第三步:本地 Windows 配置
3.1 下载 frp
从 https://ghproxy.com/github.com/fatedier/frp/releases 下载 Windows 版本,解压到 C:\frp\
3.2 创建 frpc 配置文件
在 C:\frp\ 目录创建 frpc.toml:
serverAddr = "云服务器公网IP"
serverPort = 7000
auth.token = "你的密码_和服务器一致"
[[proxies]]
name = "openclaw"
type = "http"
localIP = "127.0.0.1"
localPort = 18789
customDomains = ["你的域名.com"]
3.3 设置开机自启(Windows 任务计划)
以管理员身份运行 PowerShell:
$action = New-ScheduledTaskAction -Execute "C:\frp\frpc.exe" -Argument "-c C:\frp\frpc.toml" -WorkingDirectory "C:\frp"
$trigger = New-ScheduledTaskTrigger -AtStartup
$settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -DontStopOnIdleEnd -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName "OpenClaw-frpc" -Action $action -Trigger $trigger -Settings $settings -Principal $principal -Description "OpenClaw frpc tunnel" -Force
3.4 启动 frpc
Start-ScheduledTask -TaskName "OpenClaw-frpc"
第四步:配置 OpenClaw Gateway
编辑 C:\Users\你的用户名\.openclaw\openclaw.json,在 gateway.controlUi.allowedOrigins 中添加你的域名:
"controlUi": {
"allowedOrigins": [
"http://localhost:18789",
"http://127.0.0.1:18789",
"http://你的域名.com",
"https://你的域名.com"
]
}
然后重启 Gateway:
openclaw gateway restart
第五步:手机访问
- 手机浏览器打开
https://你的域名.com - 首次访问会显示 "pairing required"
- 在本地电脑运行以下命令查看待配对设备:
openclaw devices list - 批准配对请求:
openclaw devices approve <RequestID> - 刷新手机页面即可使用
常用命令
云服务器
# 查看 frps 状态
systemctl status frps
# 重启 frps
systemctl restart frps
# 查看日志
tail -f /var/log/frps.log
本地 Windows
# 启动 frpc
Start-ScheduledTask -TaskName "OpenClaw-frpc"
# 停止 frpc
Stop-ScheduledTask -TaskName "OpenClaw-frpc"
# 查看 frpc 进程
Get-Process -Name "frpc"
# 查看待配对设备
openclaw devices list
# 批准配对
openclaw devices approve <RequestID>
端口说明
| 端口 | 用途 | 是否对外开放 |
|---|---|---|
| 7000 | frpc ↔ frps 通信 | 是 |
| 8888 | nginx → frps 内部转发 | 否(仅本地) |
| 80/443 | nginx 对外服务 | 是 |
| 18789 | OpenClaw Gateway | 否(仅本地) |
故障排查
- 连接超时 → 检查云服务器安全组是否开放 7000 端口
- 域名无法访问 → 检查 DNS 解析和 nginx 配置
- origin not allowed → 检查 openclaw.json 中的 allowedOrigins
- pairing required → 运行
openclaw devices approve <RequestID>批准配对