在如果你的单机 Linux 服务器 未接入局域网,并且无法访问 11434 端口(curl 或浏览器返回 “Connection refused”),通常是由于 Ollama 服务未运行未正确监听端口。以下是排查和解决方法:


1. 检查 Ollama 服务是否正在运行

systemctl status ollama  # 如果使用 systemd
# 或者
ps aux | grep ollama     # 检查进程是否存在
  • 如果未运行,启动 Ollama:
sudo systemctl start ollama  # systemd 方式
# 或者直接运行(前台模式,观察日志)
ollama serve

2. 确认 Ollama 是否监听 11434 端口

ss -tulnp | grep 11434
# 或
netstat -tulnp | grep 11434  # 旧版 Linux
  • 正常情况 应看到类似输出:
tcp   LISTEN 0  4096  0.0.0.0:11434  0.0.0.0:*  users:(("ollama",pid=xxx))
  • 如果无输出,说明 Ollama 未监听端口,可能是:
  • 配置错误(如 OLLAMA_HOST 设置了其他端口)。
  • 服务启动失败(检查日志)。

3. 检查 Ollama 的监听地址

  • 默认情况下,Ollama 会监听 127.0.0.1:11434(仅本地访问)。
  • 如果需要本地访问,确保 OLLAMA_HOST 包含 0.0.0.0
export OLLAMA_HOST="0.0.0.0:11434"  # 允许所有本地连接
  • 然后重启 Ollama:
sudo systemctl restart ollama

4. 检查防火墙(即使单机也可能有影响)

sudo iptables -L -n | grep 11434  # 查看是否被拦截
  • 如果防火墙阻止了端口,放行它:
sudo iptables -A INPUT -p tcp --dport 11434 -j ACCEPT

5. 验证本地访问

curl http://127.0.0.1:11434/api/tags
  • 如果返回 JSON 数据(如模型列表),说明服务正常。
  • 如果仍报错,检查 Ollama 日志:
journalctl -u ollama -f  # systemd 日志
# 或直接查看控制台输出(前台运行时)

6. 其他可能原因

  • Ollama 配置文件问题:检查 ~/.ollama/config.json 是否覆盖了默认端口。
  • 端口冲突:其他程序占用了 11434 端口:
sudo lsof -i :11434

总结

问题原因

解决方法

Ollama 未运行

启动服务:sudo systemctl start ollama

监听地址错误

设置 export OLLAMA_HOST="0.0.0.0:11434" 并重启服务

防火墙拦截

放行端口:sudo iptables -A INPUT -p tcp --dport 11434 -j ACCEPT

端口冲突

终止占用进程或修改 Ollama 端口

如果问题仍未解决,请提供以下信息以便进一步排查:

  1. ollama serve 的直接输出日志。
  2. ss -tulnp | grep 11434 的结果。
  3. 是否修改过 ~/.ollama/config.json? Linux 中设置 OLLAMA_HOST 环境变量时,通常需要指定端口,除非你明确使用默认端口(11434)。

1. 不指定端口(使用默认端口 11434)

如果你的 Ollama 服务运行在默认端口 11434,可以这样设置:

export OLLAMA_HOST="0.0.0.0"  # 默认会使用 11434 端口

2. 指定自定义端口

如果你的 Ollama 服务运行在其他端口(例如 12345),则必须显式指定如果你的单机 Linux 服务器 未接入局域网,并且无法访问 11434 端口(curl 或浏览器返回 “Connection refused”),通常是由于 Ollama 服务未运行未正确监听端口。以下是排查和解决方法:


1. 检查 Ollama 服务是否正在运行

systemctl status ollama  # 如果使用 systemd
# 或者
ps aux | grep ollama     # 检查进程是否存在
  • 如果未运行,启动 Ollama:
sudo systemctl start ollama  # systemd 方式
# 或者直接运行(前台模式,观察日志)
ollama serve

2. 确认 Ollama 是否监听 11434 端口

ss -tulnp | grep 11434
# 或
netstat -tulnp | grep 11434  # 旧版 Linux
  • 正常情况 应看到类似输出:
tcp   LISTEN 0  4096  0.0.0.0:11434  0.0.0.0:*  users:(("ollama",pid=xxx))
  • 如果无输出,说明 Ollama 未监听端口,可能是:
  • 配置错误(如 OLLAMA_HOST 设置了其他端口)。
  • 服务启动失败(检查日志)。

3. 检查 Ollama 的监听地址

  • 默认情况下,Ollama 会监听 127.0.0.1:11434(仅本地访问)。
  • 如果需要本地访问,确保 OLLAMA_HOST 包含 0.0.0.0
export OLLAMA_HOST="0.0.0.0:11434"  # 允许所有本地连接
  • 然后重启 Ollama:
sudo systemctl restart ollama

4. 检查防火墙(即使单机也可能有影响)

sudo iptables -L -n | grep 11434  # 查看是否被拦截
  • 如果防火墙阻止了端口,放行它:
sudo iptables -A INPUT -p tcp --dport 11434 -j ACCEPT

5. 验证本地访问

curl http://127.0.0.1:11434/api/tags
  • 如果返回 JSON 数据(如模型列表),说明服务正常。
  • 如果仍报错,检查 Ollama 日志:
journalctl -u ollama -f  # systemd 日志
# 或直接查看控制台输出(前台运行时)

6. 其他可能原因

  • Ollama 配置文件问题:检查 ~/.ollama/config.json 是否覆盖了默认端口。
  • 端口冲突:其他程序占用了 11434 端口:
sudo lsof -i :11434

总结

问题原因

解决方法

Ollama 未运行

启动服务:sudo systemctl start ollama

监听地址错误

设置 export OLLAMA_HOST="0.0.0.0:11434" 并重启服务

防火墙拦截

放行端口:sudo iptables -A INPUT -p tcp --dport 11434 -j ACCEPT

端口冲突

终止占用进程或修改 Ollama 端口

如果问题仍未解决,请提供以下信息以便进一步排查:

  1. ollama serve 的直接输出日志。
  2. ss -tulnp | grep 11434 的结果。
  3. 是否修改过 ~/.ollama/config.json?端口:
export OLLAMA_HOST="0.0.0.0:12345"

3. 验证设置

  • 启动 Ollama 服务后,可以通过以下命令检查是否生效:
echo $OLLAMA_HOST
  • 测试连接(假设端口是 11434):
curl http://127.0.0.1:11434/api/tags

4. 持久化设置

若需永久生效,将 export 命令添加到 ~/.bashrc~/.zshrc 文件中:

echo 'export OLLAMA_HOST="0.0.0.0:11434"' >> ~/.bashrc
source ~/.bashrc

总结

  • 默认情况:可以不指定端口(隐式使用 11434)。
  • 自定义端口:必须显式指定(如 :12345)。
  • 确保防火墙/安全组允许该端口的访问(如果需要远程连接)。