Skip to content

Ollama 环境变量与服务配置

Ollama 没有传统的配置文件,服务行为几乎全部由环境变量控制:监听地址、模型路径、上下文、并发、代理与调试。

本章节先讲三平台的设置方法,再按网络入口、请求调度、模型运行三个层面讲清每个核心变量。


配置变量在服务里的位置

先建立一张地图:十几个环境变量并不是平级的,它们分别作用在服务进程的不同环节。

server-config-map.svg

想查看当前版本支持的完整变量列表,执行 ollama serve --help 即可。


三平台设置环境变量的方法

同一个变量,三个平台的设置入口完全不同,这是新手最容易卡住的地方。

macOS:launchctl

Ollama 以应用方式运行时,环境变量要通过 launchctl 注入,设置完重启应用生效:

实例

bash

# 逐个注入变量

launchctl setenv OLLAMA_HOST "0.0.0.0:11434"

# 然后退出并重新打开 Ollama 应用

Linux:systemd 服务覆写

实例

bash

# 打开服务覆写编辑器

sudo systemctl edit ollama.service

# 在编辑器中加入(注意必须在 [Service] 小节下):

# [Service]

# Environment="OLLAMA_HOST=0.0.0.0:11434"

# 重载并重启服务

sudo systemctl daemon-reload

sudo systemctl restart ollama

Windows:系统环境变量

在开始菜单搜索"环境变量",选择"编辑账户的环境变量",新建或编辑变量后保存。

关键一步:先退出托盘里的 Ollama,保存后从开始菜单重新启动,新变量才会在新进程里生效。

另外还有一个 JSON 配置文件 server.json(位于 ~/.ollama/)用于少量开关型配置,例如关闭云端功能写入 {"disable_ollama_cloud": true}。绝大多数配置仍以环境变量为准。


网络入口:HOST、ORIGINS 与代理

OLLAMA_HOST:让局域网访问你的模型

默认只监听 127.0.0.1,仅本机可用;想让局域网其他设备调用,改为监听所有网卡:

实例

bash

# 监听所有网卡(局域网可访问)

OLLAMA_HOST=0.0.0.0:11434 ollama serve

# 其他设备验证(换成你的实际 IP)

curl http://192.168.1.100:11434/api/version

开放到局域网等于把无鉴权的模型服务暴露给同网段所有设备,家庭网络尚可,公司网络务必配合防火墙规则或反向代理(私有化部署章节详谈)。

OLLAMA_ORIGINS:跨域放行

Ollama 默认只接受来自 127.0.0.1 和 0.0.0.0 的跨域请求,网页或浏览器扩展直连本地 API 时需要显式放行:

实例

bash

# 放行全部浏览器扩展

OLLAMA_ORIGINS=chrome-extension://*,moz-extension://*,safari-web-extension://* ollama serve

代理:HTTPS_PROXY 只此一个

模型下载走 HTTPS 出站,网络受限环境用 HTTPS_PROXY 指向代理即可。

只设置 HTTPS_PROXY,不要设置 HTTP_PROXY:Ollama 拉取模型不走 HTTP,多设 HTTP 代理反而可能中断客户端与服务端的连接。Docker 场景在启动容器时传 -e HTTPS_PROXY=...;使用自签名证书的代理还需把 CA 证书装进系统(或打进镜像)。


模型运行:路径、上下文与驻留

OLLAMA_MODELS:模型存到别的盘

默认模型存放在用户目录,三平台路径如下:

平台默认模型路径
macOS~/.ollama/models
Linux/usr/share/ollama/.ollama/models
WindowsC:\Users\<用户名>\.ollama\models

把 OLLAMA_MODELS 指向新目录即可整体迁移,已下载的模型文件移动过去后可以直接使用。

实例

bash

# Linux 示例:迁移到大容量数据盘

OLLAMA_MODELS=/data/ollama-models ollama serve

# 注意:标准安装的 Linux 使用 ollama 用户运行服务

# 新目录需要移交属主,否则服务无权读写

sudo chown -R ollama:ollama /data/ollama-models

OLLAMA_CONTEXT_LENGTH:全局上下文

设置所有模型的默认上下文长度,未在模型或请求级单独指定时生效:

实例

bash

# 全局默认 8K

OLLAMA_CONTEXT_LENGTH=8192 ollama serve

优先级从高到低为:API 请求 options.num_ctx、Modelfile 中的 PARAMETER num_ctx、该环境变量、按显存的自动分级默认值。

OLLAMA_KEEP_ALIVE:全局驻留时长

统一调整模型加载后的驻留时间,取值格式与 API 的 keep_alive 参数一致:

实例

bash

# 常见取值:300(秒) / "10m" / "24h" / -1 常驻 / 0 用完即卸

OLLAMA_KEEP_ALIVE=30m ollama serve

API 请求里单独传的 keep_alive 优先于这个全局值,可以做"全局 10 分钟、重点模型常驻"的分层策略。


请求调度:并发三件套

Ollama 支持两级并发:多个模型同时驻留,以及单个模型并行处理多个请求,各有一个变量控制。

变量默认值作用
OLLAMA_NUM_PARALLEL1单个模型同时处理的请求数;所需内存按 该值 × 上下文长度 放大
OLLAMA_MAX_LOADED_MODELS3 × GPU 数(CPU 推理为 3)允许同时加载的模型总数,前提是显存内存装得下
OLLAMA_MAX_QUEUE512服务繁忙时的最大排队请求数,超出直接返回 503

调度逻辑值得理解:显存足够时模型并行处理请求;显存不足时新请求排队,等待中的模型空闲卸载后腾出空间。

NUM_PARALLEL 是最容易踩坑的变量:设成 4 意味着上下文缓存要乘以 4 份,显存瞬间翻四倍,模型可能因此被挤出 GPU。多用户共享实例的规划方法在私有化部署章节展开。


调试与日志:OLLAMA_DEBUG

排查问题的第一步永远是开调试、看日志。

实例

bash

# 开启调试日志

OLLAMA_DEBUG=1 ollama serve

Windows 图形应用开启调试的方式:先从托盘退出应用,然后在 PowerShell 中执行:

实例

bash

$env:OLLAMA_DEBUG="1"

& "ollama app.exe"

四套环境的日志位置汇总:

环境日志位置
macOS~/.ollama/logs/server.log
Linux(systemd)journalctl -u ollama --no-pager --follow --pager-end
Windows%LOCALAPPDATA%\Ollama\server.log
Dockerdocker logs <容器名>(stdout/stderr)

其他实用变量速查

其余变量多与特定场景绑定,完整的分章节讲解在对应主题篇展开,这里先建立索引。

变量示例值作用
OLLAMA_FLASH_ATTENTION1 / 0强制开启 / 关闭 Flash Attention,长上下文时显著省显存(GPU 章节详解)
OLLAMA_KV_CACHE_TYPEq8_0 / q4_0KV 缓存量化类型,需配合 Flash Attention(GPU 章节详解)
OLLAMA_VULKAN0关闭 Vulkan 后端(Vulkan 异常时的开关)
OLLAMA_LLM_LIBRARYcpu_avx2强制指定推理库,绕过自动探测
OLLAMA_TMPDIR/data/tmp临时目录改位置(系统 /tmp 挂了 noexec 时)
OLLAMA_NO_CLOUD1禁用云模型与联网搜索,纯本地模式

AI 思考中...

Ollama 工具和编辑器集成

Ollama GPU 与性能优化

基于 VitePress 构建,部署于 GitHub Pages