
简介面向政企单位及内部网络的 IT 运维人员与技术爱好者这份 DeepSeek 离线部署攻略回答了内网环境搭建 AI 知识库的核心问题如何在没有互联网接入的情况下备齐模型、安装运行环境并保护数据安全。压缩包内为 1 个 PDF 文档大小 5.28MB内容覆盖离线资源准备、Windows/Linux/macOS 多平台部署、模型导入、离线数据投喂、访问控制与安全加固等完整环节并专门给出国产化操作系统与 CPU 架构适配说明。文中对比了两种 RAG 实现方式其中借助 Cherry Studio 客户端进行数据馈送的方法步骤直观对新手尤其友好还针对 Ollama API 未授权访问、宝塔面板部署等场景提供了加固思路。目前已有 1369 人学习适合政企内网运维人员及有一定技术基础的用户作为操作手册或排障参考快速落地安全可控的私有大模型知识库。1. 内网部署 DeepSeek从离线安装包到国产化适配的完整落地方案给政企内网搭 AI 知识库最大障碍从来不是模型本身而是「怎么把几百 GB 的模型和依赖搬进隔离网络」。在线教程默认你能pip install、能git clone但内网环境一切都要靠离线介质传递数据安全红线又卡死了外网访问。这篇文章要解决的就是这套完整的离线部署链路先备齐模型包和安装包再分别落到 Windows Server 和 Linux含国产系统上最后把 RAG 数据投喂和 Ollama API 安全加固做扎实。适合 IT 运维、政企数字化岗位的工程师也适合想在内网环境搭私有助手的进阶玩家。2. 离线资源准备模型包、安装包与完整性校验2.1 模型离线包的获取渠道离线部署的第一步不是装软件而是先把模型文件搞到手。DeepSeek 系列模型在 Ollama 仓库和 ModelScope 上都有分发常见做法是找 GGUF 格式——Ollama 能直接识别这种后缀省去转换步骤。Hugging Face 和 ModelScope 是两条主要下载路径前者搜索deepseek能看到官方和各社区量化版本后者对国内网络更友好速度也稳。模型版本选择上我一般建议先看硬件再定大小。7B 级别在 16GB 内存的机器上就能流畅跑32B 则建议 64GB 内存起步70B 基本要双卡或者大内存服务器才舒服。Ollama 官方的 deepseek-r1 系列有 1.5b、7b、8b、14b、32b、70b 几个档位量化版用q4_K_M居多在显存占用和效果之间取了个平衡。下载时注意拿ollama run deepseek-r1:7b这种命令格式在装了 Ollama 的联网机器上执行就能把模型拉进本地模型目录。如果你走的是 ModelScope搜到 GGUF 文件直接下了拷贝即可不需要额外转换。2.2 Ollama 离线安装包的三种准备方式Ollama 本体是单一二进制文件这给内网分发带来了很大便利。# 有网机器上执行官方脚本会自动下载 ollama 二进制 curl -fsSL https://ollama.com/install.sh | sh # 安装后找到二进制文件实际位置 which ollama # 通常在 /usr/bin 或 /usr/local/bin找到二进制后直接拷贝到 U 盘或者内网共享目录就算准备完成。Windows 端更简单官网下载安装包拷进内网双击就能装。macOS 的安装逻辑同 Linuxbrew install ollama或者直接下载.zip都行。这个方案的妙处在于Ollama 没有复杂的依赖树单文件分发不需要处理动态链接库的兼容问题。2.3 客户端离线包与 Docker 镜像迁移Lobe Chat 是常用的 Web 界面客户端它提供 Docker 镜像内网部署需要提前在联网机器上拉取再导出。# 联网机器上拉镜像 docker pull lobehub/lobe-chat # 导出为 tar 包 docker save -o lobe-chat.tar lobehub/lobe-chat # 拷贝到内网后加载 docker load -i lobe-chat.tar如果还需要 RAG 能力rag-web-ui 也是同样的操作逻辑联网机器上docker pull→docker save→ 内网docker load。Docker 镜像迁移是最省心的离线分发方式因为镜像里已经把运行环境和依赖全部打包好了内网服务器只要装了 Docker就能直接跑起来。2.4 模型文件完整性校验与导入模型文件动辄几十 GB传输过程中损坏一个字节推理结果就可能完全错乱。所以下载完成后校验 SHA256 哈希是必须走的流程。# Linux/macOS 计算哈希 sha256sum /path/to/your/model/file # Windows PowerShell 计算哈希 Get-FileHash -Algorithm SHA256 /path/to/your/model/file拿计算出的哈希值跟官方发布页比对一致才能进内网。如果模型文件太大U 盘放不下Linux 可以用split分割、cat合并Windows 用 7-Zip 分卷压缩。安全等级高的环境走安全网闸物理隔离最稳妥。模型文件进了内网还需要导入 Ollama 才能使用。先新建一个 Modelfile内容和模型文件放同级目录# Modelfile 内容只需要写模型文件名称和后缀 # 例如模型文件名为 deepseek-r1-7b-q4_K_M.ggufModelfile 里就写这一行 deepseek-r1-7b-q4_K_M.gguf # 在模型目录下执行导入 ollama create deepseek-r1-7b -f Modelfile # 查看导入结果 ollama listollama create的作用是把 GGUF 文件注册成 Ollama 的模型条目-f Modelfile指定配置文件。导入完成后ollama list能看到新模型说明模型已进入 Ollama 管理范围后面部署服务端时就能直接调用。3. 内网环境部署Windows Server、Linux 与 macOS 的差异化配置3.1 Windows Server 部署与防火墙放行Windows Server 上安装 Ollama 是图形界面操作但真正容易翻车的是环境变量和防火墙配置。安装完成后右键「此电脑」→「属性」→「高级系统设置」→「环境变量」在系统变量里新建或编辑OLLAMA_HOST设为0.0.0.0:11434才能让内网其他机器访问只本机用就填localhost:11434OLLAMA_MODELS模型文件存放路径如果你把模型放到 D 盘单独目录这里就填对应绝对路径HTTP_PROXY/HTTPS_PROXY如果需要走代理拉模型才配纯内网不配改完环境变量必须重启 Ollama 服务才生效这是 Windows 上最典型的坑——很多人改了不重启服务还在用旧配置跑。防火墙配置用命令或图形界面都行# 放行 Ollama 端口 netsh advfirewall firewall add rule nameOllama API dirin actionallow protocolTCP localport11434 # 放行 Lobe Chat 端口 netsh advfirewall firewall add rule nameLobe Chat dirin actionallow protocolTCP localport3210Windows Server 2019/2022 上这套流程测试通过更老版本的 Server 需要考虑 Docker 版本兼容性——老系统装不了新版 Docker DesktopLobe Chat 的部署就会卡住。3.2 Linux Server 部署与 systemd 服务管理Linux 部署的核心是把 Ollama 二进制放进系统路径再用 systemd 托管服务确保重启后能自动拉起。# 拷贝二进制到系统路径并赋权 sudo cp ollama /usr/local/bin/ sudo chmod x /usr/local/bin/ollama # 创建 systemd 服务文件 sudo vim /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.target配好后执行sudo systemctl daemon-reload sudo systemctl enable ollama sudo systemctl start ollama systemctl status ollamaRestartalways这行很关键——Ollama 进程意外崩溃或 OOM 被系统杀掉时systemd 会自动拉起不会出现人不在现场服务就挂了的情况。防火墙层面CentOS/RHEL 用firewall-cmd --permanent --add-port11434/tcp firewall-cmd --reloadUbuntu/Debian 用ufw allow 11434/tcp。另外建议把ulimit -n 65535写进服务的环境配置或启动脚本。Ollama 在高并发下要开大量文件描述符默认 1024 限制会导致连接被拒绝表现就是客户端偶发连不上、日志里报too many open files。3.3 macOS 部署与 LaunchAgents 管理macOS 安装本身不难curl -fsSL https://ollama.com/install.sh | sh或brew install ollama都行。环境变量写在~/.zshrc或~/.bash_profileexport OLLAMA_HOST0.0.0.0:11434 export OLLAMA_MODELS/path/to/your/models source ~/.zshrcmacOS 有个容易踩的坑Gatekeeper 会拦截未签名应用。第一次启动 Ollama 如果提示损坏或无法验证开发者去「系统设置 → 隐私与安全性」里允许即可。SIP 不建议关闭跟 Ollama 运行没有冲突。开机自启动用 LaunchAgent 管理新建~/Library/LaunchAgents/com.ollama.plist内容指向 ollama serve 命令launchctl load加载后就能常驻后台。资源监控方面活动监视器可以看到 Ollama 进程的 CPU 和内存占用如果推理性能不理想可以调OLLAMA_NUM_THREAD环境变量控制线程数——比如 8 核机器设 6留 2 个核给系统和其他服务。4. 国产化适配操作系统、CPU 架构与硬件兼容性边界4.1 操作系统兼容性麒麟、统信 UOS 与主流发行版国产化环境里最常见的操作系统是麒麟Kylin和统信 UOS它们本质上是基于 Linux 的发行版包管理器和 systemd 体系跟 Ubuntu/CentOS 兼容良好。部署路径跟标准 Linux 一致拷贝 ollama 二进制到/usr/local/bin创建 systemd 服务配置环境变量。需要注意包管理器的差异——麒麟用yum或dnfUOS 基于 Debian 用apt这影响的是后续装 Docker 和辅助工具时的命令选择不影响 Ollama 本身。写 systemd 服务时User字段注意用实际账号。很多国产系统默认禁止 root 直接跑服务需要先useradd ollama建专用账号再指定。OLLAMA_MODELS 路径也要预先chown给该用户否则模型写入时权限报错。4.2 CPU 架构兼容性x86、ARM 与国产芯片Ollama 的二进制对架构有严格匹配x86_64 的二进制不能跑在 ARM 上ARM 的也不能跑在龙芯的 LoongArch 上。下载安装包时要看清uname -m的输出——x86_64选 amd64 包aarch64选 arm64 包龙芯平台需要确认有没有对应构建版本没有的话只能在兼容层上试跑或换部署方案。# 查看 CPU 架构 uname -m # x86_64 → amd64 安装包 # aarch64 → arm64 安装包实操中比较典型的场景是鲲鹏ARM服务器跑 DeepSeek 7B 量化版。ARM 平台对 int8 量化支持尚可FP16 推理效率稍低选模型时优先考虑 q4_K_M 这类量化版本显存带宽压力更小。4.3 硬件兼容性GPU 显存、内存与量化档位选择部署前先算清楚自己的硬件能跑动哪个模型这比安装步骤本身更决定成败。模型档位量化格式推荐显存/内存CPU 推理体验deepseek-r1:1.5bq4_K_M4GB流畅可用deepseek-r1:7bq4_K_M8GB较慢可接受deepseek-r1:14bq4_K_M16GB明显延迟deepseek-r1:32bq4_K_M32GB很慢建议 GPUCPU 推理不是不能跑但要认清边界。7B 量化版在纯 CPU 环境下一字大约 2~5 token/s做简单问答和文档摘要没问题深度的多轮对话或长文生成体验就会明显下降。有 NVIDIA 显卡就设CUDA_VISIBLE_DEVICES指定 GPU推理速度能提升一个量级。拿了国产 GPU如昇腾、寒武纪做适配就要确认 Ollama 有没有对应的后端支持很多场景下需要走 vLLM 或其他推理框架绕过。提示国产化适配最大的坑是「以为照着 Linux 教程就能跑通」实际上架构和芯片型号决定了一切。部署前先把uname -m和显卡型号记下来再去对照 Ollama 官方支持列表比装完再排查省太多时间。5. 离线数据投喂RAG 知识库构建的两种路径5.1 文档解析与文本预处理流程RAG 知识库的核心流程是「文档 → 文本 → 分块 → 向量化 → 存储 → 检索」。先处理原始文档格式把 PDF、DOCX、TXT 统一提取成纯文本。# DOCX 提取文本 from docx import Document document Document(your_document.docx) text \n.join([paragraph.text for paragraph in document.paragraphs]) # PDF 提取文本用 pdfminer.six # 命令行方式pdf2txt.py your_document.pdf -o output.txt# 离线安装依赖包 pip install python-docx pdfminer.six jieba文本提取完做分块。分块尺寸直接影响检索精度——块太大语义混杂块太小上下文不够。常见做法是每块 500~800 字符相邻块之间重叠 100 字符左右保留上下文衔接。import jieba # 中文分词 text 这是一段测试文本 seg_list jieba.cut(text, cut_allFalse) print( / .join(seg_list))5.2 向量化与 ChromaDB 向量库写入文本变成向量才能做相似度检索这里需要 embedding 模型。推荐bge-large-zh-v1.5或bge-m3中文效果比通用模型好一截。embedding 模型也要提前下载好放进内网后通过本地路径加载全程不碰外网。from sentence_transformers import SentenceTransformer # 加载本地 embedding 模型路径 model SentenceTransformer(/path/to/your/embedding/model) # 文本向量化 sentences [这是第一段文本, 这是第二段文本] embeddings model.encode(sentences)向量库用 ChromaDB轻量且支持本地持久化不需要额外起服务import chromadb client chromadb.Client() # 创建 collection collection client.create_collection(my_collection) # 写入向量和原文 collection.add( embeddingsembeddings, documents[这是第一段文本, 这是第二段文本], metadatas[{source: doc1}, {source: doc2}], ids[id1, id2] )这里的metadatas是检索结果过滤的依据比如按来源文档筛选、按部门标签筛选。ids必须唯一重复写入同一文档会报错实操中常用md5(文档路径块序号)做 ID。5.3 Cherry Studio 可视化投喂新手优先推荐的 RAG 路径上面这套 Python 流程对新手不友好——环境配置、依赖安装、路径问题都能卡半天。实际工作中我更推荐用 Cherry Studio 客户端做数据投喂把 RAG 链路封装成了图形操作。操作步骤安装 Cherry Studio 并启动打开「设置」→「模型服务」先添加 Ollama 服务地址填http://127.0.0.1:11434本机或http://服务器IP:11434内网远程导入文本向量模型设置里点「添加」选择nomic-embed-textOllama 上提前ollama run nomic-embed-text拉好在知识库页面新建知识库导入本地 PDF、DOCX、TXT 文件Cherry Studio 会自动完成分块、向量化、写入本地向量库对话时在输入框上方切换到对应知识库检索增强自动生效这条路径把分块参数默认在了合理范围向量存储也自动管理新手完全不需要理解 embedding 和向量数据库的细节。等跑通了再回头研究那些参数不迟。注意Cherry Studio 的 RAG 默认从本地文件投喂适合个人知识库团队共用的知识库还是建议走 rag-web-ui 或自建向量库方案便于统一维护和多用户共享。6. 避坑指南Ollama API 安全加固与常见部署问题排查6.1 未授权访问Ollama API 裸奔是最大安全隐患现象Ollama 服务启动后内网任何机器直接访问http://服务器IP:11434/api/generate就能调用模型无需任何认证。如果服务器有外网映射或处于不可信网段任何人都能白嫖算力甚至读取、删除模型文件。原因Ollama 默认不开启任何鉴权机制OLLAMA_HOST0.0.0.0:11434的配置会把 API 完全暴露在网络上。解决最直接的措施是把OLLAMA_HOST改成监听内网网卡 IP而不是0.0.0.0其次用防火墙限制 11434 端口只允许特定网段访问。如果走了宝塔面板做反向代理可以在 Nginx 层加 Basic Auth 或 IP 白名单。6.2 宝塔面板反向代理配置与鉴权保护现象用户在宝塔面板里配了 Ollama 反向代理但没做认证层访问域名就能直通 API。原因反向代理本身不提供认证功能默认透传所有请求。解决在宝塔「网站 → 反向代理」配置里加访问限制。常见做法是在 Nginx 配置里加allow/deny规则控制来源 IPlocation /api/ { allow 192.168.1.0/24; # 允许内网网段 deny all; # 其余全部拒绝 proxy_pass http://127.0.0.1:11434; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }如果是多部门跨网段访问也可以叠加 Basic Auth。生成 htpasswd 文件在 Nginx 里加auth_basic Restricted; auth_basic_user_file /etc/nginx/.htpasswd;这样内网用户访问聊天界面和 API 都要输账号密码。6.3 环境变量不生效与模型路径错乱现象配置了OLLAMA_MODELS指向新路径但重启后模型还是加载不到ollama list显示为空。原因Windows 上改完环境变量没重启 Ollama 服务或者在 systemd 服务文件里改了路径却没执行daemon-reload。解决Windows 在服务管理器里找到 Ollama 服务右键重启Linux 改完服务文件务必执行sudo systemctl daemon-reload sudo systemctl restart ollama。改完用echo $OLLAMA_MODELS或 PowerShell 里Get-ChildItem Env:OLLAMA_MODELS确认环境变量已生效。6.4 Linux 下 Ollama 起不来端口占用与依赖缺失现象systemctl start ollama报失败journalctl -u ollama日志里有bind: address already in use或exec format error。原因前者是 11434 端口被其他进程占用后者是二进制架构与系统不匹配——最常见的是把 amd64 的包拷到了 ARM 服务器上。解决端口占用用lsof -i :11434查占用进程杀掉或者改OLLAMA_HOST里的端口号。架构不匹配跑uname -m核对后重新下载对应安装包。这两个问题占了 Linux 部署失败的大半比例。6.5 CPU 推理 OOM 与加载不稳定现象模型加载成功但对话进行到一半进程被系统杀掉dmesg里有Out of memory记录。原因模型量化档位选择过高内存耗尽触发 OOM killer。7B 的 FP16 要 14GB 内存量化 q4_K_M 只要 5GB 左右选错档位翻车极常见。解决32GB 内存的机器不要跑 32B FP16选 q4_K_M同时把OLLAMA_NUM_THREAD限制在物理核心数的 60%~75%避免线程争抢内存。监控用free -h和nvidia-smi确认还有余量再加大模型档位。7. 进阶离线模型统一管理与多模型调度技巧DecpSeek 部署完成后日常维护的核心是模型文件管理和多模型调度。这里分享我常用的几个技巧能让内网 AI 服务稳定度明显提升。7.1 模型文件目录规范化把模型文件按「厂商/版本」建目录是后期维护最省心的做法主要给OLLAMA_MODELS指定专用磁盘分区或目录避免模型和系统盘抢空间实践下来 7B 量化版约 4~5GB32B 量化版约 20GB预留 2 倍余量比较稳妥每个模型文件到达后先做 SHA256 校验再导入导入完ollama list确认显示条目的名称和版本一致模型文件用 U 盘或共享目录进内网时保持 Modelfile 和模型文件同级目录ollama create时通过-f参数指定文件路径就不会出现「导入了但找不到模型」的坑# 推荐结构 OLLAMA_MODELS/data/ollama/models # 下面按模型名建子目录 /data/ollama/models/deepseek-r1/ /data/ollama/models/nomic-embed-text/7.2 多模型按场景切换Ollama 支持同时管理多个模型客户端可以在 DeepSeek 对话模型和 embedding 向量模型之间切换。比如 Cherry Studio 里把对话模型指向deepseek-r1:7b向量模型指向nomic-embed-text两者各司其职# 查看当前所有模型 ollama list # 测试某模型是否正常工作 ollama run deepseek-r1:7b 你好,做个自我介绍 # 模型不在内存中时首次调用会冷启动加载 # 频繁使用的小模型可改为常驻通过 OLLAMA_KEEP_ALIVE 控制关于OLLAMA_KEEP_ALIVE参数的调优是一个通常容易被忽视的关键设置它表示模型在内存中保持加载的时间默认是 5 分钟。如果业务场景是多人频繁对话模型被反复卸载再加载会产生明显延迟我一般会调大到 30 分钟或-1常驻但显存紧张的机器不建议设太大否则小模型长期占着显存大模型加载时反而容易 OOM。7.3 日志排查与自启动验证服务部署完不能一走了之把日志排查和自启动验证做成固定动作这比任何监控工具都可靠。# Linux 查看 Ollama 最近日志 journalctl -u ollama -n 50 --no-pager # 查看服务是否随开机自启 systemctl is-enabled ollamaWindows 上查看事件查看器的「Windows 日志 → 应用程序」Ollama 启动失败或崩溃会有详细错误记录。首次部署完成后我会强制走一遍重启机器 → 等服务自动拉起 → 客户端发起一次问答请求 → 看响应时间正常 → 记录基线数据。这套标准化验证流程花不了五分钟但能确保后续维护时有据可查。7.4 内网知识库的效果验证RAG 投喂完数据要验证检索效果而不是凭感觉判断。我的习惯是准备三组测试问题一组直接能答的、一组需要知识库外部信息辅助的、一组故意设陷阱的。用 Cherry Studio 对比开启/关闭知识库的答案差异如果开启后答案包含文档里的细节信息说明 RAG 链路通了如果答案还是模型通用知识优先检查向量模型是否已正确导入、文档分块是否过大、检索 TopK 是否设置过低。从那以后我每次内网部署完「模型 RAG 安全加固」三个环节都强制走一遍这套验证流程半小时内能确认交付质量而不是等用户上线后才发现检索不生效。希望这份攻略能帮你在内网环境少踩坑、少走弯路。本文还有配套的精品资源点击获取