简介:这是一份面向AI开发者、研究人员及技术爱好者的DeepSeek多平台部署指南,覆盖基于Ollama的电脑本地部署、手机端快捷方式部署以及基于Open WebUI与Docker的浏览器访问方案,帮助读者在个人电脑、移动设备或业务系统中快速落地大模型NLP能力。资源打包为单个docx文档,共1个文件,约15KB,内容以命令、链接和分步说明为主,轻量易用,适合随时查阅。已有3769人浏览/学习。文档按电脑、手机、浏览器三类环境组织,分别给出macOS、Linux、Windows安装Ollama并运行deepseek-r1模型的具体命令,介绍iPhone快捷指令配置、Android Termux编译安装Ollama的完整操作,以及通过Docker启动Open WebUI实现网页对话的流程;每一步都附有官方地址和可直接使用的指令,从环境准备、模型拉取到交互验证均有明确指引。读者既能根据自身硬件灵活选择部署路径,也能通过对比不同方案加深对模型工作机制的理解,从而更好地将文本生成、问答等能力集成到实际业务,或作为深度学习部署的学习模板。
1. 多平台部署 DeepSeek:从 Ollama 本地到移动端、WebUI 的完整落地路径
DeepSeek 模型要怎么部署,市面上教程很多,但多数只讲一个平台、一条命令,真到了自己机器上,下载慢、路径不对、编译报错,每一步都能卡住半天。这篇笔记把我实际拆过的一条完整链路写清楚:本地用 Ollama 跑 deepseek-r1:7b,手机端分 iPhone 快捷指令和 Android Termux 两条路线,最后用 Docker 起 Open WebUI 把模型变成浏览器里能聊的服务。适合两类人:想在个人电脑上低成本跑大模型的技术爱好者,以及打算把模型接入业务流程的开发者——照着走能复现,遇到坑也知道去哪排查。
2. Ollama 本地部署:模型拉取、终端交互与存储换盘的完整闭环
Ollama 是目前本地跑 DeepSeek 最省事的一层封装,它把模型下载、量化格式、推理服务、命令行交互全包了。你不需要手动处理权重文件、推理框架和依赖环境,一条命令就能把模型拉到本地并进入对话。但省事的背后有几个点必须提前知道:模型下载源在国内网络下经常很慢,默认存储路径在系统盘容易爆,以及交互式会话和 API 服务是两种完全不同的使用方式。这章把这三个问题的解法一起给出来。
2.1 安装 Ollama:三平台命令与下载慢的应对
Ollama 官方提供 macOS、Linux、Windows 三种安装方式。macOS 用户直接去官网下载 zip 包解压安装,或者用 Homebrew 安装;Linux 用户最省事的是官方一键脚本;Windows 用户下载 exe 安装包后,Ollama 会注册为后台服务并自动配好 PATH。
# macOS(Homebrew 方式) brew install ollama # Linux(官方一键脚本) curl -fsSL https://ollama.com/install.sh | sh # Windows:下载安装包后,PowerShell 里验证 ollama --version安装完成后先跑ollama --version确认版本,能输出版本号就说明环境没问题。这里有个细节:Linux 一键脚本安装后,Ollama 会以 systemd 服务方式常驻,意味着改环境变量后必须重启服务才生效,后面讲换盘时还会用到这个知识点。
下载慢是本地部署 DeepSeek 遇到的第一个高频痛点。模型文件动辄几个 GB,默认走官方源经常卡在进度条不动。我一般的做法是:先给 Ollama 配国内可用的镜像源,在用户环境变量里加OLLAMA_HOST和镜像地址相关的配置;如果网络环境实在不稳定,就直接用离线安装包——在一台能正常下载的机器上把模型文件拉好,再拷贝到目标机器导入。注意模型文件目录结构不能乱动,Ollama 通过 manifest 文件管理模型,拷贝时把整个 models 目录原样搬过去最稳。
2.2 拉取 DeepSeek-R1:命令参数与首次交互的边界
环境就绪后,拉取并启动模型就一行命令:
ollama run deepseek-r1:7b这条命令干了三件事:检查本地有没有deepseek-r1:7b这个模型,没有就去模型库拉取;下载完成后加载进内存;然后进入终端交互模式,在>>>提示符后面直接输入问题,模型实时生成回复。deepseek-r1:7b里的7b是模型参数量,7B 代表 70 亿参数,量化和精简版本对个人 PC 友好;如果你的机器配置更高,可以试deepseek-r1:32b,但显存和内存压力会明显上升。
首次对话建议先问一个简单问题验证链路,比如让它用一句话介绍自己。注意终端交互模式是独占式的,输入/bye或按 Ctrl+D 退出,退出后模型会从内存卸载。这个模式适合快速验证,不适合持续对外提供服务——真要给 Web 页面或其他程序调用,得用 Ollama 内置的 API 服务,ollama serve默认监听 11434 端口。
# 查看本地已拉取的模型列表 ollama list # 删除不再需要的模型,释放磁盘空间 ollama rm deepseek-r1:7bollama list会列出模型名、体积和已修改时间,用来确认模型是否真正落地。ollama rm删除指定模型,这个命令在你换量化版本或磁盘吃紧时很实用。
2.3 存储路径修改:Linux 换盘、Windows 换目录的操作
Ollama 默认把模型放在系统盘,C 盘或根分区空间不够是必然遇到的坑。我自己的机器就是 256G 系统盘,两个模型直接吃掉 40G,所以第一步就是改存储路径。Linux 下用 systemd 管理 Ollama 服务时,这样做:
# 1. 创建新目录 sudo mkdir -p /data/ollama/models # 2. 编辑 systemd 服务配置,追加环境变量 sudo systemctl edit ollama # 在打开的配置里写入以下内容后保存 # [Service] # Environment="OLLAMA_MODELS=/data/ollama/models" # 3. 重载配置并重启服务 sudo systemctl daemon-reload sudo systemctl restart ollamaOLLAMA_MODELS是 Ollama 的核心环境变量,指定模型文件存放根目录。改完之后原路径下已下载的模型不会自动迁移,需要手动移动整个目录,移动完再重启服务。Windows 上同理,在系统环境变量里新建OLLAMA_MODELS指向 D 盘目录,然后重启 Ollama 服务或注销再登录。验证方式统一用ollama list看模型路径,或者直接去新目录确认有没有 manifests 和 blobs 子目录。
3. 移动端部署:iPhone 快捷指令与 Android Termux 的两条路线
手机跑大模型是很多人最感兴趣也最容易误解的部分。先说结论:iPhone 的快捷指令方案本质上不是本地部署,它调用的是云端 API,手机只是个发请求和收结果的客户端;Android 的 Termux 方案才是真本地部署,需要在手机上编译 Ollama 并加载模型。两条路线体验差异巨大,选哪条取决于你的需求:网络稳定且不想折腾硬件,走快捷指令;要离线可用、数据不出设备,走 Termux。
3.1 iPhone 快捷指令:API Key 配置与调用链路
iPhone 部署 DeepSeek 用的是快捷指令(Shortcuts)加 API Key 的组合。操作上分三步:先用 Safari 打开快捷指令链接下载安装;然后去 API 服务商页面获取 Key;最后在快捷指令里填 Key 完成绑定。
快捷指令的核心配置项: - API 地址:模型服务商提供的 OpenAI 兼容端点 - API Key:鉴权凭证,填错会返回 401 - 模型名:指定 deepseek 对应的模型标识 - 上下文长度:控制单次请求携带的历史消息条数这里要提个醒:快捷指令只是个调度壳,真正跑模型的是远端服务器。所以首次运行快捷指令时,iOS 会弹权限确认框,必须点“允许访问”,否则指令拿不到网络权限,请求会直接失败。调试时遇到“无法连接网络”或“请求失败”的提示,先检查设置里快捷指令的网络权限,再检查 Key 有没有填对,顺序不要反。这个方案的优点是手机无负担,缺点是强依赖网络,断网或 API 服务波动时就完全不可用。
3.2 Android Termux 编译 Ollama:依赖安装到构建验证
Termux 方案才是移动端本地部署的正经路径,但过程比想象中折腾。它的本质是在 Android 终端环境里从源码编译 Ollama,然后拉取模型、本地推理,全程不依赖云服务。
# 1. 初始化 Termux:设置存储权限并更新软件源 termux-setup-storage pkg update && pkg upgrade # 2. 安装编译依赖 pkg install git cmake golang libjpegturbo # 3. 克隆 Ollama 源码(注意 --depth 参数,只拉最新一次提交) git clone --depth 1 https://github.com/ollama/ollama.git cd ollama # 4. 生成平台相关代码并编译 go generate ./... go build . # 5. 后台启动 Ollama 服务 ./ollama serve & # 6. 验证服务是否运行 curl http://localhost:11434每个环节都有讲究。pkg install安装的 golang 是编译必需,cmake 和 libjpegturbo 是部分原生模块的构建依赖,缺了会在go build阶段报错。go generate ./...负责生成特定平台的操作系统适配代码,Android 环境尤其需要这一步,跳过可能编译出连不上 GPU 的二进制。curl http://localhost:11434是你验证服务是否起来的唯一标准,返回 Ollama 版本信息才代表服务正常。服务确认后拉模型:
./ollama pull deepseek-r1:8b ./ollama run deepseek-r1:8bpull和run分开执行的好处是能清楚分辨是下载失败还是加载失败。手机内存小于 8G 的设备不建议硬上 8b 模型,加载后系统会频繁杀后台进程,实际体验会变成用一下就断一下,后面细说原因。
3.3 移动端硬件的边界:参数量、内存与发热的取舍
移动端跑 DeepSeek,真正决定成败的不是模型多聪明,而是设备内存和散热。7B 参数量、4bit 量化后的模型文件大约 4.4GB,运行时还需要额外内存做 KV Cache 和上下文窗口,这意味着 8GB 内存的手机在加载 8b 模型时,系统可用内存会被压到警戒线,后台应用被清是常态。我的判断标准很简单:8G 内存手机跑 7b 模型是上限,12G 及以上可以试 8b,6G 及以下基本只能羡慕。
发热是另一个被低估的问题。手机没有主动散热,持续推理三五分钟后,机身温度上来,处理器会强制降频,推理速度肉眼可见地变慢。如果你打算把手机当作固定服务长期跑,最好把设备接上电源放在通风处,并且用ollama serve的常驻模式而不是ollama run的交互模式——前者更稳定,还能让局域网内其他设备访问。
4. Open WebUI 部署:Docker 容器化让 DeepSeek 变成浏览器服务
终端交互只适合一个人用,真要给团队或业务流程提供服务,图形化界面是必需品。Open WebUI 是目前社区里最主流的方案,它把模型对话、参数调节、会话管理都做成了网页界面,而 Docker 负责把整个环境打包隔离,避免依赖污染宿主机。这章讲清楚从安装到出界面的完整链路,以及局域网共享时的几个关键参数。
4.1 Docker 安装 Open WebUI:容器化部署的基础链路
Open WebUI 官方推荐的部署方式是 Docker,因为它的依赖比较多,直接裸装很容易和本机的 Python 环境冲突。前提是先把 Docker Desktop 装好,Windows 和 macOS 用户注意 Docker Desktop 需要虚拟化支持,BIOS 里没开 VT-x 或 Hyper-V 的话,安装后起不来。
# 拉取 Open WebUI 镜像并启动容器 docker run -d \ -p 3000:8080 \ --add-host=host.docker.internal:host-gateway \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:main逐一拆解参数:-d后台运行;-p 3000:8080把容器内 8080 端口映射到宿主机 3000,浏览器访问http://localhost:3000就能打开界面;--add-host是容器内访问宿主机 Ollama 服务的关键,没有它 WebUI 连不上本地模型,这是新手最容易漏的配置;-v open-webui:/app/backend/data用命名卷持久化用户数据,升级容器后聊天记录不丢;--restart always让 Docker 守护进程在容器崩溃或开机时自动拉起服务,生产习惯。拉镜像时如果速度慢,给 Docker 配置国内镜像加速器是常规操作。
4.2 在 WebUI 中加载 DeepSeek:从模型选择到对话测试
容器跑起来后在浏览器打开localhost:3000,注册一个管理员账号进入主界面,接下来的流程全是图形化操作。点开左下角设置,进入模型管理页面,模型列表里能看到 Ollama 里已拉取的模型;如果列表是空的,先确认宿主机上 Ollama 是否在运行,以及容器有没有通过网络正确连接它。
模型选择对应的参数关系如下表:
| 模型标识 | 参数量 | 量化位数 | 推荐内存 | 适用场景 |
|---|---|---|---|---|
| deepseek-r1:7b | 7B | Q4_0 | 8G 以上 | 个人对话、代码生成 |
| deepseek-r1:8b | 8B | Q4_0 | 8G~16G | 移动端 / 中配 PC |
| deepseek-r1:32b | 32B | Q4_0 | 32G 以上 | 长文本推理、复杂任务 |
选好模型后点下载,WebUI 会直接调用 Ollama 拉取,完成后就能在“新建对话”里选择 DeepSeek 开始测试。WebUI 和终端交互有个明显区别:它会把上下文自动管理起来,多轮对话时历史消息作为上下文传给模型,相当于免去了你在终端里手动维护对话状态的麻烦。想验证模型效果时,让它写一段函数或分析一段文本,比单纯问答更能体现 DeepSeek-R1 的推理链路质量。
4.3 局域网共享与资源配置:从个人电脑到小团队服务
Open WebUI 的价值在于它天然是服务形态,同一局域网内其他人也能访问。默认配置下 Ollama 只监听localhost,必须改写成0.0.0.0才能让局域网其他机器通过 HTTP 访问:
# Linux/macOS 启动时指定监听地址 OLLAMA_HOST=0.0.0.0:11434 ollama serve # 验证局域网内另一台机器是否能访问 curl http://你的内网IP:11434OLLAMA_HOST=0.0.0.0:11434表示绑定所有网卡接口,这样内网其他设备才能通过这台机器的 IP 访问模型服务。这个参数有两个使用边界:第一,它只解决 Ollama 层的网络可达性,Open WebUI 容器内的--add-host配置依然需要,否则 WebUI 里模型列表仍然是空的;第二,小团队共用一台机器跑模型时,多用户并发请求会显著拉长响应时间,Ollama 默认是单任务排队,所以开共享前先确认机器内存能同时容纳模型权重和多人上下文,否则体验会很差。机器配置不够但又要多人用,优先考虑用 CPU 推理模式并限制最大并发数,而不是硬上高参数量模型。
5. 避坑与排查:部署 DeepSeek 时常见的五个翻车场景
这套流程我前后跑过几遍,每遍都踩了不一样的坑。下面五条是按出现频率排的,每条都按现象、原因、解决的顺序写清楚,能帮你省掉不少试错时间。
现象一:ollama run deepseek-r1:7b一直卡在 pulling 进度条,十几分钟不动。原因:默认模型仓库在境外,国内网络访问不稳定。解决:换国内可用的镜像源,或者在网络好的机器上先用ollama pull拉完,把 models 目录整个拷贝到目标机器。
现象二:Linux 下改了 OLLAMA_MODELS 路径,重启 Ollama 后ollama list里模型全没了。原因:Ollama 通过 systemd 管理时,用户级 shell 里export的环境变量对服务进程完全不生效。解决:用sudo systemctl edit ollama写入Environment="OLLAMA_MODELS=/新路径",然后daemon-reload加restart,两步缺一不可。改完路径后旧的模型文件还在原目录,需要手动移动目录再重启服务,不然新路径下看不到旧模型。
现象三:Termux 编译时go build .报错,提示找不到某些包或 CGO 编译失败。原因:缺依赖或系统变量未设置。解决:重新执行pkg install git cmake golang libjpegturbo确认依赖完整,然后go env检查 GOPATH 是否有权限写入,Termux 里务必先跑termux-setup-storage授权。还有一个常见笔误:官方命令里的git clone --depth 1如果手滑写成git clone depth 1,git 会把你克隆出一个错误目录,注意核对。
现象四:Open WebUI 界面打开正常,但模型列表是空的,下拉框里找不到 DeepSeek。原因:WebUI 容器和 Ollama 服务不在同一个网络可达域。解决:确认宿主机上 Ollama 已启动且监听0.0.0.0或至少能让 Docker 内部访问,重新创建容器并加上--add-host=host.docker.internal:host-gateway。Windows 的 Docker Desktop 偶尔会出现 host-gateway 解析失败的情况,重启 Docker Desktop 后再启动容器就能解决。
现象五:iPhone 快捷指令首次运行提示“无法运行”或请求一直失败。原因:API Key 格式填错,或者快捷指令没有获得网络权限。解决:先检查 Key 是否带有多余空格,再检查快捷指令的隐私设置里“允许访问”是否包含网络请求。iOS 对快捷指令的权限管理比较严格,首次运行用系统弹出的确认框逐项放行,不要批量跳过。
6. 验证部署质量的两个技巧:API 调用测试与接入自有应用
模型能对话只是第一步,真正要交付使用,得验证服务层的稳定性,并且把它接进自己的程序。最直接的验证方式是绕过 WebUI,直接打 Ollama 的 API 接口,这一步能明确区分是模型自身的问题还是上层界面的问题。
# 单次请求验证,不带上下文 curl http://localhost:11434/api/generate \ -d '{ "model": "deepseek-r1:7b", "prompt": "用一句话解释什么是大语言模型", "stream": false }'stream设为false表示等完整回复生成后一次性返回,适合测试时观察效果;设成true则是流式输出,适合 Web 聊天界面做到打字机效果。prompt是输入文本,model必须和ollama list里显示的标识完全一致,写错会直接返回 404。返回 JSON 里的response字段是生成内容,total_duration是总耗时,这个字段是评测机器性能最直观的指标。
如果你想把这个服务接入自己的应用,推荐用 OpenAI 兼容接口而不是上面这个原生接口。Ollama 支持 OpenAI SDK 直接调用,只需改 base_url:
from openai import OpenAI client = OpenAI( base_url="http://localhost:11434/v1", api_key="ollama" # 本地服务不校验,随便填 ) response = client.chat.completions.create( model="deepseek-r1:7b", messages=[ {"role": "system", "content": "你是 DeepSeek 助手,回答简洁准确。"}, {"role": "user", "content": "写一段 Python 实现冒泡排序"} ], temperature=0.7, max_tokens=2048 ) print(response.choices[0].message.content)base_url指向localhost:11434/v1就能沿用 OpenAI 的调用范式,团队里已有的 OpenAI 代码栈可以直接复用。temperature控制随机性,0.7 是对话场景的常用值,写代码或做抽取类任务可以降到 0.2;max_tokens限制单次最大输出长度,DeepSeek-R1 这类推理模型做复杂任务时容易在思考链上耗费大量 token,所以别把值设得太小。验证链路的顺序我之前是“终端对话 → curl 单次请求 → OpenAI SDK 接入”,每次都走一遍才放心。从那以后我每次换模型或换机器部署,都强制先跑一遍 curl 单次请求再交给上层应用,能省掉后续一整套排查问题的时间,希望帮到你。
本文还有配套的精品资源,点击获取