在 Ubuntu 系统中,若希望 Ollama 服务监听所有网络接口(包括局域网和公网),需修改其 systemd 服务配置文件并调整防火墙规则。以下是详细步骤:
步骤 1:修改 Ollama 服务配置
-
编辑服务文件
打开 Ollama 的 systemd 服务配置文件:sudo nano /etc/systemd/system/ollama.service
-
添加环境变量
在[Service]
段落中添加以下两行,确保服务监听所有接口:Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="OLLAMA_ORIGINS=http://*,https://*"
0.0.0.0
表示监听所有网络接口。11434
是 Ollama 的默认端口。OLLAMA_ORIGINS
用于允许跨域请求(可选)。
示例完整配置:
[Unit] Description=Ollama Service After=network.target [Service] ExecStart=/usr/bin/ollama serve Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="OLLAMA_ORIGINS=http://*,https://*" Restart=always RestartSec=5s Type=simple [Install] WantedBy=multi-user.target
-
保存并退出
按Ctrl + O
保存,Ctrl + X
退出编辑器。
步骤 2:重新加载并重启服务
-
重新加载 systemd 配置
sudo systemctl daemon-reload
-
重启 Ollama 服务
sudo systemctl restart ollama
步骤 3:检查监听状态
- 验证端口监听
运行以下命令确认 Ollama 是否监听所有接口:ss -tuln | grep 11434
预期输出:
tcp LISTEN 0 10 0.0.0.0:11434 *:*
- 如果输出为
127.0.0.1:11434
,说明配置未生效,请重复步骤 1。
- 如果输出为
步骤 4:配置防火墙规则
-
开放 11434 端口
根据系统类型选择以下命令:-
Ubuntu/Debian:
sudo ufw allow 11434/tcp sudo ufw reload
-
CentOS/RHEL:
sudo firewall-cmd --permanent --add-port=11434/tcp sudo firewall-cmd --reload
-
-
云服务器安全组
如果是云服务器(如 AWS、阿里云、华为云等),需在控制台放行 11434 端口 的入站流量:- 允许源 IP:
0.0.0.0/0
(公网开放)或指定 IP(更安全)。
- 允许源 IP:
步骤 5:验证远程访问
-
从本地机器测试
使用curl
或浏览器访问 Ollama 服务:curl http://
:11434/api/tags - 如果返回模型列表(如
{"models": [...]}
),说明配置成功。
- 如果返回模型列表(如
-
WSL 用户特殊说明
- 如果在 Windows 的 WSL 中运行 Ollama,可通过
http://localhost:11434
直接访问(WSL 默认端口转发)。 - 如果需从 Windows 本机访问,需确保 WSL 的 IP 地址已开放防火墙:
# 获取 WSL 的 IP 地址 hostname -I # 输出示例:172.28.112.1
- 如果在 Windows 的 WSL 中运行 Ollama,可通过
常见问题排查
-
服务未运行
检查服务状态:sudo systemctl status ollama
如果服务失败,请查看日志:
journalctl -u ollama --since "1 hour ago"
-
端口未监听
确保OLLAMA_HOST=0.0.0.0:11434
已正确写入服务文件,并重启服务。 -
防火墙阻止访问
检查防火墙规则是否允许11434
端口:sudo ufw status # Ubuntu sudo firewall-cmd --list-all # CentOS
-
安全组限制(云服务器)
登录云服务商控制台,确认安全组规则已放行11434
端口。
注意事项
- 安全性:开放公网访问存在安全风险(如未授权访问)。建议:
- 使用防火墙限制源 IP(仅允许特定设备访问)。
- 结合身份验证(如通过反向代理添加认证层)。
- 持久化配置:上述修改是永久生效的,无需重复操作。
通过以上步骤,Ollama 服务将监听所有网络接口,允许远程访问。如果仍有问题,请提供 systemctl status ollama
和 ss -tuln
的输出以便进一步诊断!