搞内网服务器离线部署DeepSeek这事儿,说白了就是跟Ollama打交道——先把Ollama装好、配好,再把模型文件塞进去。整个过程其实不复杂,但每一步都得踩对节奏。下面把完整流程拆开梳理一遍,从下载装包,到配置自启动,再到离线导入模型,全都串起来。

安装 Ollama
Ollama 的官网地址是 https://ollama.com/,但离线环境下用不着它,咱们直接拿二进制文件搞定。
1. 安装
如果服务器有网,一行命令就能搞定:
curl -fsSL https://ollama.com/install.sh | sh
但既然要离线部署,更靠谱的办法是用二进制包。先下载压缩包,然后解压到系统目录:
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
sudo tar -C /usr -xzf ollama-linux-amd64.tgz
需要提前下载好 ollama-linux-amd64.tgz 并传到内网服务器,或者直接从 GitHub 的 releases 页面搞下来。
2. 服务配置
2.1 启动服务
安装完成后,先手动启动一下看看能不能跑起来:
ollama serve
然后新开一个终端窗口,验证运行状态:
ollama -v
能正常输出版本号,说明服务没问题。
2.2 设置开机自启动服务
手动启动每次重启就没了,所以得注册一个 systemd 服务。创建一个服务文件 /etc/systemd/system/ollama.service,写入下面的配置:
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"
[Install]
WantedBy=default.target
这里有几个关键点需要说一下:
After=network-online.target保证系统网络完全就绪之后再启动服务,防止依赖网络的功能跑不起来。User=ollama和Group=ollama让服务以普通用户身份运行,避免直接使用 root 权限——前提是系统里已经创建了这个用户和组。Restart=always让服务崩溃后自动重启,RestartSec=3则是重启前等3秒,防止频繁重启把系统搞垮。Environment="PATH=$PATH"显式传递系统环境变量,确保服务能找到可执行命令路径。
2.3 启动服务并设置开机自启动
让 systemd 重载配置,启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama
sudo systemctl status ollama
最后一条命令会输出运行状态,绿色 active (running) 就说明一切正常。
2.4 自定义安装,配置环境变量
有时候需要自定义路径或网络配置,可以用 systemctl edit ollama 打开一个覆盖配置文件,或者手动创建 /etc/systemd/system/ollama.service.d/override.conf,在里面添加环境变量:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_MODELS=/home/xxxx/.ollama/models"
Environment="OLLAMA_KEEP_ALIVE=-1"
这里常用的环境变量整理了一下:
| 环境变量 | 说明 |
|---|---|
OLLAMA_DEBUG | 显示额外的调试信息(例如 OLLAMA_DEBUG=1) |
OLLAMA_HOST | 指定 Ollama 服务器的 IP 地址(默认 127.0.0.1:11434) |
OLLAMA_KEEP_ALIVE | 模型在内存中保持加载状态的持续时间(默认 "5m") |
OLLAMA_MAX_LOADED_MODELS | 每个 GPU 最大允许加载的模型数量 |
OLLAMA_MAX_QUEUE | 最大队列请求数 |
OLLAMA_MODELS | 模型存储目录的路径 |
OLLAMA_NUM_PARALLEL | 最大并行请求数 |
OLLAMA_NOPRUNE | 启动时不清理模型缓存 |
OLLAMA_ORIGINS | 允许的跨域来源列表(逗号分隔) |
OLLAMA_SCHED_SPREAD | 始终在所有 GPU 上调度模型 |
OLLAMA_FLASH_ATTENTION | 启用 Flash Attention 加速 |
OLLAMA_KV_CACHE_TYPE | K/V 缓存的量化类型(默认 f16) |
OLLAMA_LLM_LIBRARY | 手动指定 LLM 库以绕过自动检测 |
OLLAMA_GPU_OVERHEAD | 为每个 GPU 预留的显存空间(单位:字节) |
OLLAMA_LOAD_TIMEOUT | 模型加载超时时间(默认 "5m") |
2.5 ollama 命令
日常用到的命令不多,但了解一下总没坏处:
ollama serve # 启动 ollama
ollama create # 从模型文件创建模型
ollama show # 显示模型信息
ollama run # 运行模型
ollama pull # 拉取模型
ollama push # 推送模型
ollama list # 列出模型
ollama cp # 复制模型
ollama rm # 删除模型
ollama help # 获取帮助信息
2.6 查看日志
如果服务运行不正常,最直接的排查办法就是翻日志:
journalctl -e -u ollama
2.7 卸载
真到了要清理干净的时候,按顺序执行:
sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service
然后删除二进制文件(路径可能是 /usr/local/bin、/usr/bin 或 /bin):
sudo rm $(which ollama)
最后清理模型和用户数据:
sudo rm -r /usr/share/ollama
sudo userdel ollama
sudo groupdel ollama
安装 DeepSeek-R1
1. 在线安装
有网的情况下,最省事的办法是直接:
ollama run deepseek-r1
它会自动下载并运行模型。
2. 离线安装
离线环境就没那么方便了,得先在一台有网的电脑上把模型弄下来。执行:
ollama run deepseek-r1:1.5b
下载完成后,模型文件存在本地。如果下载速度慢,可以中止后重试,它会自动断点续传。这一步主要是为了在本地拿到模型的原始文件,并找出下载链接。
不同系统的默认存放路径:
| Windows | C:\Users\%username%\.ollama\models |
| MacOS | ~/.ollama/models |
| Linux | /usr/share/ollama/.ollama/models 或 /home/%username%/.ollama/models |
如果实在找不到具体位置,可以搜索拉取时产生的哈希字符。
2.1 保存 gguf 文件和 Modelfile
在模型目录里,按文件大小排序,最大的那个文件就是 .gguf 格式的模型文件。复制出来,重命名成 deepseek-r1-1.5b-local.gguf。
接着执行:
ollama show deepseek-r1:1.5b --modelfile > Modelfile
这样就拿到了模型对应的 Modelfile。现在两个关键文件已经到手:
deepseek-r1-1.5b-local.ggufModelfile
2.2 内网部署模型
把这两个文件传到已安装 Ollama 服务的内网服务器上。然后编辑 Modelfile,把第5行的 FROM 路径改成模型的实际存放路径,比如:
FROM ./deepseek-r1-1.5b-local.gguf
最后执行导入命令:
ollama create deepseek-r1-1.5b-local -f Modelfile
导入成功后,用 ollama list 就能看到新模型了。后续使用跟在线环境一模一样,没有任何区别。
