收起左侧

飞牛Ollama 怎么配置跨域访问

1
回复
32
查看
[ 复制链接 ]

57

主题

78

回帖

0

牛值

小有名气

悬赏1飞牛币未解决

飞牛安装了ollama 并部署了模型,在open webui中调用流畅工作正常,在飞牛openclaw中添加正常能获取到模型,也可以调用ollama模型,虽然反应超级慢。但是在飞牛系统商城中安装了lobechat,但是添加的时候提示连接失败。请问飞牛自带ollama 怎么配置跨域访问。

image.png

image.png

附件: 您需要 登录 才可以下载或查看,没有账号?立即注册
收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

16

主题

620

回帖

380

牛值

社区共建团

fnOS1.0上线纪念勋章社区上线纪念勋章社区共建团荣誉勋章飞牛百度网盘玩家

结论:

  • 先不要直接判断为“跨域未配置”。
  • 结合你的现象,优先级更高的原因是:
    1. LobeChat 容器访问不到宿主机上的 Ollama
    2. Ollama 只监听了 127.0.0.1:11434
    3. LobeChat 开启了“客户端请求模式”,浏览器直连时被 CORS 拦截
  • 正确处理顺序:
    1. 先确认 Ollama 监听地址
    2. 再确认 LobeChat 的请求模式
    3. 最后再配置 OLLAMA_ORIGINS

原因:

  • 你截图里填过:
    • http://127.0.0.1:11434
    • http://192.168.3.201:11434
  • 这两种都失败,说明不能只按“前端跨域”判断。
  • 在容器场景中:
    • 127.0.0.1 指向 LobeChat 容器自己
    • 不是 NAS 宿主机
  • 如果 LobeChat 默认通过服务端访问 Ollama,则报错常见原因是:
    • 容器到宿主机网络不通
    • Ollama 未监听外部地址
  • 如果启用了“客户端请求模式”,则浏览器会直接访问 Ollama:
    • 这时才必须重点处理跨域

处理步骤:

1. 在飞牛主机上确认 Ollama 是否正常

执行:

curl http://127.0.0.1:11434/api/tags

预期结果:

  • 返回模型列表 JSON
  • 若失败,先排查 Ollama 服务本身

再执行:

ss -lntp | grep 11434

判定标准:

  • 若看到:
127.0.0.1:11434

说明:

  • Ollama 仅本机可访问
  • 容器 / 局域网设备无法访问
  • 若看到:
0.0.0.0:11434

说明:

  • 已监听所有地址
  • 可继续排查跨域或容器网络

2. 修改 Ollama 监听地址

目标配置:

OLLAMA_HOST=0.0.0.0:11434

如果是 systemd 方式安装

查看服务:

systemctl cat ollama

编辑覆盖配置:

sudo systemctl edit ollama

写入:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=*"

重载并重启:

sudo systemctl daemon-reload
sudo systemctl restart ollama
sudo systemctl status ollama --no-pager

再次确认监听:

ss -lntp | grep 11434

3. 如果飞牛商城里的 Ollama 是容器部署

先查看容器:

docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Ports}}"

查看环境变量:

docker inspect <ollama容器名> | grep -A 30 '"Env"'

目标环境变量:

OLLAMA_HOST=0.0.0.0:11434
OLLAMA_ORIGINS=*

如果支持 Compose / 应用编辑,写法如下:

environment:
  - OLLAMA_HOST=0.0.0.0:11434
  - OLLAMA_ORIGINS=*

说明:

  • OLLAMA_ORIGINS=* 先用于验证
  • 验证通过后再收敛为明确来源

4. 确认 LobeChat 当前使用的是哪种访问模式

你截图中有选项:

  • 使用客户端请求模式

判定规则:

模式 A:未开启“客户端请求模式”

请求路径:

  • LobeChat 后端 / 容器 -> Ollama

关键要求:

  • LobeChat 容器必须能访问 NAS 上的 11434
  • 此时 跨域不是首要问题

推荐填写:

http://宿主机IP:11434

不推荐填写:

http://127.0.0.1:11434

原因:

  • 在容器内,127.0.0.1 不是宿主机

模式 B:开启“客户端请求模式”

请求路径:

  • 浏览器 -> Ollama

关键要求:

  • 浏览器能访问 http://NAS_IP:11434
  • Ollama 必须允许该页面来源跨域访问

此时需要配置:

OLLAMA_ORIGINS=http://NAS_IP:LobeChat端口,https://你的域名

5. 跨域配置建议

临时排障配置

[Service]
Environment="OLLAMA_ORIGINS=*"

用途:

  • 验证是否确实为 CORS 问题

正式配置

假设:

  • 飞牛地址:http://192.168.3.201
  • LobeChat 页面地址:http://192.168.3.201:3210

则建议:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=http://192.168.3.201:3210,http://192.168.3.201,http://localhost,http://127.0.0.1"

如果你是通过 HTTPS 域名访问 LobeChat,则加上:

Environment="OLLAMA_ORIGINS=https://chat.example.com"

注意:

  • OLLAMA_ORIGINS 填的是 页面来源
  • 不是 Ollama 自己的地址
  • 不要只填 http://192.168.3.201:11434

6. LobeChat 中地址该怎么填

优先这样测试:

http://192.168.3.201:11434

不要用:

http://127.0.0.1:11434

原因:

  • 对容器应用无效
  • 仅对本机进程有效

命令 / 配置示例:

systemd 方式完整示例

sudo systemctl edit ollama

写入:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=*"

执行:

sudo systemctl daemon-reload
sudo systemctl restart ollama
curl http://127.0.0.1:11434/api/tags
ss -lntp | grep 11434

Docker 方式完整示例

environment:
  - OLLAMA_HOST=0.0.0.0:11434
  - OLLAMA_ORIGINS=*
ports:
  - "11434:11434"

验证方法:

验证 1:本机 API

curl http://127.0.0.1:11434/api/tags

结果:

  • 成功:Ollama 正常
  • 失败:先修复 Ollama 服务

验证 2:局域网地址

在 NAS 主机执行:

curl http://192.168.3.201:11434/api/tags

结果:

  • 成功:已监听外部地址
  • 失败:OLLAMA_HOST 未生效或端口未开放

验证 3:浏览器访问

浏览器打开:

http://192.168.3.201:11434/api/tags

结果:

  • 能看到 JSON:浏览器可直连
  • 打不开:网络 / 监听 / 防火墙问题

验证 4:浏览器控制台

在 LobeChat 页面按 F12,查看:

  • Network
  • Console

重点看是否出现:

  • CORS policy
  • Failed to fetch
  • ERR_CONNECTION_REFUSED
  • ERR_CONNECTION_TIMED_OUT

判定:

  • CORS policy:跨域问题
  • REFUSED / TIMEOUT:连通性问题

注意事项:

  • 127.0.0.1 不适用于容器内访问宿主机。
  • OLLAMA_ORIGINS=* 仅建议临时排障使用。
  • 如果飞牛应用商城对容器环境变量做了封装,可能需要:
    • 在应用高级设置中改环境变量
    • 或导出 Compose 后手动修改
  • 若你通过反向代理访问 LobeChat,必须把实际前端来源加入白名单:
    • http://IP:端口
    • https://域名

建议的最短执行方案:

  1. 在飞牛主机执行:
curl http://127.0.0.1:11434/api/tags
ss -lntp | grep 11434
  1. 若监听不是 0.0.0.0:11434,给 Ollama 增加:
OLLAMA_HOST=0.0.0.0:11434
  1. 同时临时增加:
OLLAMA_ORIGINS=*
  1. LobeChat 中只填:
http://192.168.3.201:11434
  1. 若仍失败,基本可判定不是跨域,而是 LobeChat 容器到宿主机网络不通

需补充的信息:

  1. 飞牛系统版本
  2. Ollama 是系统自带应用,还是你自己用 Docker / 脚本安装
  3. LobeChat 的访问地址
    • http://IP:端口
    • https://域名
  4. 是否开启“使用客户端请求模式”
  5. 以下命令输出:
curl http://127.0.0.1:11434/api/tags
ss -lntp | grep 11434
docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Ports}}"
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则