OpenClaw接入Ollama为什么连接失败?
OpenClaw 想连 Ollama 却连不上,这事儿说起来挺常见的。很多人第一反应是代码写错了,或者模型没拉下来,但九成九的情况,问题出在服务监听地址、端口配置和客户端请求地址这三者之间没对上号。举个典型场景:Ollama 明明跑得好好的,但一看监听地址,它只绑在 127.0.0.1:11434 上,而 OpenClaw 那边傻乎乎地往服务器 IP 的 11434 端口发请求,结果自然是“connection refused”——静默断连,连个像样的报错都不给。
确认Ollama是否真正在监听可访问的地址
别急着改配置,先花十秒钟看个真相。在 Linux 或 macOS 上跑一条命令:
sudo netstat -tlnp | grep 11434
Windows 用户换成:
netstat -ano | findstr :11434
盯着输出里的地址。如果看到 127.0.0.1:11434 或 localhost:11434,那说明 Ollama 把自己锁在门内,拒绝对外开放。只有出现 0.0.0.0:11434 或者具体网卡 IP(比如 192.168.1.100:11434),才算准备好了迎接 OpenClaw 的请求。这一步跳过,后面所有修修补补都是白忙。
强制Ollama监听全网接口(永久生效)
如果确认是本地监听的问题,下一步就是让 Ollama 听全网接口。最推荐的方式是通过 systemd 服务环境变量注入,简单粗暴且重启不丢失。
执行 sudo systemctl edit ollama,在打开的空白文件中写入:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
保存退出后,立即执行:
sudo systemctl daemon-reload && sudo systemctl restart ollama
注意:别图省事去改 ~/.bashrc 或设系统级环境变量,在 systemd 环境下那套行不通,重启后配置就丢了。必须走 systemctl edit 这条正路。
如果你手里没有 systemctl edit 的权限,那就直接动手改服务文件:编辑 /etc/systemd/system/ollama.service,在 [Service] 段末尾加一行 Environment=OLLAMA_HOST=0.0.0.0:11434,然后同样跑一遍重载和重启。
同步更新OpenClaw的模型基础地址
Ollama 那边改好了,OpenClaw 这边也得跟上。打开项目根目录下的 openclaw.json(也可能是 config.json,具体看文件名),找到 models.providers.ollama-glm.baseUrl 字段。把默认的 "http://localhost:11434" 改成 "http://YOUR_SERVER_IP:11434",这里的 YOUR_SERVER_IP 必须是 Ollama 所在机器的真实局域网 IP,比如 192.168.1.50。千万不能写 localhost 或 127.0.0.1——因为 OpenClaw 很可能跑在另一台机器或容器里,写本地地址等于自说自话。
改完保存,重启 OpenClaw 服务进程,连接应该就通了。