本地 Ollama 已经跑起来,命令行也能对话,但 Open WebUI 里模型下拉框就是空的——这种情况多半不是模型没下好,而是两边没接上话。下面按从外到内的顺序拆成四步:先确认 Open WebUI 是否真的连到了 Ollama,再核对地址与端口,然后处理模型名与标签的匹配,最后翻配置和日志。照着走一遍,基本能定位到是哪一层断的。
本地 Ollama 已经跑起来,命令行也能对话,但 Open WebUI 里模型下拉框就是空的——这种情况多半不是模型没下好,而是两边没接上话。Open WebUI 是通过 Ollama 的 HTTP 接口去拉模型清单的,任何一层断了,UI 里就只剩一个空列表。
下面按从外到内的顺序拆成四步:先确认 Open WebUI 是否真的连到了 Ollama,再核对地址与端口,然后处理模型名与标签的匹配,最后翻配置和日志。照着走一遍,基本能定位到是哪一层断的。整个过程不用反复重装,重点是把请求链路一段段验证过去。
先分清是「连不上」还是「连上了没模型」
这一步的目的只有一个:确定问题出在网络层还是模型层。打开 Open WebUI 的管理设置,找到 Ollama 那条连接,看状态是正常还是报错。报错说明请求根本没打过去,属于网络层;能连上、但模型列表是空的,才轮到模型层往下查。两种情况的修法完全不同,先别急着改配置。
- 看 Open WebUI 设置里 Ollama 连接的状态,报错就查网络,能连上但列表空就查模型
- 如果 Open WebUI 跑在 Docker 里、Ollama 跑在宿主机,容器里的 localhost 指向容器自己,必须换成宿主机地址或让两者走同一网络
- 在 Open WebUI 容器里用 curl 打一次 Ollama 的接口,能返回模型 JSON 就说明路通了,问题在 UI 侧
- 判断不适用:如果 Ollama 本身还没启动或端口没监听,这一节的所有检查都无从谈起,先回去把服务拉起来
# 在 Open WebUI 容器内执行,替换成你实际填的地址
curl http://ollama-host:11434/api/tags
# 能返回包含模型名的 JSON,说明网络这一层是通的核对地址、端口和模型清单
如果上一步确认 Open WebUI 能连上 Ollama,那就要把地址和端口逐字核对一遍。很多人改地址时只改了主机,没动端口,或者多写了一个路径后缀,请求就会被 Ollama 拒绝或打到别的服务上。核对的唯一标准是:UI 里填的地址、端口、协议,和 Ollama 实际监听的完全一致。
| 检查项 | 正确状态 | 常见错法 |
|---|---|---|
| 监听地址 | Ollama 显式放开到可被访问的地址 | 仍监听本机回环,外部请求进不来 |
| 端口号 | UI 填的与 Ollama 监听的一致 | 主机改了端口没改,或多加后缀 |
| 协议 | http 与 https 对得上 | 本地服务写了 https 连不上 |
| 模型清单 | Ollama 侧能列出目标模型 | 本机其实没拉模型,清单为空 |
Ollama 默认只监听本机回环地址,别的容器或机器访问不到,需要显式放开监听地址并重启服务。然后在 Ollama 侧列出已下载的模型清单,确认目标模型确实在本机,把模型名和标签记下来,下一步要用。如果清单本身是空的,先拉一个模型下来再谈 UI 里看不看得到。
模型名、标签与拉取状态对不上
能连上、清单里也有模型,但 Open WebUI 里就是不显示,多半是名字匹配的问题。UI 里显示的条目直接来自 Ollama 返回的模型名,大小写、冒号后面的标签、拼写差一个字符都可能让它匹配不上。最稳的做法是直接从 Ollama 的命令行输出里复制模型名,粘到需要填的地方,不要凭记忆手打。
- 大小写敏感,Ollama 返回的名字是什么样,引用时就得是什么样
- 冒号后的标签别省略,省略了会被当成另一个模型
- 确认拉取过程完整结束,中途断线留下的残缺条目有时不出现在列表里
- 同一个模型有不同量化或参数规模的标签,别把别处文档里的写法直接抄进来当模型名
- 判断不适用:如果只是 UI 下拉框没刷新,重启一次 Open WebUI 或重新拉取模型列表可能就好了,不必往下翻配置
用哪个名字去核对
最可靠的来源是 Ollama 侧列出的清单本身,而不是任何教程里的写法。把清单里的全名原样复制,作为一个稳定参照。如果你不确定某个名字是否有效,可以先在 Ollama 侧用这个名字跑一次问答,能正常对话说明这个名字是有效的,再去 UI 侧核对。
翻配置与日志找具体报错
前面几步都过了还是不行,就该翻配置和日志了。环境变量里跟 Ollama 地址、模型目录相关的项,改完之后必须重启对应容器或服务才生效,只改不重启等于没改。Open WebUI 的容器日志通常会写明请求打到了哪个地址、返回了什么状态码,这是最直接的线索,比反复点 UI 快得多。
- 看日志翻 Open WebUI 容器日志,找请求地址和返回状态码,先确定请求到底发出去了没
- 容器内 curl在 Open WebUI 容器里 curl 一次 Ollama 接口,验证容器内部能否到达
- 容器外 curl在宿主机或其他机器上再 curl 一次,区分是容器网络问题还是服务本身问题
- 回 UI 复测改完配置重启后回到 UI 看列表,用干净浏览器窗口排除代理或插件干扰
排查顺序建议固定成一条线:日志 → 容器内 curl → 容器外 curl → UI。从内往外或从外往内走一条线就行,别几处一起改,否则你无法判断到底哪一步起了作用。浏览器端如果开着代理或拦截插件,可能把本地请求也拦下来,用一个干净的浏览器窗口复测一次能省不少时间。
如果你已经确认模型清单和地址都对,但连接质量时好时坏,可以顺手在站内做一次延迟与可达性测试,把结果和日志对照着看,比单看某一侧更有说服力。
下一步想把地址、端口、常见错法对着看一遍,或者顺手测一下连到 Ollama 的延迟,可以到站内工具目录和测速页核对当时的数字,再回来按上面的顺序逐项排查。→常见问题
Ollama 命令行能用,为什么 Open WebUI 里就是没有模型?
这通常说明两边没连在同一个网络上。命令行走的是本机回环,而 Open WebUI 如果装在容器里,它看到的 localhost 是容器自己。把地址换成宿主机可达的地址、或者让两者处于同一网络,再重新拉一次模型列表试试。
模型已经拉下来了,Open WebUI 里显示的名字不一样?
UI 显示的条目名来自 Ollama 返回的模型标识,通常和你在命令行里看到的一致。如果对不上,先确认没有拼写或大小写差异,再确认拉取是否完整结束,残缺的条目有时不会被列出来。
改完配置还是不生效怎么办?
跟地址和目录相关的配置大多在进程启动时读取,改完必须重启对应的容器或服务。重启后仍不行,就看容器日志里那次请求实际打到了哪个地址、返回什么状态码,再决定动哪一层。