简介DeepSeek作为开源大模型如何在多种设备上高效部署是许多开发者关注的问题。这份文档以图文形式系统梳理了基于Ollama的本地部署、iOS与Android移动端部署以及借助Open WebUI的云端界面配置流程适合希望将DeepSeek落地到桌面系统、手机或Web界面的技术开发者、研究人员和AI爱好者。资源共1个文件为docx格式整体压缩包大小仅15KB内容精炼且步骤完整便于快速查阅与实操。已有4126人学习下载。文档不仅给出Ollama安装、模型拉取与交互命令还针对iPhone快捷指令配置API Key、Android端通过Termux编译运行Ollama等典型场景提供了可复现的详细指引并对Open WebUI与Docker Desktop的配合使用给出了明确说明可显著降低初次接触者的配置门槛提升跨平台部署的成功率。1. 先把部署路线理清三套方案分别适合谁DeepSeek 的部署很多人第一步就卡在“不知道到底装哪个”。照网上教程装完 Ollama模型没下下来想在手机上跑又搞不清快捷指令和 Termux 哪个靠谱。我最近把三套方案完整走了一遍Ollama 本地终端、iPhone/Android 手机端、Docker 里的 Open WebUI 网页服务。这套资源把三条路的手工步骤、启动参数和失败日志都整理在一份指南里新手能照着命令敲熟手能直接翻第五章的高频报错。适合想在本地跑大模型、做实验或自建 AI 工具链的开发者、研究人员和 AI 爱好者。2. 基于 Ollama 的本地部署从拉模型到跑通第一段对话2.1 为什么选 Ollama模型格式、量化与选型Ollama 是我见过的把大模型“Docker 化”做得最顺手的工具。它把模型文件、运行参数和 API 服务封装成一条命令本地起一个常驻进程之后所有模型统一走http://localhost:11434这个入口。对深度学习模型部署来说这意味着你不用关心模型原始权重放哪、依赖怎么装只要拉镜像一样把模型 tag 拉下来就行。DeepSeek 这个系列给 Ollama 提供了多个尺寸的量化版本常见 tag 有deepseek-r1:1.5b、deepseek-r1:7b、deepseek-r1:8b、deepseek-r1:14b、deepseek-r1:32b。这里的 b 是参数量级7b 代表 70 亿参数。真正影响你能不能跑起来的是量化精度Ollama 默认拉取的版本一般已经做了 4-bit 量化模型文件体积大幅缩小推理时的显存和内存占用也随之下降。模型 Tag量化后体积约内存建议适用场景deepseek-r1:1.5b1.1 GB4 GB低配机器验证链路deepseek-r1:7b4.7 GB16 GB日常对话、代码生成deepseek-r1:14b9.0 GB32 GB更高推理质量我一般会在只有 CPU 的机器上先用 1.5b 把整条链路跑通确认网络和配置没问题再换 7b。一上来直接拉 7b万一网络抖动或磁盘不足排错成本会高很多。2.2 安装 Ollama三个系统分别怎么装安装就一条命令但不同系统细节不一样。macOS 和 Linux 都可以用安装脚本Windows 则走图形化安装包。安装完成后建议先确认版本号避免后续命令报错时分不清是环境问题还是命令问题。# macOS / Linux 一体安装脚本 curl -fsSL https://ollama.com/install.sh | sh # Windows下载 OllamaSetup.exe双击下一步完成安装 # 安装完成后验证版本 ollama --version第一行命令会下载一个安装脚本并交给 shell 执行-fsSL里的f表示失败时不输出多余错误S表示显示进度L表示跟随重定向。Windows 安装包装完后Ollama 会注册成后台服务终端里直接能用ollama命令。如果 macOS 上提示“无法打开”去系统设置-隐私与安全性里点“仍要打开”即可这是系统对未签名脚本的常规拦截不是安装包问题。2.3 拉取并运行 DeepSeek 模型核心命令逐一拆解安装完就能拉模型了。我建议第一次运行直接用ollama run它会自动完成拉取、加载和进入对话三步。模型文件会存到本地的~/.ollama/models目录Linux 和 macOS 都是这个路径Windows 则在用户目录下的.ollama文件夹里。# 首次运行会自动拉取模型等待时间取决于网络 ollama run deepseek-r1:7b # 进入交互模式后直接输入问题即可 # 退出交互模式用 /bye # 查看本机已有模型 ollama list # 只下载不进入对话 ollama pull deepseek-r1:7b # 删除模型 ollama rm deepseek-r1:7bollama run做了三件事检查本地有没有这个 tag没有就拉取加载模型到内存启动一个交互式 REPL。/bye退出后模型并不会立即卸载会常驻内存等待下一次请求。如果机器内存紧张把OLLAMA_KEEP_ALIVE环境变量设短一些比如OLLAMA_KEEP_ALIVE5m模型空闲 5 分钟后自动释放。服务起来之后Ollama 默认监听 11434 端口这个端口也是后面手机端和 Open WebUI 对接的入口。可以用 curl 直接测一下curl http://localhost:11434/api/generate -d { model: deepseek-r1:7b, prompt: 用一句话介绍你自己, stream: false }这里的stream: false表示等完整回答生成后再一次性返回调试阶段建议关闭流式输出方便看 JSON 结构。model字段必须和ollama list里的 tag 完全一致大小写、冒号都不能错否则会返回model not found。能拿到 JSON 响应说明本地模型服务已经可以对外提供服务了这一步是后面所有跨平台接入的基础。3. 手机端部署iPhone 快捷指令与 Android Termux 两套路线3.1 先想清楚手机端是调远程 API 还是本地编译手机端部署其实有两条完全不同性质的路。iPhone 那条快捷指令方案本质是调远程 API手机本身不做推理只是一个带输入框的转发壳。Android 那条 Termux 方案才是真的在手机 CPU 上跑本地模型。选哪条取决于你要不要离线可用以及能不能接受发热和速度。我的判断是iPhone 用户日常使用优先走快捷指令加 API Key 的组合省电、响应快但每次请求都要联网而且 API Key 如果泄露别人可以盗刷你的额度。Android 上有折腾精神、想体验纯离线推理的才值得在 Termux 里从源码编译 Ollama。8B 模型在旗舰手机上生成速度大约每秒几个 token当玩具可以当生产力工具会把人急死。3.2 iPhone快捷指令加 API Key 配置iPhone 这条方案核心是把“发请求、拿结果、展示”封装成一个快捷指令。安装方式是从分享链接导入iOS 系统默认会拦截未受信任的快捷指令需要先到“设置-快捷指令”里打开“允许不受信任的快捷指令”。首次运行时系统弹窗问“允许访问”这里必须选允许否则后续每次执行都会卡在授权弹窗。操作步骤按顺序来用 Safari 打开资源包里的快捷指令 iCloud 链接点击“获取快捷指令”完成导入。到提供 API Key 的服务商页面创建一个 Key建议创建时就把权限限制为“仅可调用对话接口”不要给管理员权限。在快捷指令编辑页里找到“文本”参数把 Key 粘贴进去替换掉原来的示例内容。回到桌面运行这条快捷指令输入“你好”能收到回复就算通了。配置里最容易翻车的是复制 Key 时带上了换行符或空格。我习惯先粘到备忘录里确认首尾没有多余字符再复制进快捷指令。另一点是不同服务商的 API 地址可能不一样如果快捷指令里的请求地址还是默认值需要手动改成你实际购买的接口地址这一步在指令的“URL”参数里能看到。3.3 AndroidTermux 环境搭建与 Ollama 编译Android 的部署比 iPhone 重很多核心是在 Termux 这个终端模拟器里手动编译 Ollama。Termux 相当于 Android 上的 Linux 环境有包管理器能装 git、golang、cmake 这些工具链。原版指南里git clone depth 1是个笔误正确写法是--depth 1意思是只克隆最近一次提交能省掉大量 Git 历史数据对手机流量很友好。# 设置存储权限允许 Termux 访问手机文件 termux-setup-storage # 更新软件包索引并升级已有包首次运行必须做 pkg update pkg upgrade -y # 安装编译 Ollama 需要的依赖 pkg install git cmake golang libjpeg-turbolibjpeg-turbo是处理图片数据的依赖不装的话后面编译可能报找不到头文件的错。golang是 Ollama 的主语言版本太老会导致编译失败装完可以用go version确认。如果 Termux 官方源里的 Go 版本不够新需要从源码安装新版这一步我建议直接看go.dev的安装指引不要指望pkg install能给你最新版。依赖装完后开始克隆仓库和编译# 克隆 Ollama 源码--depth 1 只拉最新提交 git clone --depth 1 https://github.com/ollama/ollama.git cd ollama # 生成必要的代码文件会跑一会儿 go generate ./... # 编译主程序输出文件在当前目录 go build .go generate ./...会扫描代码里的生成指令把内嵌的资源文件生成到对应目录。go build .默认编译当前包产物是一个名为ollama的可执行文件。编译过程比较吃内存如果 Termux 报signal: killed多半是内存不足被系统杀了可以先关掉其他 App 再重试。编译完成后启动服务# 后台启动 Ollama 服务 ./ollama serve # 验证服务是否存活返回 Ollama is running 即成功 curl http://localhost:11434 # 拉取并运行 DeepSeek 模型 ./ollama pull deepseek-r1:8b ./ollama run deepseek-r1:8bserve默认只监听localhost意味着只有手机自己可以访问。如果你希望用电脑或另一台手机通过局域网访问这台手机上的模型需要改成./ollama serve --host 0.0.0.0:11434。注意符号把进程放到后台Termux 一旦被系统回收后台进程也会被杀死想长期挂着还得配合termux-wake-lock保持屏幕常驻。4. 基于 Open WebUI 的 Web 部署用 Docker 把界面和模型串起来4.1 Open WebUI 是什么为什么必须用 DockerOllama 本身只有命令行和 API没有现代聊天界面。Open WebUI 是跑在浏览器里的对话前端支持多用户登录、会话历史、模型参数调节还能直接对接本地 Ollama 服务。这一层是很多人部署 DeepSeek 时的刚需毕竟不是每个人都能习惯黑乎乎的终端。用 Docker 而不是直接用 Python 装 Open WebUI是因为它依赖非常多Python 版本、Node 构建、数据库迁移一个不对就起不来。Docker 容器把运行时、代码、配置全部打成一个镜像宿主机只要装一个 Docker Desktop其他全是容器内部的事情。升级也方便删掉旧容器、拉新镜像、重新跑一遍同样的命令就行。4.2 Docker Desktop 安装与基础检查Docker Desktop 在 macOS 和 Windows 上都是图形化安装包Linux 则是通过 apt 安装 docker-ce 套件。装完后先确认守护进程起来了# 确认 Docker 客户端和服务端都正常 docker --version docker psdocker ps如果报错 “Cannot connect to the Docker daemon”说明 Docker Desktop 没有启动去应用列表里点开等它完成初始化。另外确认一下docker compose是否可用后面如果要按 YAML 方式编排 Open WebUI 会用到。Docker Desktop 的资源设置里建议把内存调到 4 GB 以上否则 Open WebUI 和 Ollama 同时跑可能互相挤内存。4.3 部署 Open WebUI一条命令起一个服务Open WebUI 官方发布的容器镜像可以直接从 GitHub Container Registry 拉取。部署命令需要把宿主机的 3000 端口映射到容器的 8080 端口同时挂载一个数据卷保存用户账号和会话记录。最关键的是告诉容器 Ollama 服务在哪也就是OLLAMA_BASE_URL这个环境变量。docker run -d \ --name open-webui \ -p 3000:8080 \ -v open-webui:/app/backend/data \ -e OLLAMA_BASE_URLhttp://host.docker.internal:11434 \ ghcr.io/open-webui/open-webui:main-d表示后台运行。-v open-webui:/app/backend/data创建了一个命名卷容器删了数据还在。host.docker.internal是 Docker 提供的一个特殊域名在容器内部解析到宿主机 IPWindows 和 macOS 默认支持。Linux 环境下 Docker Desktop 没有这个域名需要在命令末尾加一段--add-hosthost.docker.internal:host-gateway否则容器找不到 Ollama。浏览器打开http://localhost:3000第一次访问会要求创建管理员账号这是 Open WebUI 自己的用户体系和 Ollama 无关。登录后进左下角设置找到“模型管理”在输入框里填deepseek-r1:7b点下载。下载完成后回到对话页顶部模型下拉菜单里选 DeepSeek 就能开始聊天。如果你想把 Ollama 和 Open WebUI 分到两台机器OLLAMA_BASE_URL改成 Ollama 所在机器的局域网 IP比如http://192.168.1.100:11434前提是 Ollama 启动时加了--host 0.0.0.0。这个变量支持 HTTP 地址不推荐直接暴露到公网因为 Open WebUI 本身没有内置限流和鉴权公网裸奔很容易被扫到然后被别人白嫖算力。5. 避坑与排查四类高频报错的处理记录5.1 模型拉取卡住Pulling 进度不走现象执行ollama run deepseek-r1:7b后终端停在 “Pulling manifest” 或进度条长时间不动有时直接显示 0%。原因Ollama 拉模型走的是官方模型仓库这个仓库在部分网络环境下访问很慢或直接超时。另一个可能原因是本地磁盘空间不足模型文件下到一半写不进去但 Ollama 不会明确提示。解决先确认磁盘执行df -h ~/.ollama看看剩余空间够不够模型体积的 1.2 倍。空间没问题的话拉取时加--verbose看详细日志能直接看到是连接超时还是下载中断。最简单粗暴的办法是ollama rm删掉半截模型换个时间重新拉断点续传在 Ollama 里表现不稳定与其等一个不确定的状态不如重来。5.2 Termux 编译 Ollama 时 go build 报错现象go build .中途退出报错信息包含undefined: unix.Stat_t或者整个进程直接被系统杀死。原因第一种是 Go 版本太老Ollama 依赖新版 Go 的系统调用接口Termux 默认源里的 Go 版本往往滞后。第二种是内存不足手机编译大型 Go 项目时峰值占用可能超过系统限制进程被杀没有任何错误日志。解决先执行go version如果低于 1.22去 Go 官网下载新版 tarball 手动安装。内存问题优先关后台应用释放内存再执行go build -p 2 .限制并行编译数为 2降低峰值占用。如果还不行把GOMAXPROCS也设成 2。别指望一次性成功我在手机上编译至少试了三次才过前两次都是内存被杀。5.3 容器里的 Open WebUI 连不上 Ollama现象Open WebUI 页面打开后新建对话直接报错后台日志显示could not connect to ollama。原因容器里的localhost指的是容器自己不是宿主机。Open WebUI 容器内部去访问localhost:11434自然找不到宿主机的 Ollama 服务。Linux 用户用host.docker.internal还会报解析不了因为这个域名默认只在 Docker Desktop 的 VM 里生效。解决容器启动命令里把OLLAMA_BASE_URL改成http://host.docker.internal:11434Linux 再加--add-hosthost.docker.internal:host-gateway。改完删掉旧容器重新跑不要docker exec进去改环境变量改了也不会生效。还有一个隐蔽坑Ollama 默认只监听 127.0.0.1如果 Ollama 跑在另一台机器必须用--host 0.0.0.0启动否则即使网络通服务本身拒绝外部连接。5.4 快捷指令首次运行一直要授权现象iPhone 上运行快捷指令弹窗提示“允许访问 xxx”每次都点允许但下一次运行还是会弹。原因iOS 对快捷指令访问网络的授权机制就是这样首次必须手动允许。如果一直弹是因为指令里有多个网络请求每个请求都要单独授权一次。还有一种情况是 API Key 填错服务端返回 401快捷指令就判定为请求失败看起来也像授权问题。解决以最快路径验证 Key 是否有效在电脑上用 curl 直接请求一次对话接口能返回内容就说明 Key 没问题。如果 Key 没问题建议删掉快捷指令重新导入一次导入时不要改任何参数先跑通再改。改过 URL 参数后快捷指令会被视为新指令需要重新授权这个现象很容易让人误判成系统故障。6. 进阶把 Ollama 接进自己的 Python 脚本6.1 用 requests 调用本地 API 构建简单工具部署和 Web UI 都跑通之后下一个自然需求是让代码调用模型。Ollama 的 API 是纯 HTTP因此只要requests就能接入。我常用的是api/generate接口它会生成一个完整答案。把stream改成true则按流式返回适合做流式输出的聊天应用。import requests payload { model: deepseek-r1:7b, prompt: 用三句话解释什么是跨平台部署, stream: False, options: { temperature: 0.7, num_predict: 512 } } r requests.post(http://localhost:11434/api/generate, jsonpayload) data r.json() print(data[response])temperature控制随机性值越低回答越稳定代码生成建议 0.2闲聊可以开到 0.8。num_predict限制生成的最大 token 数不设的话模型可能一直写到上下文耗尽。如果 Ollama 跑在手机上或另一台服务器把 URL 换成对应的 IP 即可前提是服务启动时绑定了0.0.0.0。6.2 用 /api/chat 实现多轮对话api/generate每次请求只认一段 prompt不适合做多轮对话。换成api/chat接口把历史消息按列表传进去Ollama 会自己维护上下文。import requests messages [ {role: system, content: 你是一个熟悉 Docker 的运维工程师}, {role: user, content: 容器里访问不到宿主机服务怎么办} ] r requests.post(http://localhost:11434/api/chat, json{ model: deepseek-r1:7b, messages: messages, stream: False }) print(r.json()[message][content])system角色的消息用来设定身份和行为准则不属于用户对话内容。需要注意这条路不会自动截断历史对话轮数多了上下文超过模型窗口后早期内容会被截断这时需要手动删掉messages列表前几项。从那以后我每次换环境部署 Ollama都强制自己走一遍完整验证版本、模型列表、一次生成、一次对话四步全过才算部署完成。这套资源里的完整命令清单和报错速查表能帮你把这几步压缩到半个小时以内。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?