FRP内网穿透公网访问本地私有AI问答系统完整配置指南
为什么你需要FRP穿透本地AI问答系统
在家里或内网服务器上部署了 Ollama、AnythingLLM 或类似私有 AI 问答系统后,如果只能局域网访问,就失去了“随时随地问答”的便利。
FRP(Fast Reverse Proxy)是目前最稳定的内网穿透方案之一,可以把你本地的 AI 系统安全地暴露到公网,配合域名解析后任何地方都能用浏览器或客户端调用。
本文以 Linux 云服务器作为 FRP 服务端,本地 Windows(或 Linux)作为客户端,完整演示如何配置 FRP 并成功通过公网访问本地 AI。
前置准备:服务器、域名与软件下载
开始前你至少需要三样东西:
- 一台有公网 IP 的云服务器(推荐 1 核 2G 以上,系统用 Ubuntu 22.04 或 CentOS 7+)。
- 一个已解析到该服务器 IP 的域名(例如
ai.yourdomain.com)。 - FRP 软件包:到 GitHub 的 fatedier/frp 仓库下载最新版。服务端和客户端架构可能不同,分别下载对应版本。
本地 AI 系统(如 Ollama)默认监听本地 11434 端口,你要确保它已正常运行。
第一步:配置 FRP 服务端(云服务器端)
将下载的 frp 压缩包上传到云服务器,解压后进入目录。
编辑配置文件 frps.toml(新版本使用 toml 格式,旧版是 frps.ini,以下以 toml 为例):
[common]
bind_port = 7000
# 可选:配置一个简单的 token 用于身份验证
auth.method = "token"
auth.token = "your_strong_token"
# 开启 Dashboard 查看连接状态(非必须)
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = your_password
然后启动服务端:
./frps -c frps.toml
建议结合 systemd 做成开机自启,零基础可直接用 nohup:
nohup ./frps -c frps.toml &
验证是否启动成功:访问 http://你的公网IP:7500 输入 Dashboard 账号密码,看到“online”即正常。
第二步:配置 FRP 客户端(本地 AI 所在机器)
在本地的 AI 服务器上同样解压 frp,编辑客户端配置文件 frpc.toml:
[common]
server_addr = 你的云服务器公网IP
server_port = 7000
auth.method = "token"
auth.token = "your_strong_token"
# 定义一个隧道,把本地 Ollama 端口暴露出去
[[proxies]]
name = "ollama-ai"
type = "tcp"
local_ip = "127.0.0.1"
local_port = 11434
remote_port = 11434
如果你还想暴露 AI 系统的 Web 界面(比如 AnythingLLM 的 3000 端口),再加一条类似配置,只需换 name 和端口号。
启动客户端:
./frpc -c frpc.toml
同样可以用 nohup 后台运行。
启动后观察日志,看到 “start proxy success” 表示隧道建立成功。
第三步:域名与防火墙放行
为了让公网用户能用域名直接访问本地 AI,需要做两件事:
- 在云服务器安全组(或 iptables)中放行 FRP 所需端口:即
7000(服务端监听)、11434(代理端口)、以及 Dashboard 端口7500。 - 在域名 DNS 记录中增加 A 记录指向云服务器 IP,如果需要通过 Web 访问,最好再配合 Nginx 反向代理把
ai.yourdomain.com指向127.0.0.1:11434,这样不必直接暴露端口给公网。
重要避坑:
- 云服务器防火墙(如宝塔面板、ufw、firewalld)也要放行对应端口。
- 本地客户端防火墙(Windows Defender、Linux ufw)不需要放行,因为隧道是客户端主动发起。
- 如果使用 Nginx 反代,记得设置合理的超时和缓存,避免 AI 长回复超时断开。
效果验证与常见问题
验证方法
在公网另一台电脑(或手机流量下)执行:
curl http://你的域名:11434/api/chat -d '{"model":"qwen2:7b","messages":[{"role":"user","content":"你好"}]}'
如果能正常返回 AI 回复内容,说明穿透成功。
如果 Ollama 还暴露了 Web UI(如 Open WebUI),直接浏览器访问 http://你的域名:3000 即可。
高频问题解答
Q:客户端日志报 connection refused?
A:检查本地 AI 服务是否真正运行在对应端口(比如 Ollama 默认只监听 127.0.0.1,可以改成 0.0.0.0 或确认防火墙没拦截本地访问)。
Q:服务端 Dashboard 显示 online 但公网连接不上?
A:首先确认云服务器安全组和系统防火墙都放行了 remote_port(如 11434);其次用 telnet 你的公网IP 11434 测试端口是否可达。
Q:域名解析正确但访问超时?
A:在云服务器上本地 curl 127.0.0.1:11434 测试是否正常;如果正常,检查 Nginx 反代配置中 proxy_pass 的地址是否正确。
Q:如何让 FRP 开机自启?
A:可以用 systemd 服务或者 supervisord,网上搜索“frp systemd 配置”有现成模板,这里不再赘述。
写在最后
通过 FRP 内网穿透,你完全可以零成本(利用已有云服务器)实现本地私有 AI 的公网访问。
以上配置经过多次验证,注意防火墙和端口冲突即可。
如果遇到其他特殊报错,建议先查看 FRP 服务端和客户端的日志(默认会输出到终端或 nohup.out),根据错误关键词搜一下通常能找到解法。