663 字
3 分钟
Frp内网穿透到云服务器
把本地服务器的端口映射到公网服务器,通过公网服务器ip地址+端口来访问内网
具体为:
其中192.168.31.29为本地服务器内网ip
公网服务器(Frp服务端)
下载amd64/Linux的frp
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz解压
tar -zxvf frp_0.65.0_linux_amd64.tar.gz把frpc复制到/usr/local/bin
cd frp_0.65.0_linux_amd64/
sudo cp frps /usr/local/bin/设置配置文件
sudo mkdir -p /etc/frp
sudo vim /etc/frp/frps.toml填入以下内容
auth.token和webServer.password要配置的足够安全,不然有安全隐患。
# frp 服务端监听的控制端口,用于和客户端建立连接bindPort = 7000
# 鉴权机制auth.method = "token"auth.token = "password"
# FRP Dashboard 面板,方便监控连接数和流量webServer.addr = "0.0.0.0"webServer.port = 7500webServer.user = "admin"webServer.password = "password"创建和配置/etc/systemd/system/frps.service
[Unit]Description=Frp Server ServiceAfter=network.target
[Service]Type=simpleUser=rootRestart=on-failureRestartSec=5s# 注意配置文件的路径ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml
[Install]WantedBy=multi-user.target启动和检查状态
sudo systemctl enable --now frps
systemctl status frps云服务器放行端口:
公网防火墙 (安全组): 在服务器的控制台的安全组 中放行以下端口:
7000(FRP 通信)8000(映射后的 WS)8002(映射后的 Web)8003(映射后的 Vision)
以及确保云服务器中的对应端口没有被占用
可以通过服务器ip和7500端口进入控制面板

内网服务器(Frp客户端)
同样的下载和解压Frp,把frpc复制到/usr/local/bin
sudo cp frpc /usr/local/bin/创建配置文件
sudo mkdir -p /etc/frp
sudo vim /etc/frp/frpc.toml# 公网服务器 IPserverAddr = "x.x.x.x"serverPort = 7000
# 鉴权 Token (必须与服务端 frps.toml 一致)auth.method = "token"auth.token = "password"
# --- 隧道 1: WebSocket API ---[[proxies]]name = "xiaozhi-ws-8000"type = "tcp"localIP = "127.0.0.1"localPort = 8000remotePort = 8000transport.useEncryption = truetransport.useCompression = true
# --- 隧道 2: Web 管理 & OTA ---[[proxies]]name = "xiaozhi-web-8002"type = "tcp"localIP = "127.0.0.1"localPort = 8002remotePort = 8002transport.useEncryption = truetransport.useCompression = true
# --- 隧道 3: 视觉分析接口 ---[[proxies]]name = "xiaozhi-vision-8003"type = "tcp"localIP = "127.0.0.1"localPort = 8003remotePort = 8003transport.useEncryption = truetransport.useCompression = true对应内网服务器的8000、8002、8003端口

临时测试
frpc -c frpc.toml参考云服务器配置,设置为systemd守护进程并启动运行
创建和配置/etc/systemd/system/frpc.service
[Unit]Description=Frp Client ServiceAfter=network.target
[Service]Type=simpleUser=rootRestart=on-failureRestartSec=5s# 注意配置文件的路径ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.toml
[Install]WantedBy=multi-user.target启动和检查状态
sudo systemctl enable --now frpc
systemctl status frpc理论上实现的效果
假设公网服务器ip地址为xxx.xxx.xxx.xxx,浏览器输入http://xxx.xxx.xxx.xxx:8002即可进入AI对话服务端的web界面,其他以此类推。
后面再在公网服务器上部署 Nginx ,把形如http://xxx.com/xiaozhi/ota/到地址指向指定端口。
Frp内网穿透到云服务器
https://hyrsoft.github.io/posts/tools/frp内网穿透到云服务器/