Ollama 服务监听所有网络接口

在 Ubuntu 系统中,若希望 Ollama 服务监听所有网络接口(包括局域网和公网),需修改其 systemd 服务配置文件并调整防火墙规则。以下是详细步骤:


步骤 1:修改 Ollama 服务配置

  1. 编辑服务文件
    打开 Ollama 的 systemd 服务配置文件:

    sudo nano /etc/systemd/system/ollama.service
  2. 添加环境变量
    [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
  3. 保存并退出
    Ctrl + O 保存,Ctrl + X 退出编辑器。


步骤 2:重新加载并重启服务

  1. 重新加载 systemd 配置

    sudo systemctl daemon-reload
  2. 重启 Ollama 服务

    sudo systemctl restart ollama

步骤 3:检查监听状态

  1. 验证端口监听
    运行以下命令确认 Ollama 是否监听所有接口:

    ss -tuln | grep 11434

    预期输出

    tcp  LISTEN 0  10  0.0.0.0:11434  *:*  
    • 如果输出为 127.0.0.1:11434,说明配置未生效,请重复步骤 1。

步骤 4:配置防火墙规则

  1. 开放 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
  2. 云服务器安全组
    如果是云服务器(如 AWS、阿里云、华为云等),需在控制台放行 11434 端口 的入站流量:

    • 允许源 IP:0.0.0.0/0(公网开放)或指定 IP(更安全)。

步骤 5:验证远程访问

  1. 从本地机器测试
    使用 curl 或浏览器访问 Ollama 服务:

    curl http://:11434/api/tags
    • 如果返回模型列表(如 {"models": [...]}),说明配置成功。
  2. WSL 用户特殊说明

    • 如果在 Windows 的 WSL 中运行 Ollama,可通过 http://localhost:11434 直接访问(WSL 默认端口转发)。
    • 如果需从 Windows 本机访问,需确保 WSL 的 IP 地址已开放防火墙:
      # 获取 WSL 的 IP 地址
      hostname -I
      # 输出示例:172.28.112.1

常见问题排查

  1. 服务未运行
    检查服务状态:

    sudo systemctl status ollama

    如果服务失败,请查看日志:

    journalctl -u ollama --since "1 hour ago"
  2. 端口未监听
    确保 OLLAMA_HOST=0.0.0.0:11434 已正确写入服务文件,并重启服务。

  3. 防火墙阻止访问
    检查防火墙规则是否允许 11434 端口:

    sudo ufw status    # Ubuntu
    sudo firewall-cmd --list-all  # CentOS
  4. 安全组限制(云服务器)
    登录云服务商控制台,确认安全组规则已放行 11434 端口。


注意事项

  • 安全性:开放公网访问存在安全风险(如未授权访问)。建议:
    • 使用防火墙限制源 IP(仅允许特定设备访问)。
    • 结合身份验证(如通过反向代理添加认证层)。
  • 持久化配置:上述修改是永久生效的,无需重复操作。

通过以上步骤,Ollama 服务将监听所有网络接口,允许远程访问。如果仍有问题,请提供 systemctl status ollamass -tuln 的输出以便进一步诊断!