Windows 下 Ollama + NSSM 服务化部署全记录
从开机自启失效到稳定运行,一个完整的排坑指南
📖 前言
最近在本地部署了 Ollama + Qwen 模型,配合 VSCode 的 Continue 插件做 AI 辅助编程。但遇到一个典型问题:明明设置了开机自启,第二天打开 VSCode 时 Continue 却连不上 Ollama。
经过一番折腾,最终用 NSSM 将 Ollama 注册为 Windows 系统服务,彻底解决了这个问题。本文将完整记录从问题发现到最终解决的全过程,包含所有命令和配置详解。
📋 目录
- 问题现象
- 环境信息
- 排查过程
- 解决方案:NSSM 服务化
- 关键转折:模型丢失的真相
- 最终验证
- 总结与避坑指南
1. 问题现象
第二天打开 VSCode,发现 Continue 插件报错:
text
Unable to connect to local Ollama instance. Ollama may not be running.
明明记得前一天设置了开机自启,为什么没有生效?
2. 环境信息
| 项目 | 配置 |
|---|---|
| 操作系统 | Windows 11(版本 10.0.26200) |
| Ollama 安装路径 | D:\AiAgent\Ollama\ |
| Ollama 模型目录 | D:\AiAgent\Ollama\models |
| 已安装模型 | nomic-embed-text, qwen2.5-coder, qwen3-vl |
| GPU | NVIDIA GeForce RTX 5070 Ti Laptop (12GB) |
| VSCode 插件 | Continue |
3. 排查过程
3.1 检查 Ollama 服务状态
首先在终端尝试启动 Ollama:
powershell
# 尝试启动 Ollama 服务(注意:是 serve,不是 server)
ollama serve
📌 命令注释:
ollama serve用于启动 Ollama 的后台服务进程,监听http://localhost:11434供 API 调用。注意是serve不是server,这是一个常见拼写错误。
3.2 发现开机自启失效
检查任务管理器的"启动"选项卡,发现 Ollama 虽然显示"已启用",但实际开机后并未运行。
原因分析:Ollama 在 Windows 上默认是用户级托盘程序,依赖用户登录后触发,不是真正的系统级服务。这种方式在某些情况下(如快速启动、安全软件拦截)会失效。
4. 解决方案:NSSM 服务化
4.1 什么是 NSSM?
NSSM(Non-Sucking Service Manager) 是一个开源工具,可以将任何 .exe 程序包装成标准的 Windows 系统服务,具备以下特性:
- ✅ 开机自启(不依赖用户登录)
- ✅ 进程守护(崩溃后自动重启)
- ✅ 完全控制(可通过
services.msc管理)
📌 项目地址:https://nssm.cc
4.2 下载与安装 NSSM
-
访问 https://nssm.cc/release/nssm-2.24-101-g897c7ad.zip 下载(或访问官网选择版本)
-
解压到
D:\Installer\Tools\NSSM\ -
目录结构:
text
D:\Installer\Tools\NSSM\ ├── win64\ │ └── nssm.exe ├── win32\ │ └── nssm.exe └── src\ # 源代码,无需理会
4.3 配置环境变量
为了能在任意目录下调用 nssm 命令,需要将 NSSM 所在目录添加到系统 PATH。
操作步骤:
-
按
Win + R,输入sysdm.cpl,回车 -
切换到"高级"选项卡 -> 点击"环境变量"
-
在"系统变量"区域找到
Path,双击编辑 -
点击"新建",添加以下路径:
text
D:\Installer\Tools\NSSM\win64 -
依次点击"确定"保存
📌 配置注释:
- 系统变量 vs 用户变量:系统变量对所有账号生效,用户变量只对当前账号生效。推荐配置在系统变量,因为以管理员身份运行 CMD 时,用户变量可能不生效。
- 为什么编辑 Path:系统通过
Path变量查找可执行文件,添加目录后无需输入完整路径即可运行nssm。
验证配置:
powershell
# 查看 nssm 所在路径
where nssm
# 预期输出:D:\Installer\Tools\NSSM\win64\nssm.exe
# 测试 nssm 是否可用
nssm
# 预期输出:NSSM 帮助信息
📌 命令注释:
where命令用于查找可执行文件在 PATH 中的位置,用于验证环境变量是否配置成功。
5. 关键转折:模型丢失的真相
5.1 注册 Ollama 服务
以管理员身份打开 CMD,执行:
powershell
# 安装服务(服务名不区分大小写)
nssm install Ollama
在弹出的图形化窗口中配置:
| 选项卡 | 字段 | 填写内容 |
|---|---|---|
| Application | Path | D:\AiAgent\Ollama\ollama.exe |
| Application | Startup directory | D:\AiAgent\Ollama\ |
| Application | Arguments | serve |
| Details | Display name | Ollama Service |
| Details | Description | Ollama AI model server |
| Details | Startup type | Automatic(开机自启) |
📌 配置注释:
Arguments填serve:告诉 Ollama 以服务模式运行,监听 API 请求。Startup type选Automatic:确保开机自动启动。
点击 "Install service" 安装。
5.2 启动服务
powershell
# 启动服务
nssm start Ollama
# 预期输出:ollama: START: 操作成功完成。
# 查看服务状态
nssm status Ollama
# 预期输出:SERVICE_RUNNING
5.3 意外发现:模型不见了!
执行 ollama list 查看已安装模型:
powershell
ollama list
# 输出为空!
这显然不对,明明之前下载了 3 个模型。
5.4 问题根源:账户环境不同
| 运行方式 | 账户 | 默认模型目录 |
|---|---|---|
双击图标 / 手动 ollama serve |
你的用户账户 | C:\Users\你的用户名\.ollama\models |
| 系统服务(NSSM 安装) | Local System | C:\Windows\System32\config\systemprofile\.ollama\models |
结论:Ollama 服务运行在 Local System 账户下,它去系统账户的目录找模型,当然找不到。你的模型文件本身完好无损,只是"走错门了"。
5.5 验证模型文件确实存在
用之前写的扫描脚本检查模型目录:
powershell
# 模型在 D:\AiAgent\Ollama\models 下
dir D:\AiAgent\Ollama\models\manifests\registry.ollama.ai\library\
输出显示确实有三个模型:
nomic-embed-textqwen2.5-coderqwen3-vl
5.6 解决方案:通过 NSSM 设置环境变量
Ollama 支持通过环境变量 OLLAMA_MODELS 指定模型目录。我们需要告诉服务去 D 盘找模型。
操作步骤:
以管理员身份打开 CMD:
powershell
# 编辑 Ollama 服务配置
nssm edit Ollama
在弹出的窗口中:
-
切换到 "Environment" 选项卡
-
在大的文本输入框中,另起一行输入:
text
OLLAMA_MODELS=D:\AiAgent\Ollama\models -
确保 "Replace default environment (srvany compatible)" 复选框未勾选
-
点击 "Exit Service" 保存并关闭窗口
📌 重要注释:
- 格式必须是
变量名=变量值,用=连接,中间不要有空格- 末尾不要加多余的反斜杠
\- "Exit Service" 按钮在这里的含义是"保存配置并退出",不是停止服务
- 不要勾选 "Replace default environment",否则会清空其他必要的环境变量
重启服务:
powershell
# 重启服务使配置生效
nssm restart Ollama
5.7 备选方案:注册表修改
如果 NSSM 界面操作不顺利,可以直接修改注册表:
-
按
Win + R,输入regedit,回车 -
导航到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ollama -
在右侧空白处右键 -> 新建 -> 字符串值,命名为
Environment -
双击
Environment,在数值数据中输入:text
OLLAMA_MODELS=D:\AiAgent\Ollama\models -
关闭注册表编辑器,重启服务:
nssm restart Ollama
📌 注册表注释:Windows 服务的配置存储在注册表中,直接修改
Environment键值可以达到与 NSSM 界面相同的效果。
6. 最终验证
6.1 检查模型列表
powershell
ollama list
成功输出:
text
NAME ID SIZE MODIFIED
nomic-embed-text:latest 0a109f422b47 274 MB 2 weeks ago
qwen2.5-coder:1.5b-base 02e0f2817a89 986 MB 2 weeks ago
qwen3-vl:8b 901cae732162 6.1 GB 2 weeks ago
6.2 测试 API
powershell
# 测试 Ollama API 是否正常响应
curl http://localhost:11434/api/tags
返回 JSON 格式的模型列表,说明服务完全正常。
6.3 VSCode Continue 配置
如果 VSCode 仍报找不到模型,检查 Continue 配置文件:
- 在 VSCode 中按
Ctrl + Shift + P - 输入
Continue: Open Settings(或Continue: Open Config.json) - 确认模型配置:
json
{
"models": [
{
"title": "Qwen3-VL",
"provider": "ollama",
"model": "qwen3-vl:8b", // 必须与 ollama list 显示的名称完全一致
"apiBase": "http://localhost:11434"
}
]
}
📌 配置注释:
model字段的值必须和ollama list输出的名称完全一致(包括版本标签如:8b、:latest等)。
7. 总结与避坑指南
7.1 核心知识点
| 概念 | 说明 |
|---|---|
ollama serve |
启动服务进程,注意不是 server |
ollama list |
查看已安装模型,受 OLLAMA_MODELS 环境变量影响 |
OLLAMA_MODELS |
指定模型存储目录,解决服务找不到模型的问题 |
| NSSM | 将任意 .exe 包装为 Windows 系统服务 |
| 系统变量 vs 用户变量 | 系统变量对所有账号生效,用户变量只对当前账号生效 |
| Local System 账户 | 系统服务运行的账户,与用户账户环境隔离 |
7.2 常用 NSSM 命令速查
| 命令 | 说明 |
|---|---|
nssm install <服务名> |
安装服务(弹出图形化配置) |
nssm edit <服务名> |
编辑服务配置 |
nssm start <服务名> |
启动服务 |
nssm stop <服务名> |
停止服务 |
nssm restart <服务名> |
重启服务 |
nssm status <服务名> |
查看服务状态 |
nssm remove <服务名> confirm |
删除服务 |
7.3 避坑指南
- 命令拼写:
ollama serve不是ollama server - 管理员权限:安装和启动服务必须以管理员身份运行 CMD
- 环境变量格式:
OLLAMA_MODELS=D:\path\to\models,用=连接,无空格,无末尾反斜杠 - 服务名大小写:Windows 服务名不区分大小写,但建议统一使用(如
Ollama) - NSSM 界面的 "Exit Service":这是"保存并退出"的意思,不是停止服务
- 模型名完全匹配:Continue 配置中的模型名必须与
ollama list显示的完全一致
7.4 一句话总结
Ollama 变成系统服务后,因为账户环境不同找不到模型。通过 NSSM 设置环境变量
OLLAMA_MODELS=D:\AiAgent\Ollama\models,告诉服务去正确的位置加载模型,问题解决。
📎 附录:完整命令清单
powershell
# ===== 1. 启动 Ollama 服务(排查用) =====
# 注意:是 serve 不是 server
ollama serve
# ===== 2. 下载 NSSM =====
# 从 https://nssm.cc/release/nssm-2.24-101-g897c7ad.zip 下载
# ===== 3. 添加 NSSM 到系统 PATH =====
# 系统变量 -> Path -> 新建 -> D:\Installer\Tools\NSSM\win64
# ===== 4. 验证 NSSM 配置 =====
where nssm
# 预期输出:D:\Installer\Tools\NSSM\win64\nssm.exe
# ===== 5. 安装 Ollama 服务(管理员 CMD) =====
nssm install Ollama
# 图形化配置:
# Path: D:\AiAgent\Ollama\ollama.exe
# Startup directory: D:\AiAgent\Ollama\
# Arguments: serve
# ===== 6. 启动服务 =====
nssm start Ollama
# ===== 7. 查看服务状态 =====
nssm status Ollama
# 预期输出:SERVICE_RUNNING
# ===== 8. 设置模型目录环境变量 =====
nssm edit Ollama
# Environment 选项卡 -> 输入:OLLAMA_MODELS=D:\AiAgent\Ollama\models
# 点击 "Exit Service" 保存
# ===== 9. 重启服务使配置生效 =====
nssm restart Ollama
# ===== 10. 验证模型加载成功 =====
ollama list
# 应该显示已安装的三个模型
# ===== 11. 测试 API =====
curl http://localhost:11434/api/tags
# 返回 JSON 格式的模型列表
🔗 相关资源
本文记录于 2026 年 8 月 29 日,基于 Windows 11 + Ollama 0.32.6 + NSSM 2.24-101 环境。
✅ 检查清单
-
☑
Ollama 服务已安装并设置为开机自启
-
☑
NSSM 已添加到系统 PATH
-
☑
环境变量
OLLAMA_MODELS已配置到服务中 -
☑
三个模型已成功加载
-
☑
API 测试通过
-
☑
VSCode Continue 可正常连接
如果按照本文操作后仍有问题,请检查:
- 所有命令是否以管理员权限运行
- 路径中的目录名是否与你的实际路径一致
ollama list中的模型名是否与 Continue 配置中的完全一致

浙公网安备 33010602011771号