适用场景:Docker 集成 / WebUI 对接 / 内网统一端口 / 端口冲突解决
关键词:Ollama 端口修改、OLLAMA_HOST、systemd override、Linux 服务配置
系统环境:Ubuntu / Debian / CentOS 等 systemd 系统
Ollama 版本:v0.1.x 及以上
🔍 一、为什么需要修改 Ollama 默认端口?
Ollama 默认监听127.0.0.1:11434,但在实际开发或部署中,常遇到以下问题:
- 端口被占用(如其他服务已使用 11434)
- 需要对外暴露 API(供 Web 前端、Dify、FastAPI 调用)
- 内网统一端口规范(如所有 AI 服务走 8080)
- 配合 Nginx 反向代理或code-server 集成
此时,仅修改服务端口是不够的——客户端也必须同步配置,否则会报错:
Error: ollama server not responding本文将手把手教你通过 systemd 修改 Ollama 服务端口,并让客户端无缝连接!
⚙️ 二、核心原理:服务端 vs 客户端
| 组件 | 控制变量 | 默认值 | 说明 |
|---|---|---|---|
| 服务端 | OLLAMA_HOST(在 systemd 中设置) | 127.0.0.1:11434 | 决定 Ollama 监听哪个 IP 和端口 |
| 客户端 | OLLAMA_HOST(Shell 环境变量) | 127.0.0.1:11434 | 决定ollama run命令连接哪里 |
✅关键点:两端必须一致!只改服务不改客户端 = 连接失败!
🛠 三、修改 Ollama 服务端口为 8080(systemd 方式)
步骤 1:创建 systemd override 目录
sudomkdir-p /etc/systemd/system/ollama.service.d💡
override.conf是 systemd 推荐的覆盖主服务配置的方式,安全且可维护。
步骤 2:写入新端口配置
sudotee/etc/systemd/system/ollama.service.d/override.conf>/dev/null<<EOF [Service] Environment="OLLAMA_HOST=0.0.0.0:8080" EOF0.0.0.0:允许局域网或其他机器访问(若仅本地用,可写127.0.0.1)8080:目标端口(可替换为你需要的任意未占用端口)
步骤 3:重载 systemd 并重启服务
sudosystemctl daemon-reloadsudosystemctl restart ollama.service步骤 4:检查服务状态
sudosystemctl status ollama.service --no-pager✅ 看到Active: active (running)即表示成功!
🖥 四、客户端适配(极易遗漏!)
此时直接运行:
ollama run glm-4.7-flash会失败!因为客户端仍在尝试连接127.0.0.1:11434。
✅ 方案 1:临时生效(当前终端)
exportOLLAMA_HOST=127.0.0.1:8080 ollama run glm-4.7-flash✅ 方案 2:永久生效(推荐)
echo'export OLLAMA_HOST=127.0.0.1:8080'>>~/.bashrcsource~/.bashrc✅ 之后所有新终端均可直接使用
ollama run,无需额外设置!
🧪 五、验证端口是否生效
方法 1:查看监听端口
ss -lntp|grepollama# 应输出:LISTEN 0 4096 0.0.0.0:8080 ...方法 2:调用 API 测试
curlhttp://127.0.0.1:8080/api/tags✅ 返回模型列表即表示服务正常!
📜 六、一键自动化脚本(收藏备用)
将以下脚本保存为change_ollama_port.sh,赋予执行权限后运行:
#!/bin/bash# 修改 Ollama 端口为 8080 并自动配置客户端set-ePORT=8080echo"🔧 正在修改 Ollama 服务端口为${PORT}..."sudomkdir-p /etc/systemd/system/ollama.service.dsudotee/etc/systemd/system/ollama.service.d/override.conf>/dev/null<<EOF [Service] Environment="OLLAMA_HOST=0.0.0.0:${PORT}" EOFsudosystemctl daemon-reloadsudosystemctl restart ollama.service# 配置当前用户客户端echo'export OLLAMA_HOST=127.0.0.1:'${PORT}>>~/.bashrcexportOLLAMA_HOST=127.0.0.1:${PORT}echo"✅ 配置完成!"echo"📌 客户端连接地址:${OLLAMA_HOST}"echo"🚀 尝试运行:ollama run llama3"# 可选:测试运行(取消注释)# ollama run llama3⚠️ 注意:首次运行可能需要拉取模型,请确保网络畅通。
❓ 七、常见问题 FAQ
Q1:能改成其他端口吗?比如 80、443?
✅ 可以!但需注意:
- 端口 < 1024 需 root 权限(建议用 8080、8000、11435 等)
- 确保端口未被占用:
sudo lsof -i :8080
Q2:能否同时监听多个端口?
❌不能。Ollama 当前仅支持单端口监听。
Q3:如何让局域网其他设备访问?
只需确保:
OLLAMA_HOST=0.0.0.0:8080- 防火墙开放 8080 端口:
sudoufw allow8080/tcp - 客户端使用
http://你的服务器IP:8080
🔒公网暴露建议:务必配合 Nginx + Basic Auth / JWT / IP 白名单,避免模型被滥用!
✅ 总结
| 操作 | 命令/配置 |
|---|---|
| 修改服务端口 | systemd override +OLLAMA_HOST=0.0.0.0:8080 |
| 客户端连接 | 设置export OLLAMA_HOST=127.0.0.1:8080 |
| 永久生效 | 写入~/.bashrc |
| 验证 | curl http://127.0.0.1:8080/api/tags |
通过本文方法,你可以轻松将 Ollama 集成到各种开发或生产环境中,再也不怕端口冲突!