家用住宅服务器FRP隧道暴露AI中转接口
为什么需要用FRP暴露你的AI中转接口?
在家里部署了AI中转服务(比如 One-API、NewAPI 或其他兼容 OpenAI 接口的代理),但宽带没有公网 IP,或者不想暴露家用路由器的端口。
这时候 FRP(Fast Reverse Proxy)是最常用的内网穿透工具之一,它只需要一台有公网 IP 的云服务器做跳板,就能让外网通过这台云服务器访问你家里的中转接口。
本文会讲清楚准备条件、配置步骤、常见报错和处理方式,确保看完就能自己操作。
你需要提前准备的东西
- 一台有公网 IP 的云服务器(最低 1C2G 即可,系统推荐 Ubuntu 22.04 或 CentOS 7+)
- 家里的服务器(已经正常运行 AI 中转接口,假设端口为 3000)
- 域名(可选,如果你不想记 IP 地址,可以提前把域名解析到云服务器)
- FRP 软件包(到 GitHub releases 下载,注意服务端和客户端版本要一致)
安全提醒:不要在公开教程里贴你的真实 Token 或密码。
服务端配置(在云服务器上操作)
登录云服务器,用 wget 下载 FRP 并解压:
wget https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz
tar -xzf frp_0.58.1_linux_amd64.tar.gz
cd frp_0.58.1_linux_amd64
编辑服务端配置文件 frps.toml:
bindPort = 7000
auth.method = "token"
auth.token = "你的强密码" # 请务必修改为随机字符串
启动服务端(可以用 nohup 或 systemd 管理,这里用简单方式演示):
./frps -c frps.toml &
注意:云服务器的防火墙/安全组必须放行两个端口:7000(FRP 控制端口)和后面要映射的端口(比如 8080),不然客户端连不上。
客户端配置(在家用服务器上操作)
同样下载 FRP 客户端(服务端和客户端必须在同一台电脑上?
不,客户端下载到家里的服务器)。
解压后,编辑 frpc.toml:
serverAddr = "你的云服务器公网IP"
serverPort = 7000
auth.method = "token"
auth.token = "你的强密码" # 必须和服务端一致
[[proxies]]
name = "ai-proxy"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3000 # 你家中转接口的实际端口
remotePort = 8080 # 云服务器上对外暴露的端口
启动客户端:
./frpc -c frpc.toml &
如果一切正常,外网访问 云服务器IP:8080 就会穿透到你家里的 localhost:3000。
高频问题与避坑指南
1. 连接不上服务端?
先检查云服务器的安全组和系统防火墙是否放行了 7000 和 8080 端口。
在云服务器上执行:
ss -tlnp | grep 7000
如果没有输出,说明 frps 没启动成功,检查日志。
2. 客户端报错“connect: connection refused”
说明家用服务器的 3000 端口没有服务在监听。
确认你的 AI 中转接口确实在 3000 端口上运行:
ss -tlnp | grep 3000
3. 暴露的接口不安全怎么办?
FRP 本身只做端口转发,没有加密或鉴权。
建议你在家用服务器上配置 HTTPS(比如通过 Nginx 反代),或者在 FRP 客户端里启用 encryption = true 和 compression = true,并在服务端也开启 Token 认证(上面已配置)。
另外,尽量不要把端口直接暴露给全公网,可以考虑用 Nginx 反向代理加 IP 白名单或 Basic Auth。
4. 域名怎么绑定?
将域名 A 记录解析到云服务器 IP,然后在家用服务器的 Nginx 上配置反向代理指向 127.0.0.1:3000,并申请 SSL 证书。
这样访问 https://你的域名 就能用家里的中转接口了。
验证效果
在任意一台外网电脑上执行:
curl http://云服务器IP:8080/v1/models
如果返回 AI 模型列表(OpenAI 兼容格式),说明 FRP 隧道工作正常。
你也可以用 Postman 发送 POST 请求测试对话接口。
完成上述步骤后,你的家用服务器 AI 中转接口就通过 FRP 隧道安全暴露到了公网。
如果遇到问题,优先检查防火墙、端口占用和 FRP 日志,大多数情况都能在日志中找到原因。