无公网IP家用住宅主机FRP穿透AI中转公网访问
很多人在自己家里用台式机或迷你主机跑AI模型(比如Ollama、ComfyUI、vLLM),但家用宽带通常没有公网IP,导致只能内网使用。
借助FRP这个轻量级反向代理工具,你可以把家庭主机上的AI服务端口映射到一台有公网IP的云服务器上,实现从任何地方安全调用。
你需要准备什么
- 一台有公网IP的云服务器(最低1核1G,带宽建议5Mbps以上)
- 一台运行AI服务的家庭主机(Windows/Linux均可)
- FRP最新版本软件包(从GitHub releases下载frp_0.xx.x_linux_amd64.tar.gz等)
- 家庭主机与云服务器之间能互通网络(一般家庭宽带出网无问题)
服务端配置(云服务器)
云服务器上运行FRP服务端frps,负责接收客户端连接并转发流量。
- 下载并解压FRP,进入目录。
- 编辑
frps.toml(旧版是frps.ini,新版使用toml格式):
bindPort = 7000
vhostHTTPPort = 8080
# 如果需要HTTPS,设置 vhostHTTPSPort = 443
# 推荐开启token认证增强安全
auth.method = "token"
auth.token = "your_secure_token_here"
- 启动服务端:
./frps -c frps.toml(建议用systemd管理)。 - 确认云服务器防火墙放行端口7000(绑定端口)和8080(HTTP访问端口)。
客户端配置(家庭主机)
家庭主机上运行FRP客户端frpc,将AI服务的本地端口映射到服务端。
假设你家主机上跑了Ollama(默认端口11434),你想通过公网域名ai.example.com:8080访问。
- 同样下载并解压FRP,编辑
frpc.toml:
serverAddr = "你的云服务器公网IP"
serverPort = 7000
auth.method = "token"
auth.token = "your_secure_token_here"
[[proxies]]
name = "ollama"
type = "tcp"
localIP = "127.0.0.1"
localPort = 11434
remotePort = 11434
# 如果想用HTTP方式转发(方便浏览器访问),可使用type = "http"并配置customDomains
- 如果你的AI服务是Web UI(比如ComfyUI跑在8188端口),用HTTP代理更方便:
[[proxies]]
name = "comfyui-web"
type = "http"
localIP = "127.0.0.1"
localPort = 8188
customDomains = ["ai.example.com"]
- 启动客户端:
./frpc -c frpc.toml。
易踩的坑与解决办法
- 防火墙拦截:云服务器务必在安全组(如阿里云安全组、腾讯云防火墙)放行7000和8080端口;家庭主机如果开启系统防火墙,需要允许frpc进程出站。
- 端口冲突:如果云服务器8080已被占用,可改成其他端口(如18080),记得对应修改客户端
customDomains的配置。 - 域名解析:使用HTTP代理时,必须把
ai.example.com解析到云服务器IP,并在云服务器上配置Nginx反向代理以优雅处理路径转发(FRP v3以上支持直接HTTP代理转发请求到子路径,但推荐用Nginx+FRP组合)。 - TLS加密:如果传输敏感数据(如API Key),建议在FRP两端开启TLS:服务端设置
tls.force = true,客户端对应tls.enable = true。 - 客户端断连:家庭主机重启后frpc不会自动运行,建议用systemd或Windows计划任务设置为开机自启。
验证AI服务是否可公网访问
在任意有公网的地方(比如手机4G网络),执行:
curl http://你的云服务器公网IP:8080/api/tags # Ollama API示例
如果返回JSON数据(如模型列表),说明穿透成功。
对于HTTP代理,直接在浏览器访问http://ai.example.com:8080,应看到ComfyUI或对应Web界面。
常见问题解答
Q:为什么客户端提示连接拒绝?
检查云服务器frps是否在运行,端口是否开放,token是否一致。
Q:公网访问非常慢怎么办?
家庭上传带宽通常很小(30-50Mbps),AI模型推理本身有大流量(图片/流式输出),建议只做API级中转,或降低输出质量。
Q:FRP能同时穿透多个AI服务吗?
可以。只需在frpc.toml中添加多个[[proxies]],每个设置不同localPort或域名。
如果你在部署中遇到其他报错,可以对照FRP官方文档或搜索“frpc connect error”等关键词排查。
先从最简单的TCP映射开始测试,成功后逐步加上HTTP、TLS等高级功能。
希望这篇教程能帮你顺利把家里的AI能力带到公网。