通过云服务器 + frp 使用远程 Windows 局域网的 Ollama 服务
Ollama 是一个优秀的本地大模型运行工具,通常部署在内网 Windows 机器上。但有时我们需要在公网访问这些模型(例如出差时使用、分享给团队成员),而内网没有公网 IP 或无法直接端口映射。本文介绍如何使用一台有公网 IP 的云服务器作为跳板,通过 frp(Fast Reverse Proxy)将内网 Windows 上的 Ollama 服务安全地暴露到公网,实现远程访问。
通过云服务器 + frp 使用远程 Windows 局域网的 Ollama 服务
概述
Ollama 是一个优秀的本地大模型运行工具,通常部署在内网 Windows 机器上。但有时我们需要在公网访问这些模型(例如出差时使用、分享给团队成员),而内网没有公网 IP 或无法直接端口映射。本文介绍如何使用一台有公网 IP 的云服务器作为跳板,通过 frp(Fast Reverse Proxy)将内网 Windows 上的 Ollama 服务安全地暴露到公网,实现远程访问。
整体架构
下图展示了公网用户通过云服务器访问内网 Windows Ollama 的流程:
注:以下公网环境的端口建议替换为非规则端口。
核心思想:内网 Windows 主动连接云服务器上的 frp 服务端(frps),建立一条反向隧道;云服务器上的特定端口(如 11434)收到的请求会自动转发给内网 Windows 的 Ollama 端口。
准备工作
- 一台具有公网 IP 的云服务器(Linux 系统,如 Ubuntu/CentOS),用于运行 frp 服务端。
- 一台内网 Windows 机器(已安装 Ollama 并下载了需要的模型)。
- frp 软件包:从 frp GitHub Releases 下载对应操作系统的版本(Linux 版用于服务器,Windows 版用于客户端)。
- 确保云服务器的防火墙/安全组开放相应端口(见下文)。
第一步:配置 Windows 内网的 Ollama 监听外部请求
Ollama 默认只监听 127.0.0.1,需要修改环境变量使其监听所有网络接口,并允许跨域访问。
1. 设置环境变量
在 Windows 上,通过系统属性 → 环境变量(或使用命令提示符)添加以下两个系统变量:
| 变量名 | 变量值 | 说明 |
|---|---|---|
OLLAMA_HOST |
0.0.0.0:11434 |
让 Ollama 监听所有网络接口的 11434 端口 |
OLLAMA_ORIGINS |
* |
允许任意来源的跨域请求(如果通过 WebUI 访问则必须) |
通过命令行快速设置(管理员权限):
setx OLLAMA_HOST "0.0.0.0:11434"
setx OLLAMA_ORIGINS "*"
其他:
修改 OLLAMA 模型存储位置:
1、终端启动方式:设置环境变量 OLLAMA_MODELS
2、ollama 客户端方式: setting
2. 重启 Ollama 服务
修改环境变量后,需要重启 Ollama 才能生效。可以通过任务管理器结束 Ollama 进程,然后重新启动(或在终端中再次运行 ollama serve)。
3. 验证本地访问
在 Windows 本机打开浏览器访问 http://127.0.0.1:11434,如果看到 Ollama is running 的提示,说明 Ollama 已正常启动。
4. 验证监听接口
在 Windows 上执行:
netstat -ano | findstr :11434
输出:
TCP 0.0.0.0:11434 0.0.0.0:0 LISTENING 17912
TCP [::]:11434 [::]:0 LISTENING 17912
说明 Ollama 已正确监听 0.0.0.0:11434。
第二步:在云服务器(Linux)上配置 frp 服务端
1. 下载并解压 frp
登录云服务器,执行以下命令(以 v0.61.2 为例,请替换为最新版本号):
wget https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz
tar -zxvf frp_0.61.2_linux_amd64.tar.gz
cd frp_0.61.2_linux_amd64
2. 编辑服务端配置文件 frps.toml
创建(或编辑)frps.toml,内容如下:
# frp 客户端连接的端口;修改为自定义端口
bindPort = 7000
auth.method = "token"
# 请修改为一个复杂的密码
auth.token = "your-strong-token"
# 开启日志
log.to = "./log/frps.log"
log.level = "info"
# 可选:开启仪表盘,用于监控 frp 状态
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin" # 仪表盘登录用户名
webServer.password = "admin" # 仪表盘登录密码
注意:
auth.token是客户端连接服务端的凭证,务必设置为强密码。
3. 启动服务端
先在前台运行测试:
./frps -c frps.toml
如果日志显示 start frps success,说明服务端启动正常。按 Ctrl+C 停止后,使用 nohup 后台运行:
nohup ./frps -c frps.toml &
也可以配置为 systemd 服务实现开机自启,此处从略。
4. 开放云服务器防火墙/安全组
需要在云服务商的控制台(如阿里云、腾讯云)的安全组规则中,入方向开放以下端口:
7000:供 frp 客户端连接。11434(或你在remotePort中设置的其他端口):供公网用户访问 Ollama。7500(可选):如果开启了仪表盘,用于访问 Web 管理界面。
同时,如果云服务器内部防火墙(如 firewalld/iptables)开启,也需要放行这些端口。
第三步:在 Windows 内网配置 frp 客户端
1. 下载 Windows 版 frp
从相同 GitHub 地址下载 Windows 版本(如 frp_0.61.2_windows_amd64.zip),解压到指定的 frp 目录。
2. 编辑客户端配置文件 frpc.toml
在 C:\frp 下创建 frpc.toml,填入以下内容:
serverAddr = "你的云服务器公网IP" # 替换为实际 IP
serverPort = 7000
auth.method = "token"
auth.token = "your-strong-token" # 必须与服务器端的 token 一致
[[proxies]]
# frp 唯一名称 name 不能冲突,否则服务会被覆盖
name = "ollama"
type = "tcp"
localIP = "127.0.0.1"
# Windows 本地 Ollama 端口
localPort = 11434
# 云服务器上对外开放的端口
remotePort = 11434
说明:
remotePort可以与localPort相同,也可以不同。如果不同,公网访问时使用remotePort。
3. 启动客户端
打开命令提示符(管理员),切换到 frp 目录,执行:
frpc.exe -c frpc.toml
若看到类似 login to server success、start proxy success 的日志,说明客户端已成功连接到云服务器,并且代理已建立。
4. 设置开机自启(可选)
可将上述命令添加到 Windows 任务计划程序或创建快捷方式到启动文件夹,确保每次开机自动连接。
第四步:验证与测试
1. 验证隧道连通性
在任意能上网的设备上(不要在内网),打开浏览器访问:
http://你的云服务器公网IP:11434
如果看到 Ollama is running 的文本响应,说明穿透成功,Ollama API 已可通过公网访问。
2. 测试 API 调用
使用 curl 命令测试模型调用(假设已有模型 llama2):
curl http://你的云服务器公网IP:11434/api/generate -d '{
"model": "llama2",
"prompt": "Hello, who are you?"
}'
应该能正常收到模型生成的响应。
安全加固(非常重要)
将 Ollama 直接暴露在公网存在安全风险(任何人可调用你的模型,消耗资源甚至滥用)。建议至少采取以下措施之一:
1. 使用带身份验证的前端(如 Open WebUI)
- 在内网部署 Open WebUI(或其他支持登录的 WebUI),并通过 frp 仅暴露 WebUI 的端口。
- Open WebUI 本身带有用户认证,可有效防止未授权访问。
2. 使用 Nginx 反向代理 + 基础认证
在云服务器上安装 Nginx,配置反向代理到 http://127.0.0.1:11434,并添加 Basic Authentication:
server {
listen 11434;
server_name _;
location / {
proxy_pass http://127.0.0.1:11434;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 基础认证
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
使用 htpasswd 工具创建密码文件。
3. frp 的 Stcp 模式(更安全但配置稍复杂)
frp 支持 stcp(秘密 TCP)模式,需要客户端和服务端都配置密钥,仅允许持有密钥的客户端访问,适合点对点场景。
4. IP 白名单
如果只有固定 IP 需要访问,可以在云服务器防火墙或 frp 配置中限制来源 IP。
常见问题
Q1:客户端连接失败,提示 login to server failed
- 检查云服务器防火墙/安全组是否开放了
7000端口。 - 检查
serverAddr和token是否正确。 - 在云服务器上使用
netstat -tulnp | grep 7000确认 frps 是否在监听。
Q2:公网访问 11434 超时或连接拒绝
- 确认云服务器安全组开放了
remotePort(如 11434)。 - 检查 frpc 日志是否有
proxy started的提示。 - 在 Windows 本地尝试
telnet 127.0.0.1 11434确认 Ollama 是否正常监听。
Q3:访问时返回 403 或跨域错误
- 检查 Ollama 环境变量
OLLAMA_ORIGINS是否设置为*,并已重启。 - 如果是通过 WebUI 访问,可能需要配置 WebUI 的跨域设置。
总结
通过 frp 将内网 Ollama 服务穿透到公网,只需要简单的几步配置即可实现远程访问。核心要点是:
- 修改 Ollama 环境变量,允许外部访问。
- 在云服务器上部署 frps,开放必要的端口。
- 在 Windows 上部署 frpc,将本地端口映射到云服务器。
- 务必加强安全防护,避免服务被滥用。
更多推荐

所有评论(0)