内网离线部署DeepSeek全攻略:Ollama+多平台+RAG避坑指南
简介这份资源是一份面向政企内网与政府机构IT运维人员、具备基础技术能力爱好者的DeepSeek离线部署指南重点解决无互联网接入环境下AI大模型落地难、工具链接依赖强、数据安全顾虑多等问题。内容围绕离线资源准备、多平台环境部署、数据投喂与权限管理展开并专门覆盖国产化适配与安全加固环节支持Windows Server、Linux及macOS部署同时给出两种RAG实现路径其中通过Cherry Studio投喂数据的方式对新手较为友好。资源包为1个PDF文件大小5.28MB结构清晰便于按章节查阅。目前已有1372人学习适合希望在内网中搭建安全高效AI知识库、需要完整流程参考与排错思路的技术人员。1. 内网离线部署 DeepSeek 的版本选择与资源准备内网环境装 DeepSeek最让人头疼的不是模型本身而是“什么都得先搬到内网”。我见过太多人卡在第一步模型文件几百个 G用 U 盘拷到一半发现文件损坏或者 Ollama 装上了却拉不到模型。更麻烦的是政企内网往往还有国产化适配要求CPU 架构可能是 ARM 或龙芯操作系统可能是麒麟、统信这些都得提前确认。这篇笔记记录的是我完整走通的一套离线部署方案覆盖 Windows Server、Linux 和 macOS 三个平台核心组件是 Ollama DeepSeek 模型 Lobe Chat 或 Cherry Studio 客户端RAG 部分用 rag-web-ui 或 Cherry Studio 实现。适合有一定 Linux 基础、需要在无外网环境下搭建 AI 知识库的运维人员。装之前先把所有离线资源列清楚后面每一步才不会断档。离线资源清单我一般按四类准备模型文件、Ollama 安装包、客户端安装包、RAG 依赖包。模型文件优先选 GGUF 格式Ollama 能直接导入DeepSeek-R1 系列从 7B 到 70B 都有显存或内存不够就选小参数版本。Ollama 的 Windows 版直接下 exeLinux 版在有网机器上执行安装脚本后把二进制文件拷出来macOS 用 Homebrew 或脚本安装后同样提取二进制。客户端方面Lobe Chat 提供 Docker 镜像可以 docker save 成 tar 包再拷进内网Cherry Studio 有桌面安装包适合新手做 RAG 数据投喂。RAG 依赖包主要是 rag-web-ui 的 Docker 镜像和 embedding 模型比如 bge-large-zh-v1.5 或 nomic-embed-text。所有文件下载后务必做 SHA256 校验内网传输过程中文件损坏是高频翻车点。提示模型文件超过 4GB 时用 split 命令分割后再拷贝到内网用 cat 合并比直接拷大文件稳定得多。2. 离线资源打包与导入模型、Ollama 和客户端一个不能少2.1 模型文件下载与 GGUF 导入模型下载渠道主要有两个Hugging Face 和 ModelScope。Hugging Face 上搜 deepseek-r1 能找到官方版本ModelScope 上搜 GGUF deepseek 可以找到适合 Ollama 导入的量化版本。我一般选 Q4_K_M 或 Q8_0 量化级别Q4 在精度和体积之间比较平衡Q8 精度更高但文件更大。下载完成后先校验 SHA256Linux 和 macOS 用sha256sumWindows 用 PowerShell 的Get-FileHash。# Linux/macOS 校验模型文件完整性 sha256sum /path/to/deepseek-r1-7b-q4_k_m.gguf # Windows PowerShell 校验 Get-FileHash -Algorithm SHA256 D:\models\deepseek-r1-7b-q4_k_m.gguf校验通过后把 GGUF 文件和 Modelfile 放在同一目录。Modelfile 内容很简单指定模型路径即可FROM ./deepseek-r1-7b-q4_k_m.gguf然后执行导入命令# 进入模型文件所在目录 cd /path/to/model_dir # 导入模型bge-m3-q8_0-bert_cpp 替换为你自己的模型名 ollama create deepseek-r1-7b -f Modelfile # 查看已导入的模型列表 ollama listollama create的-f参数指定 Modelfile 路径模型名可以自定义建议带上参数规模方便识别。导入完成后ollama list能看到模型就算成功。如果导入报错先检查 Modelfile 里的 FROM 路径是否和实际文件名完全一致大小写和扩展名都不能错。2.2 Ollama 离线安装包提取Windows 版最简单官网下载 exe 后直接拷进内网双击安装。Linux 版需要在有网的机器上先执行官方安装脚本脚本会自动下载二进制文件到/usr/bin或/usr/local/bin然后把ollama二进制文件拷出来。macOS 可以用 Homebrew 安装后从/opt/homebrew/bin或/usr/local/bin提取也可以用安装脚本。# 在有网 Linux 机器上执行下载 ollama 二进制 curl -fsSL https://ollama.com/install.sh | sh # 找到二进制文件位置 which ollama # 通常在 /usr/bin/ollama 或 /usr/local/bin/ollama # 拷贝到内网机器 sudo cp ollama /usr/local/bin/ sudo chmod x /usr/local/bin/ollamachmod x赋予执行权限这一步漏了会报“权限不足”。拷贝完成后执行ollama --version验证二进制是否可用。如果提示缺少动态库说明目标机器的 glibc 版本太低需要找对应发行版的兼容版本。2.3 客户端 Docker 镜像离线加载Lobe Chat 推荐用 Docker 部署有网机器上先拉取镜像再保存成 tar 包# 有网机器拉取镜像 docker pull lobehub/lobe-chat # 保存为 tar 包 docker save -o lobe-chat.tar lobehub/lobe-chat # 内网机器加载镜像 docker load -i lobe-chat.tardocker save的-o参数指定输出文件名docker load的-i参数指定输入文件。加载完成后用docker images确认镜像存在。如果内网机器没有 Docker需要先离线安装 Docker 和 Docker Compose这部分依赖包也要提前准备。Cherry Studio 更简单直接下载桌面安装包拷进去安装即可适合不熟悉 Docker 的运维人员。3. 多平台内网部署Windows Server、Linux 和 macOS 的配置差异3.1 Windows Server 部署与防火墙配置Windows Server 上装 Ollama 就是双击安装包但装完必须配环境变量否则内网其他机器访问不了。右键“此电脑”进入“属性”找到“高级系统设置”在“环境变量”里新建两个系统变量# 系统变量中新建 OLLAMA_HOST 0.0.0.0:11434 OLLAMA_MODELS D:\ollama\modelsOLLAMA_HOST设为0.0.0.0:11434表示监听所有网卡只本机访问就改成localhost:11434。OLLAMA_MODELS指定模型存放目录不设的话默认在用户目录下C 盘容易满。改完环境变量要重启 Ollama 服务在服务管理器里找到 Ollama 手动重启或者用 PowerShell 执行Restart-Service Ollama。防火墙是 Windows 部署最容易忽略的一步。默认情况下 11434 端口是关闭的内网其他机器连不上。用 PowerShell 加一条入站规则# 允许 TCP 11434 端口入站 netsh advfirewall firewall add rule nameOllama dirin actionallow protocolTCP localport11434 # 如果部署了 Lobe Chat再加一条 3010 端口 netsh advfirewall firewall add rule nameLobeChat dirin actionallow protocolTCP localport3010加完规则后用Get-Process -Name ollama和Get-Service Ollama检查服务状态。如果服务起不来去 Windows 事件查看器里看应用程序日志常见原因是模型目录权限不足或端口被占用。Windows Server 2019 和 2022 我都实测过更早的版本可能遇到 Docker 兼容性问题建议至少用 2019。3.2 Linux Server 部署与 systemd 服务管理Linux 上 Ollama 的二进制文件拷到/usr/local/bin后用 systemd 管理服务最稳妥。新建/etc/systemd/system/ollama.service[Unit] DescriptionOllama Service Afternetwork.target [Service] Useryouruser WorkingDirectory/path/to/ollama ExecStart/usr/local/bin/ollama serve EnvironmentOLLAMA_HOST0.0.0.0:11434 EnvironmentOLLAMA_MODELS/path/to/your/models Restartalways [Install] WantedBymulti-user.targetUser改成实际运行用户WorkingDirectory和OLLAMA_MODELS改成实际路径。Restartalways保证服务意外退出后自动拉起内网环境没人盯着这个参数很关键。写完执行sudo systemctl daemon-reload sudo systemctl enable ollama sudo systemctl start ollama sudo systemctl status ollamadaemon-reload重新加载服务配置enable设置开机自启。如果启动失败用journalctl -u ollama -f看实时日志。常见问题是OLLAMA_MODELS目录不存在或权限不对手动创建并chown给运行用户即可。防火墙方面CentOS 和 RHEL 用firewall-cmdUbuntu 和 Debian 用ufw# CentOS/RHEL 放行端口 sudo firewall-cmd --permanent --add-port11434/tcp sudo firewall-cmd --permanent --add-port3010/tcp sudo firewall-cmd --reload # Ubuntu/Debian 放行端口 sudo ufw allow 11434/tcp sudo ufw allow 3010/tcp高并发场景下调整ulimit能提升性能ulimit -n 65535增加文件描述符上限写进/etc/security/limits.conf永久生效。国产化系统如麒麟、统信包管理器和 systemd 版本可能有差异安装命令按实际发行版调整。3.3 macOS 部署与 LaunchAgents 管理macOS 上装 Ollama 可以用 Homebrew 或安装脚本# Homebrew 安装 brew install ollama # 或者用安装脚本 curl -fsSL https://ollama.com/install.sh | sh环境变量配在~/.zshrc或~/.bash_profileexport OLLAMA_HOST0.0.0.0:11434 export OLLAMA_MODELS/Users/yourname/models改完执行source ~/.zshrc生效。macOS 的 Gatekeeper 和 SIP 可能拦截安装遇到权限提示在“系统设置-隐私与安全性”里手动允许。开机自启用 LaunchAgents在~/Library/LaunchAgents/下建 plist 文件用launchctl load加载。性能监控用活动监视器看 CPU 和内存占用OLLAMA_NUM_THREAD可以控制线程数默认是 CPU 核心数调低能减少资源争抢。4. 避坑与排查内网部署最常见的五个翻车点4.1 模型导入报错“file not found”现象是ollama create执行后提示找不到模型文件。原因通常是 Modelfile 里的 FROM 路径写错或者模型文件和 Modelfile 不在同一目录。解决方法是cd到模型文件所在目录再执行导入Modelfile 里用相对路径./模型文件名.gguf确保文件名大小写和扩展名完全一致。4.2 内网其他机器连不上 Ollama现象是服务端ollama list正常但客户端连接超时。原因一般是OLLAMA_HOST没设成0.0.0.0或者防火墙没放行 11434 端口。先检查环境变量再检查防火墙规则。Windows 用netsh advfirewall firewall show rule nameOllama确认规则存在Linux 用firewall-cmd --list-ports或ufw status查看。4.3 Docker 镜像加载后启动失败现象是docker load成功但docker run报错。原因可能是镜像架构不匹配比如在 ARM 机器上加载了 x86 镜像。用docker inspect 镜像名看 Architecture 字段和uname -m对比。另一个原因是端口冲突3010 被占用就换一个端口映射比如-p 3011:3210。4.4 模型文件传输后 SHA256 不一致现象是校验时哈希值和官方对不上。原因通常是传输过程中文件损坏U 盘或网络传输都可能出问题。解决方法是重新传输大文件先用split分割再合并# 分割成 2GB 每块 split -b 2G model.gguf model_part_ # 内网合并 cat model_part_* model.gguf合并后再校验一次 SHA256确认一致再导入。4.5 Lobe Chat 连不上 Ollama现象是 Lobe Chat 界面能打开但对话报错。原因是OLLAMA_BASE_URL配置不对Docker 容器里不能用localhost访问宿主机要用宿主机内网 IP。在.env文件里设OLLAMA_BASE_URLhttp://192.168.x.x:11434重启容器生效。如果 Ollama 和 Lobe Chat 在同一台机器也可以用 Docker 的 host 网络模式。5. 装完怎么验证从模型加载到 RAG 问答的完整检查清单部署完成后别急着投喂数据先按顺序验证每一层是否通。第一步验证 Ollama 服务本身在服务端执行ollama list看模型是否在列表里然后ollama run deepseek-r1-7b进入交互模式输入“你好”看是否有回复。这一步通了说明模型加载没问题。如果卡住不动检查内存或显存是否够用7B 模型 Q4 量化大概需要 6GB 左右内存32B 需要 20GB 以上。第二步验证 API 接口。Ollama 默认提供 OpenAI 兼容接口用 curl 测试# 测试 Ollama API 是否正常响应 curl http://localhost:11434/api/generate -d { model: deepseek-r1-7b, prompt: 你好, stream: false }返回 JSON 里有response字段就说明 API 正常。如果返回连接拒绝检查服务是否在运行、端口是否监听。ss -tlnp | grep 11434能看到监听状态。第三步验证客户端连接。Lobe Chat 部署后浏览器打开http://服务器IP:3010在设置里填 Ollama 地址和模型名发一条消息看是否回复。Cherry Studio 类似在模型设置里选 Ollama填内网 IP 和端口。如果客户端报错先确认客户端所在机器能 ping 通服务端再用 curl 在客户端机器上测 API。第四步验证 RAG 功能。用 Cherry Studio 做 RAG 最简单点设置按钮添加文本向量模型选nomic-embed-text或bge-m3然后导入文档。导入后问一个文档里有的问题看回答是否引用了文档内容。如果回答不准确检查文档分块大小500 字符左右比较合适太大检索精度下降太小上下文丢失。验证层级检查命令预期结果模型加载ollama list显示已导入模型模型推理ollama run 模型名正常对话回复API 接口curl localhost:11434/api/generate返回 JSON 响应客户端连接浏览器访问 Lobe Chat能发消息并回复RAG 检索Cherry Studio 导入文档后提问回答引用文档内容最后一步是权限加固。Ollama API 默认没有认证内网也不能裸奔。用宝塔面板做反向代理加 Basic Auth或者用 Nginx 配auth_basic。Lobe Chat 设ACCESS_CODE环境变量访问时需要输入认证码。做完这些再让内网其他用户接入避免未授权访问。从那以后我每次部署完都强制走一遍这个检查清单从模型加载到 RAG 问答逐层验证不跳过任何一步。内网环境排查成本高一次跑通比事后救火省事得多。希望帮到你。本文还有配套的精品资源点击获取