本地把 Ollama 和 Web UI 跑起来,自己在浏览器里用得好好的,一到同事的电脑、手机或者外网就打不开,这个问题十有八九出在监听地址、端口映射和容器网络三处。这篇按「先局域网、再公网」的顺序,把配置动作和动手前该确认的安全项列成清单,让你按步骤排查,而不是靠猜。
本地把 Ollama 和 Web UI 跑起来,自己浏览器里用得挺顺,一到同事电脑、手机或者外网就打不开,问题十有八九出在监听地址、端口映射、容器网络这三处。排查时别一上来就改一堆配置,先分清是哪一层没通,再动手。
这篇按「先局域网、再公网」的顺手顺序,把每一步的配置动作和动手前该确认的安全项列成清单,让你按顺序验证,而不是靠猜。名词拿不准的,先去 /ai-dict/category/infra 把监听、端口、回环这几个词对一遍。
局域网里让同事能打开:先分清哪一层没通
最常见的误判是把「界面能开、模型列表是空的」当成 Web UI 的问题。这其实是 Web UI 连不上 Ollama,Ollama 默认只监听本机回环地址,外面的请求根本进不来。界面和模型服务是两个独立进程,谁没通得分别看。
- 让 Ollama 接受非本机请求,要设 OLLAMA_HOST 一类的监听地址环境变量;让 Web UI 监听外部,要设它自己的 host 与端口。两者独立,改了一个不通不代表另一个有问题
- 排查顺序固定:先在本机 curl 服务端口确认服务活着,再在同一局域网另一台机器测这个端口,最后才去开 Web UI 页面,跳过中间一步容易误判
- 改完环境变量必须重启服务才生效;配了开机自启的,要确认重启的是新配置而不是旧进程还在跑
- 如果服务只绑在回环上,局域网里任何设备都连不上,这一步用另一台机器测端口最直接
| 现象 | 最可能的位置 | 先查什么 |
|---|---|---|
| 页面能开,模型列表空 | Web UI 连不到 Ollama | 确认 Ollama 监听地址是否放开 |
| 页面本身打不开 | Web UI 监听或端口没放行 | 本机 curl 页面端口,再看防火墙 |
| 本机能用,别的设备不行 | 服务绑在回环地址 | 另一台设备测端口,逐步排除 |
用 Docker 跑的时候,坑基本都在网络这一层
Docker 下最容易踩的坑是容器里的 localhost。容器内写 localhost 指的是容器自己,不是你的宿主机,所以连不到宿主机上的 Ollama。要么写宿主机的局域网地址,要么用宿主机在该容器网络里的别名。
- 容器访问宿主机的 Ollama,别用 localhost 或 127.0.0.1,那指向容器自身
- 两个容器放同一个自定义网络时,直接写服务名当主机名通常就能通,比记 IP 省事,IP 在容器重建后会变
- 界面能开但报连接被拒或域名无效,先确认容器能不能解析并访问到目标地址,再看服务端口是不是只绑在回环上
- 加反向代理时,代理到后端的地址同样按上面的规则写,别在代理配置里再写一次 localhost
要放到公网之前,先想清楚代价
公网访问只有两种正经做法:走隧道或反向代理并配上 HTTPS 和身份认证,或者放进企业内网加 VPN。直接把端口映射到公网,是最省事也最容易被扫的做法,不建议图省事。
- 确认鉴权放出去之前先看有没有登录或密钥校验。Ollama 本身通常没有账号体系,谁连上谁就能调模型,鉴权要加在 Web UI 或反向代理这一层。
- 加限速或额度至少有请求频率或调用量的限制,避免被当成免费算力池。到 /price-watch 核对当时的算力花销口径,心里有数。
- 过一遍内容边界确认模型和对话记录里不会出现不能外流的内容,这一条常被忽略。
- 能关就关只在需要时开放,用完关掉映射。长期开着的,定期去 /safety 对一遍当下的安全口径,别拿几个月前的印象当依据。
改完之后按这个顺序验一遍
配置改完别急着宣布搞定,按范围从近到远验一遍,出问题时才知道是哪一层退化。先把范围缩小,再谈性能。
- 本机自测服务端口,确认服务本身活着
- 局域网另一台设备打开 Web UI 页面,确认监听和端口放行都对
- 用手机或另一网段再测,确认不是单一网络环境的问题
- 接口层面的连通性和延迟可以先在 /tools/speed-test 量一个基线,之后出问题才有对照
- 改过的环境变量和端口记在一处,下次换机器或重装能直接照抄
最后补一句判断标准:如果只是自己一个人在本地用,不需要动任何监听地址,保持默认更安全;只有确实有他人或远程访问需求时,才按上面的顺序放开,并且放开多少就守住多少。
下一步想先把基线测出来再谈优化,可以去测一下当前的连通与延迟;关心对外暴露后的花销和安全口径,站内都有对应页面可核对当时的数字。→常见问题
为什么我在本机浏览器能打开,同事的电脑打不开?
大概率是服务只监听了本机回环地址,只有这台机器自己能连。要把监听地址改成对所有网卡生效,并放行对应端口,然后重启服务。改完先在局域网另一台设备上测端口通不通,再去看页面能不能开,这样能分清是网络没通还是界面配置的问题。
用 Docker 部署时,填 127.0.0.1 为什么连不上宿主机的 Ollama?
在容器里,回环地址指向的是容器自己,不是宿主机。要么把地址换成宿主机的局域网 IP,要么把两个容器放进同一个自定义网络、直接用服务名互访。IP 会随容器重建变化,服务名更稳。改完记得确认宿主机服务不是只绑在回环上。
直接把端口映射到公网可以吗?
技术上能通,但风险很高:Ollama 一般没有账号体系,谁连上谁就能调模型、看对话记录。要外网用,建议走带 HTTPS 和登录鉴权的反向代理,或者干脆放进内网走 VPN。真要开,至少先确认鉴权、限速和内容边界三项都有人负责。