Ubuntu 下将 Ollama 服务配置为监听 0.0.0.0:11434 完整实践

摘要 :本文记录在 Ubuntu 上通过 systemd 将 Ollama 服务从默认监听地址调整为 0.0.0.0:11434 的完整过程,包含推荐配置方式、原始 service 文件修改方式、监听验证、日志排查、防火墙放行与安全注意事项。

关键词 :Ollama、Ubuntu、systemd、11434、OLLAMA_HOST、端口配置

适用环境:Ubuntu + systemd + Ollama 0.40.x(其他版本命令基本一致)


一、背景与目标

Ollama 默认通常只监听本机回环地址,适合本机调用。如果希望局域网内其他机器、容器或前端服务访问这台 Ubuntu 上的 Ollama API,就需要让 Ollama 监听:

复制代码
0.0.0.0:11434

本文目标:

  1. 停止并重新配置 Ollama 服务;

  2. 让 Ollama 监听所有网卡的 11434 端口;

  3. 通过 ss、journalctl、curl 验证配置生效;

  4. 处理 UFW 防火墙;

  5. 说明安全风险与排错方法。


二、整体原理

Ollama 通过环境变量 OLLAMA_HOST 控制监听地址。systemd 启动 ollama serve 时读取该环境变量,因此只需要在 systemd 服务配置中加入:

bash 复制代码
Environment="OLLAMA_HOST=0.0.0.0:11434"

整体流程如下图:

图 1:Ollama 端口配置整体流程


三、方式一:使用 systemctl edit 覆盖配置(推荐)

推荐使用 systemd 的 drop-in 覆盖机制,不直接修改官方原始 service 文件,后续升级 Ollama 时不容易丢失配置。

3.1 停止服务

bash 复制代码
sudo systemctl stop ollama

如果担心配置过程中被自动拉起,可暂时禁用:

bash 复制代码
sudo systemctl disable ollama

3.2 创建覆盖配置

复制代码
sudo systemctl edit ollama.service

在打开的编辑器中写入:

复制代码
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"

保存退出即可。systemd 会自动生成类似:

复制代码
/etc/systemd/system/ollama.service.d/override.conf

其配置合并关系如下图所示:

图 2:systemd drop-in 覆盖配置原理

3.3 重新加载并启动

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart ollama
sudo systemctl enable ollama

四、方式二:直接修改原始 service 文件

如果更习惯直接改原始文件,也可以编辑:

bash 复制代码
sudo cp /etc/systemd/system/ollama.service /etc/systemd/system/ollama.service.bak
sudo nano /etc/systemd/system/ollama.service

原始文件类似:

bash 复制代码
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin"

[Install]
WantedBy=default.target

在 [Service] 段中新增一行 ,保留原来的 PATH 不变:

bash 复制代码
Environment="OLLAMA_HOST=0.0.0.0:11434"

修改后的完整内容:

bash 复制代码
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin"
Environment="OLLAMA_HOST=0.0.0.0:11434"

[Install]
WantedBy=default.target

注意 :直接修改原始文件在 Ollama 升级时可能被覆盖,届时需要重新添加。更稳妥的方式仍是使用 systemctl edit。


五、重新加载并启动服务

无论使用哪种方式,修改后都需要:

复制代码
sudo systemctl daemon-reload
sudo systemctl restart ollama
sudo systemctl status ollama

看到:

复制代码
Active: active (running)

说明服务已启动。但服务运行不代表监听地址正确,继续下一步验证。


六、验证是否监听 0.0.0.0:11434

6.1 使用 ss 查看监听地址

复制代码
sudo ss -tlnp | grep 11434

期望输出类似:

复制代码
LISTEN 0 4096 *:11434 *:* users:(("ollama",pid=135426,fd=4))

其中 *:11434 表示监听所有网络接口,即 IPv4 的 0.0.0.0 与 IPv6 的 [::],说明配置成功。

6.2 查看完整启动日志

systemctl status 会截断长行,建议使用 journalctl:

bash 复制代码
sudo journalctl -u ollama -n 50 --no-pager | grep -i listen

期望看到:

复制代码
Listening on [::]:11434 (version 0.40.2)

这同样表示 Ollama 主服务已监听所有接口的 11434 端口。

6.3 关于日志中的 127.0.0.1 随机端口

日志里可能还会出现:

复制代码
srv llama_server: listening on http://127.0.0.1:45365

这是 Ollama 为模型加载的内部 runner 子进程,使用随机本地端口,仅本机内部通信,与对外 API 的 11434 端口无关,属于正常现象,不需要修改。

验证流程可参考下图:

图 3:Ollama 监听验证与排错流程


七、防火墙放行与外部访问测试

7.1 本机非 loopback 地址测试

bash 复制代码
curl http://$(hostname -I | awk '{print $1}'):11434

期望返回:

复制代码
Ollama is running

7.2 检查 UFW

复制代码
sudo ufw status

如果 UFW 为 active 且没有放行 11434:

复制代码
sudo ufw allow 11434/tcp

7.3 从另一台机器测试

复制代码
curl http://<这台Ubuntu的IP>:11434

返回 Ollama is running 即外部访问成功。

外部访问与防火墙关系如下图所示:

图 4:外部访问与 UFW 放行关系


八、常见问题排查

8.1 仍然显示 127.0.0.1:11434

检查 systemd 实际读取的环境变量:

复制代码
sudo systemctl show ollama | grep -i environment

输出中应包含:

复制代码
OLLAMA_HOST=0.0.0.0:11434

如果没有,说明未执行 daemon-reload、文件未保存,或配置写错段落。

8.2 检查是否存在冲突的 override

复制代码
sudo systemctl cat ollama

该命令会显示 systemd 合并后的完整配置。检查是否存在多个 OLLAMA_HOST,以优先级高的为准。如果有冲突项,删除或统一修改。

8.3 端口被占用

复制代码
sudo ss -tlnp | grep 11434

如果被其他进程占用,先停止对应进程,再重启 Ollama。

8.4 本机 curl 正常,外部访问失败

优先检查:

  1. UFW / 云安全组 / 路由器 ACL 是否放行 11434/tcp;

  2. 访问 IP 是否正确;

  3. 是否有其他防火墙工具(如 iptables、nftables)拦截。


九、安全注意事项

将 Ollama 绑定到 0.0.0.0 后,同一网络内任何能访问该端口的设备都可以调用 Ollama API、拉取或删除模型。请仅在可信网络中使用。

如果只需要指定网段访问,建议限制来源:

复制代码
sudo ufw allow from 192.168.1.0/24 to any port 11434 proto tcp

如果只是临时测试,也可以不修改 systemd,直接前台运行:

复制代码
OLLAMA_HOST=0.0.0.0:11434 ollama serve

退出后即失效,不影响系统服务配置。


十、总结

本文完成了 Ubuntu 下将 Ollama 配置为监听 0.0.0.0:11434 的完整流程:

  1. 推荐用 systemctl edit ollama.service 添加 OLLAMA_HOST=0.0.0.0:11434;

  2. 也可以直接修改原始 service 文件,但升级时可能被覆盖;

  3. 用 ss -tlnp | grep 11434 和 journalctl -u ollama | grep -i listen 验证;

  4. 看到 *:11434 或 Listening on [::]:11434 即成功;

  5. 日志中的 127.0.0.1:随机端口 是内部 runner,无需处理;

  6. 外部访问需放行 UFW 的 11434/tcp;

  7. 对外开放有安全风险,建议限制来源网段。

相关推荐
似水流年QC1 小时前
LangChain 入门与实战
服务器·数据库·langchain
小HANN1 小时前
Ceph分布式存储深度解析-下篇
linux·运维·服务器·经验分享
周厉1 小时前
酒店PMS系统设计:房型房价管理与动态价格优先级实现(Java/MySQL)
java·数据库·pms酒店系统
howard20051 小时前
任务 2-3 图形化管理工具Navicat
数据库·mysql·navicat
一碗白开水一1 小时前
Day 5 · 弹性 | 微观
java·前端·数据库
迪飞特科技1 小时前
大模型接入业务系统:API、本地部署、RAG、智能体四种路线怎么选
java·数据库·人工智能·知识图谱·deepseek·本地化大模型
星轨zb1 小时前
[专题5]支付发放物品的一致性保障:事务、幂等与状态流转
数据库·后端·mongodb·支付架构学习
张文君1 小时前
ubuntu iscsi客户端 关闭磁盘
linux·运维·ubuntu