简介一套针对内网环境部署DeepSeek的实战型PDF文档面向具备IT基础的研究员、开发者与企业技术人员解决在内网安全、高效运行大模型并接入多种客户端的实际问题场景覆盖金融、医疗等对私密性要求较高的行业。文档包含1个PDF文件压缩包大小2.52MB内容紧扣Ollama部署主线从软硬件配置、Windows/Linux/macOS安装、环境变量设置到模型在线/离线下载均有说明。重点展开多客户端集成LM Studio、Chatbox、Cherry-Studio、Lobe Chat与RAG知识库搭建同时给出网络隔离、访问控制、模型/系统/数据安全等加固维度以及性能调优和故障排除思路便于按章节直接落地。整体是一份可操作性强、强调安全闭环的内网大模型部署参考目前已有309人学习。1. 内外网部署DeepSeek最容易被低估的是网络和权限的坑把 DeepSeek 这类大模型真正落到内网生产环境和在自己电脑上ollama run玩两把完全是两码事。我给某公司的知识库项目做部署时A同学拿着 2080Ti 就想跑 32B 模型结果加载到一半显存直接爆掉Ollama 进程被杀整台服务器跟着卡死。后来换了 24GB 显存的卡又把 OLLAMA_HOST 暴露到内网没做任何访问控制差点让整个办公网都能调用模型接口——这类翻车现场我见得太多了。这篇笔记不聊泛泛的概念直接按我实测过的路径来Ollama 装哪个版本、三平台各自怎么落地、DeepSeek 模型用在线还是离线方式拉取、LM Studio 和 Lobe Chat 这类客户端怎么连、最后怎么用 Nginx 把模型服务安全地锁在内网里。文章适合正在搭私有化大模型服务的开发者或企业技术人员照着走能少踩一半坑。提示本文以 Ollama 0.5.x 版本为基础撰写模型默认指向 deepseek-r1 系列。版本更新后个别命令差异不大但环境变量和目录结构基本通用。2. 环境选型与 Ollama 安装先看硬件再谈部署很多人在内网部署大模型上来就装软件结果装完发现跑不动或者根本起不来。其实最该先做的是把硬件账算清楚。这个环节省不了我一开始用 2080Ti 跑 deepseek-r1:32b 的血泪经验就是显存不够模型加载到一半直接被杀死日志里只会留下一条冷冰冰的 killed。2.1 硬件要求显存是硬门槛内存和存储别凑合大模型是显存密集型应用。DeepSeek 官方 R1 系列的 32B 版本光模型权重就接近 19GB加上推理过程中的 KV Cache 和上下文开销24GB 显存只是入门线。我在实际部署中观察到32B 模型在 24GB 显存下运行上下文长度开到 8K 左右就会逼近显存上限再往上加就容易触发内存交换生成速度直线下降。内存方面64GB 是底线推荐 128GB。很多人以为内存只影响加载速度实际运行时 CPU 卸载、多客户端并发请求、RAG 向量检索都在吃内存。像 rag-web-ui 这类知识库工具文档解析后要驻留内存做向量化处理16GB 内存的小机器根本扛不住。存储至少预留 100GB。模型文件、Docker 镜像、知识库索引、日志文件会慢慢把磁盘吃满。我建议把 Ollama 模型目录单独放到一个数据盘上别和系统盘混在一起——后面重装系统时模型文件保得住才不用重新下载。可以用图形化检测工具先看看自己机器的 DeepSeek 模型兼容性也可以直接跑ollama list在装完后确认模型是否就位。2.2 Windows 安装安装包一路 Next但服务和端口要检查Windows 下安装 Ollama 最简单去官网 https://ollama.ai/ 下载安装包双击后一路 Next 就行。装完打开 PowerShell 或 CMD输入ollama --version能看到版本号就说明成功了。但我一般在 Windows 上会多做两步。第一步确认 Ollama 服务是否真的在跑打开服务管理器WinR 输入 services.msc找 Ollama 服务状态应该是正在运行。第二步检查防火墙是否放行了 11434 端口——Windows 安装包默认会在防火墙里加上规则但某些企业安全策略会拦截导致内网其他机器访问不了。Windows 上还有个坑环境变量设置用的是 PowerShell 语法和 Linux 的export不一样。设置的时候注意别在 CMD 里用$env:这种写法。2.3 Linux 安装一行命令装完但 systemd 服务要确认Linux 下官方给的就是一行命令curl -fsSL https://ollama.com/install.sh | sh这个脚本会自动下载二进制、安装到 /usr/local/bin、并注册 systemd 服务。装完后验证一下ollama --version systemctl status ollamasystemctl status如果显示 active (running)说明服务已经自动拉起。很多初学者只跑ollama --version看到版本号就觉得完事了实际服务没起来客户端照样连不上。如果状态不是 running执行systemctl start ollama手动启动再systemctl enable ollama设置开机自启。注意Linux 下用 root 执行安装脚本时Ollama 的模型目录默认在 /root/.ollama/models。如果后面用普通用户跑客户端会出现看不见模型的问题要么用 root 跑要么改 OLLAMA_MODELS 指向共享目录。2.4 macOS 安装curl 或 Homebrew 二选一macOS 的安装步骤和 Linux 基本一致curl -fsSL https://ollama.com/install.sh | sh # 或者用 Homebrew brew install ollama我一般推荐 Homebrew 方式方便后续brew upgrade ollama更新。不过要注意macOS 上 Ollama 不会像 Linux 那样自动注册成系统服务每次重启后需要手动在终端跑ollama serve或者让 Terminal 开机自启。2.5 环境变量配置OLLAMA_HOST、OLLAMA_MODELS 和代理环境变量是整个部署中最容易翻车的地方。先看最关键的三个。OLLAMA_HOST 决定 Ollama 服务监听哪个地址内网部署时必须设置# Windows PowerShell 语法 $env:OLLAMA_HOST0.0.0.0:11434 # Linux/macOS 语法 export OLLAMA_HOST0.0.0.0:114340.0.0.0表示监听所有网络接口这样内网其他机器才能访问。如果只填127.0.0.1那就只有本机能连。设置完要重启 Ollama 服务才生效——这个设置完忘记重启的操作几乎每次部署都会有人踩。OLLAMA_MODELS 控制模型文件存放位置export OLLAMA_MODELS/data/ollama/models我个人强烈建议设这个变量把模型放到独立数据盘。它带来的一个好处是将来 Ollama 升级或重装模型文件不会丢也不用重新下载几十 GB 的数据。内网访问外网下载模型时代理设置是另一大坑export HTTP_PROXYhttp://your-proxy-server:8080 export HTTPS_PROXYhttp://your-proxy-server:8080设置代理后必须重启 Ollama否则下载模型时 Ollama 压根不会读这个环境变量。我有一次就是因为代理没配好ollama run deepseek-r1:32b一直卡在 pulling 阶段日志里全是连接超时折腾了一晚上才发现是代理的锅。3. 模型下载与多客户端集成在线拉取还是离线导入客户端怎么连Ollama 装好只是第一步模型拉不下来或者客户端连不上照样没法用。这一章把 DeepSeek 模型的下载策略和四款主流客户端的接入方式拆开讲按实际部署顺序走。3.1 在线下载一条命令搞定的省事方案在线下载只要网络通命令极简ollama run deepseek-r1:32b # 官方 DeepSeek R1 32B 模型 ollama run bge-m3 # 文本向量模型用于 RAG 知识库 ollama run nomic-embed-text # 另一款可选向量模型上面是二选一的选择看你的 RAG 场景需求。ollama run会自动处理下载和加载两步第一次执行先把模型拉到本地之后每次执行直接加载进入对话。想只看不跑用ollama pull deepseek-r1:32b只下载。在线下载最大的不确定因素是网络。内网环境如果模型拉取速度极慢或频繁中断先检查 HTTP_PROXY 和 HTTPS_PROXY 环境变量是否设置正确再确认防火墙是否拦截了对模型仓库的访问。3.2 离线下载U盘拷模型用 Modelfile 导入内网机器碰不到外网时离线导入是唯一出路。我的做法是先在能上网的机器上用 LM Studio 下载需要的模型找到 GGUF 格式的模型文件比如 bge-reranker-v2-m3-FP16.gguf再把整个模型文件夹用 U 盘或内网共享文件复制到目标机器。但直接拷过去 Ollama 是不认的必须导入。步骤看起来简单实际上有几个关键细节# 1. 在模型文件和 Modelfile 所在目录下创建 Modelfile cat Modelfile EOF FROM ./nomic-embed-text-v1.5.f16.gguf EOF # 2. 执行导入注意 -f 指定 Modelfile 路径 ollama create nomic-embed-text-v1.5.f16 -f ./Modelfile # 3. 验证 ollama listollama create的模型名可以自定义-f参数指向 Modelfile 文件。Modelfile 里的FROM路径是相对路径所以必须先 cd 到模型文件所在目录再执行命令——这个细节很多人漏掉结果报错找不到文件。导入成功后ollama list能看到刚才创建的模型名就说明可以用了。提示GGUF 文件本身不会被ollama create复制或移动它只是被注册。如果后来把模型文件删了或挪了位置模型就会加载失败。3.3 多客户端集成四款客户端的连接方式和适用场景模型服务起来了接下来选客户端。四款我都实测过各有偏向。LM Studio 适合当作 Ollama 的图形化管理工具它本身能下载模型也能连接 Ollama 服务。设置里找到 Server 或 Connection服务器地址填http://localhost:11434如果 Ollama 不在本机填对应的内网 IP。测试连接通过后模型列表会自动拉取ollama list里的模型。Chatbox 界面最简洁适合快速验证。设置里选 Ollama 作为 API 提供商填地址和端口选模型测试。没太多花哨功能胜在轻量。Cherry-Studio 功能更丰富支持流式输出和 Markdown 渲染。连接 Ollama 时先用ollama list查看模型 ID填到客户端的模型名称位置测试连接确认无误。注意它和 Chatbox 一样都需要手动填模型名不会自动下拉。Lobe Chat 是我在内网部署里最推荐的Web 界面浏览器就能访问。Docker 部署的话git clone https://github.com/lobehub/lobe-chat.git cd lobe-chat cp .env.example .env.env文件里最关键的是这几个配置项OPENAI_API_KEYsk-your-openai-api-key ACCESS_CODEyour-super-secret-password OLLAMA_BASE_URLhttp://your-ollama-host:11434 OLLAMA_API_MODELdeepseek-r1:32bOLLAMA_BASE_URL决定 Lobe Chat 去哪里找 Ollama。如果 Lobe Chat 和 Ollama 在同一台机器用http://localhost:11434就够了不在同一台就填 Ollama 所在机器的内网 IP。OLLAMA_API_MODEL填模型名称。ACCESS_CODE 强烈建议设置不然内网任何人都能打开页面调用模型——这个在后面安全加固章还会重点说。配置完启动docker-compose up -d然后浏览器访问http://localhost:3010。进去后在设置的语言模型里添加 Ollama 提供商填 Base URL 和模型名测试连接。这里有一个新用户常踩的坑docker-compose 拉取的镜像不一定是你本机仓库最新的代码如果后续要改配置改完.env后要执行docker-compose up -d --force-recreate才会让容器重新读取环境变量。3.4 RAG 知识库rag-web-ui 的架构选型RAG 场景我一般推 rag-web-ui它是前后端分离架构后端默认支持 ChromaDB 和 Qdrant 两种向量数据库通过 Factory 模式切换不用改业务代码。对个人或企业知识库来说PDF、DOCX、Markdown、TXT 这些格式都能解析。需要注意的不只是部署本身还有模型配套。embedding 模型比如 bge-m3负责把文档切成向量reranker 模型比如 bge-reranker-v2-m3-FP16负责在检索结果里重排。两者配一起知识库回答的准确率会明显好于只用一个向量模型。文档分块大小和重叠率也是关键参数分块太大检索粒度变粗分块太小上下文割裂一般先按 500 字符配 50 字符重叠试跑再根据问答效果调。3.5 常见问题与排查部署阶段的高频问题集中写一下排查思路现象ollama run deepseek-r1:32b一直卡在 pulling进度条不动。原因大概率是网络不通或者代理配置没生效。解决先确认 HTTP_PROXY 和 HTTPS_PROXY 环境变量echo $HTTP_PROXY看看是否已设置然后 curl 一下模型仓库地址测连通性最后确认设置完环境变量后重启过 Ollama 服务——这一步最容易漏。现象客户端连不上 Ollama提示 connection refused。按顺序排查Ollama 服务启动了吗systemctl status ollamaWindows 看服务管理器客户端里填的地址和端口对吗localhost:11434还是 IP:端口防火墙放行 11434 了吗如果中间挂了 Nginx 反代反代配置检查没。四步走完基本能定位。现象Windows 上设置了 OLLAMA_HOST 但内网其他机器还是访问不了。先确认环境变量是设置在 PowerShell 会话里还是系统变量里。PowerShell 会话里的$env:OLLAMA_HOST只在当前窗口有效关掉就没了。要永久生效用系统属性里的环境变量按钮设置设置完重启 Ollama 服务。现象离线导入模型后ollama list能看到但ollama run报错找不到文件。Modelfile 的 FROM 路径用了绝对路径但文件被移动或者 FROM 用的是相对路径且当前工作目录不对。解决把模型文件放回 Modelfile 注册时的路径或者用ollama rm 模型名删掉重新导入。现象Lobe Chat Docker 部署后访问 3010 端口白屏或 404。大多数情况是 docker-compose.yml 和 .env 文件不在同一目录或者 .env 里配置项格式不对。解决确保在 lobe-chat 项目根目录下执行 docker-compose 命令检查 .env 文件里的变量名大小写和赋值语法。4. 安全加固与性能调优模型部署完防的是内网风险我在前面部署流程里反复提到安全是因为内网不等于安全内网。某公司在部署 Lobe Chat 后没设 ACCESS_CODE结果整个办公网都能打开对话页面模型资源被当免费 API 用一周后内网日志里全是外部的异常调用记录。这章把我在生产环境里落地的安全措施和性能压榨方法完整列一遍。4.1 网络隔离与访问控制Nginx 反向代理 防火墙Ollama 本身不支持身份认证默认裸奔在 11434 端口谁摸到谁就能调。网络隔离往上靠访问控制往下靠两层加一起才靠谱。网络隔离的做法是把运行 Ollama 和客户端的服务器放进独立的内网网段严格限制 11434 端口的访问来源只允许信任的 IP 段。防火墙层面只放行必要的端口和协议其他的一律拒绝。我在某项目里直接把 11434 端口从外网完全封死内网也只对应用服务器网段放行。访问控制我用 Nginx 做反向代理加 Basic Authserver { listen 80; server_name your-ollama-server.com; location / { proxy_pass http://localhost:11434; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; auth_basic Restricted Access; auth_basic_user_file /etc/nginx/.htpasswd; } }.htpasswd文件用 htpasswd 工具生成htpasswd -c /etc/nginx/.htpasswd ollama_user这样客户端连接 Ollama 时需要在 URL 里带上用户名密码Nginx 校验通过后才转发请求到 Ollama 端口。别用默认 11434 端口直接暴露换成不常用的端口定期更换配合 Nginx 反代能挡住绝大多数扫描和探测。注意Nginx 反代 HTTPS 时证书配置要加到 server 块里listen 443 ssl;并指定ssl_certificate和ssl_certificate_key路径。不想手动维护证书可以用 certbot 自动签发但内网环境一般有自己的证书体系。4.2 模型安全与数据安全校验哈希、加密存储、最小权限模型本身也可能被污染。从不可信来源下载的模型可能被植入了恶意指令或后门逻辑一定要只从可信来源获取。我下载完模型会做 SHA256 校验sha256sum /root/.ollama/models/blobs/sha256-xxx把算出的哈希值和官方公布的对比。验证模型文件完整性的另一个方式是在 Java 等环境中用 message digest 工具但命令行 sha256sum 最简单。模型文件本身的访问权限也要收紧只有授权用户能读我一般将模型目录权限设为 700。数据安全方面涉及敏感数据时必须加密。静态数据用 BitLockerWindows或 LUKSLinux加密磁盘传输中的数据用 HTTPS。数据脱敏也很重要知识库里的手机号、身份证号在入库前就该替换掉。最小权限原则贯穿整个链路用户能访问知识库但不一定能访问模型文件能调用 API但不一定能登录服务器。备份和恢复策略别省定期备份模型文件、知识库索引、配置文件以防灾难恢复那天手忙脚乱。4.3 Lobe Chat 的特别关照与持续监控Web 客户端暴露面最大Lobe Chat 部署时优先考虑这几点必须用 HTTPSHTTP 裸奔的 Web 服务在内网也等于裸奔.env 里 ACCESS_CODE 设强密码长度不低于 16 位防火墙限制 3010 端口的访问来源只放行办公网网段反代时用子路径部署location /chat/转发到 Lobe Chat既方便 URL 管理又增加一层隐藏持续监控和更新是很多人忽略的部分。安全不是一次性动作我每隔一段时间会做一次漏洞扫描用 Nessus 或 OpenVAS 扫内网主机的已知漏洞审查系统日志和应用日志里的异常行为。Ollama、客户端、模型都要定期更新——ollama pull 模型名可以拉取模型的最新版本Ollama 本体用官方脚本或安装包升级。4.4 性能调优OLLAMA_NUM_THREAD 和 GPU 加速参数模型能跑起来只是起点榨干硬件性能才能扛住多人并发。我的调优顺序是线程数、GPU 加速、生成参数三层。export OLLAMA_NUM_THREAD8OLLAMA_NUM_THREAD 控制推理时的 CPU 线程数。设太低浪费多核 CPU设太高线程切换反而拖慢速度。一般按 CPU 物理核心数的一半到三分之二设置16 核的机器设 8 基本够用。这个是 Ollama 服务的全局参数重启后生效。GPU 加速方面确保 CUDA 和 cuDNN 驱动版本匹配。Ollama 启动时日志里会有类似 inference compute device 的信息确认是否真的检测到 GPU。用nvidia-smi看显存占用如果模型加载后显存占用为零大概率是驱动或 CUDA 版本问题。生成参数在客户端里调。Temperature 控制随机性我通常在 0.7 到 0.9 之间知识库问答场景降到 0.5 左右会更稳定Top_p 控制多样性一般用 0.9 或 0.95Max Tokens 限制生成长度。不同场景要多试几组参数组合找到最合适的配置。4.5 故障排除从日志定位到资源瓶颈当问题已经发生能快速定位就是本事。我按问题类型梳理排查路径Ollama 服务起不来查 Ollama 日志位置一般在模型目录下的 logs 文件夹/root/.ollama/logs或$HOME/.ollama/logs。日志里会明确写出错误原因。常见情况是端口被占用netstat -tlnp | grep 11434看看是哪个进程占用了端口换端口或停掉冲突进程。模型加载失败先看模型文件是否完整ll /root/.ollama/models/blobs/检查文件大小是否和官方一致。再确认模型文件放在正确的 OLLAMA_MODELS 目录下。如果还不行删掉模型重新ollama pull。模型生成慢第一反应看 GPU 利用率nvidia-smi看显存和 GPU 占用。占用低说明推理没走 GPU检查 CUDA 版本。CPU 利用率高说明线程数设置不合理。硬件层面确认内存频率和通道数——模型加载需要大量内存带宽内存不够快会拖后腿。并发请求时容器 OOMLobe Chat 或 rag-web-ui 的 Docker 容器被内核杀死。dmesg | grep -i oom能确认。解决方式是限制容器内存上限docker-compose.yml里加mem_limit: 8g避免单个容器吃光宿主机内存。整个系统的内存压力导致 Ollama 进程被杀也一样需要给 Ollama 预留足够内存。5. 验证跑通从模型响应到知识库召回一次完整的体检部署完别急着收工。我每次做完一套环境会强制自己走一遍完整的验证流程从基础连通性到知识库端到端逐项过筛。这套方法帮你快速区分服务起来了和系统能用了之间的差距。第一步验证 Ollama 服务本身。命令行执行ollama list能看到模型列表说明 Ollama 服务和模型目录正常。再执行ollama run deepseek-r1:32b进入对话输入你好能流畅返回文本说明推理链路通了。这一层挂了后面客户端、知识库全都不用测。第二步验证客户端连接。以 Lobe Chat 为例浏览器打开页面进设置添加 Ollama 提供商填地址和模型名点测试连接。通了之后发一条消息确认 Web 界面到 Ollama 服务的完整链路。Cherry-Studio 或 Chatbox 同理选 Ollama 提供商填地址端口模型名测试连接。到这里多客户端接入都验证通过。第三步验证 RAG 知识库。RAG Web UI 里上传一份 PDF等文档解析和向量化完成后提问看回答是否引用文档内容。这里有个经验知识库问答能不能答好关键在 embedding 和 reranker 模型搭配。如果只用 bge-m3 做向量化但没配 reranker长文档检索的准确率会有明显下降。我的标准配置是两个模型都拉ollama pull bge-m3和ollama pull bge-reranker-v2-m3在 rag-web-ui 里分别指定为 embedding 和 reranker 模型。第四步验证安全链路。模拟一个内网非授权请求在没配 Nginx 反代时直接访问http://服务器IP:11434应该被防火墙拦截配了反代后访问 80 端口需要输入用户名密码。Lobe Chat 页面访问时应该要求输入 ACCESS_CODE。模型目录的权限检查一下ls -la /root/.ollama/models看是不是只有授权用户能读。最后一步性能验证。nvidia-smi看显存占用、GPU 利用率htop看 CPU 和内存。我一般同时开两个对话窗口发送请求观察响应速度和资源消耗是否在可接受范围内。如果响应明显变慢检查线程数和上下文长度设置。我自己后面每次部署新环境都会强制走这套验证流程从ollama list开始到知识库问答收尾每一步都确认过了才把机器交给团队。这套流程也成了我排障的固定套路——服务起不来先看日志客户端连不上先查网络和防火墙模型加载失败先查文件完整性和目录权限。整个流程走下来一个环境是否真正可交付心里基本有数了。希望我这套装完即验证的做法能帮到你少走弯路。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?