:Ollama、Open WebUI 與手機端全攻略)
簡介DeepSeek作為開源大模型如何在多種設備上高效部署是許多開發(fā)者關(guān)注的問題。這份文檔以圖文形式系統(tǒng)梳理了基于Ollama的本地部署、iOS與Android移動端部署以及借助Open WebUI的云端界面配置流程適合希望將DeepSeek落地到桌面系統(tǒng)、手機或Web界面的技術(shù)開發(fā)者、研究人員和AI愛好者。資源共1個文件為docx格式整體壓縮包大小僅15KB內(nèi)容精煉且步驟完整便于快速查閱與實操。已有4126人學習下載。文檔不僅給出Ollama安裝、模型拉取與交互命令還針對iPhone快捷指令配置API Key、Android端通過Termux編譯運行Ollama等典型場景提供了可復現(xiàn)的詳細指引并對Open WebUI與Docker Desktop的配合使用給出了明確說明可顯著降低初次接觸者的配置門檻提升跨平臺部署的成功率。1. 先把部署路線理清三套方案分別適合誰DeepSeek 的部署很多人第一步就卡在“不知道到底裝哪個”。照網(wǎng)上教程裝完 Ollama模型沒下下來想在手機上跑又搞不清快捷指令和 Termux 哪個靠譜。我最近把三套方案完整走了一遍Ollama 本地終端、iPhone/Android 手機端、Docker 里的 Open WebUI 網(wǎng)頁服務。這套資源把三條路的手工步驟、啟動參數(shù)和失敗日志都整理在一份指南里新手能照著命令敲熟手能直接翻第五章的高頻報錯。適合想在本地跑大模型、做實驗或自建 AI 工具鏈的開發(fā)者、研究人員和 AI 愛好者。2. 基于 Ollama 的本地部署從拉模型到跑通第一段對話2.1 為什么選 Ollama模型格式、量化與選型Ollama 是我見過的把大模型“Docker 化”做得最順手的工具。它把模型文件、運行參數(shù)和 API 服務封裝成一條命令本地起一個常駐進程之后所有模型統(tǒng)一走http://localhost:11434這個入口。對深度學習模型部署來說這意味著你不用關(guān)心模型原始權(quán)重放哪、依賴怎么裝只要拉鏡像一樣把模型 tag 拉下來就行。DeepSeek 這個系列給 Ollama 提供了多個尺寸的量化版本常見 tag 有deepseek-r1:1.5b、deepseek-r1:7b、deepseek-r1:8b、deepseek-r1:14b、deepseek-r1:32b。這里的 b 是參數(shù)量級7b 代表 70 億參數(shù)。真正影響你能不能跑起來的是量化精度Ollama 默認拉取的版本一般已經(jīng)做了 4-bit 量化模型文件體積大幅縮小推理時的顯存和內(nèi)存占用也隨之下降。模型 Tag量化后體積約內(nèi)存建議適用場景deepseek-r1:1.5b1.1 GB4 GB低配機器驗證鏈路deepseek-r1:7b4.7 GB16 GB日常對話、代碼生成deepseek-r1:14b9.0 GB32 GB更高推理質(zhì)量我一般會在只有 CPU 的機器上先用 1.5b 把整條鏈路跑通確認網(wǎng)絡和配置沒問題再換 7b。一上來直接拉 7b萬一網(wǎng)絡抖動或磁盤不足排錯成本會高很多。2.2 安裝 Ollama三個系統(tǒng)分別怎么裝安裝就一條命令但不同系統(tǒng)細節(jié)不一樣。macOS 和 Linux 都可以用安裝腳本W(wǎng)indows 則走圖形化安裝包。安裝完成后建議先確認版本號避免后續(xù)命令報錯時分不清是環(huán)境問題還是命令問題。# macOS / Linux 一體安裝腳本 curl -fsSL https://ollama.com/install.sh | sh # Windows下載 OllamaSetup.exe雙擊下一步完成安裝 # 安裝完成后驗證版本 ollama --version第一行命令會下載一個安裝腳本并交給 shell 執(zhí)行-fsSL里的f表示失敗時不輸出多余錯誤S表示顯示進度L表示跟隨重定向。Windows 安裝包裝完后Ollama 會注冊成后臺服務終端里直接能用ollama命令。如果 macOS 上提示“無法打開”去系統(tǒng)設置-隱私與安全性里點“仍要打開”即可這是系統(tǒng)對未簽名腳本的常規(guī)攔截不是安裝包問題。2.3 拉取并運行 DeepSeek 模型核心命令逐一拆解安裝完就能拉模型了。我建議第一次運行直接用ollama run它會自動完成拉取、加載和進入對話三步。模型文件會存到本地的~/.ollama/models目錄Linux 和 macOS 都是這個路徑Windows 則在用戶目錄下的.ollama文件夾里。# 首次運行會自動拉取模型等待時間取決于網(wǎng)絡 ollama run deepseek-r1:7b # 進入交互模式后直接輸入問題即可 # 退出交互模式用 /bye # 查看本機已有模型 ollama list # 只下載不進入對話 ollama pull deepseek-r1:7b # 刪除模型 ollama rm deepseek-r1:7bollama run做了三件事檢查本地有沒有這個 tag沒有就拉取加載模型到內(nèi)存啟動一個交互式 REPL。/bye退出后模型并不會立即卸載會常駐內(nèi)存等待下一次請求。如果機器內(nèi)存緊張把OLLAMA_KEEP_ALIVE環(huán)境變量設短一些比如OLLAMA_KEEP_ALIVE5m模型空閑 5 分鐘后自動釋放。服務起來之后Ollama 默認監(jiān)聽 11434 端口這個端口也是后面手機端和 Open WebUI 對接的入口??梢杂?curl 直接測一下curl http://localhost:11434/api/generate -d { model: deepseek-r1:7b, prompt: 用一句話介紹你自己, stream: false }這里的stream: false表示等完整回答生成后再一次性返回調(diào)試階段建議關(guān)閉流式輸出方便看 JSON 結(jié)構(gòu)。model字段必須和ollama list里的 tag 完全一致大小寫、冒號都不能錯否則會返回model not found。能拿到 JSON 響應說明本地模型服務已經(jīng)可以對外提供服務了這一步是后面所有跨平臺接入的基礎(chǔ)。3. 手機端部署iPhone 快捷指令與 Android Termux 兩套路線3.1 先想清楚手機端是調(diào)遠程 API 還是本地編譯手機端部署其實有兩條完全不同性質(zhì)的路。iPhone 那條快捷指令方案本質(zhì)是調(diào)遠程 API手機本身不做推理只是一個帶輸入框的轉(zhuǎn)發(fā)殼。Android 那條 Termux 方案才是真的在手機 CPU 上跑本地模型。選哪條取決于你要不要離線可用以及能不能接受發(fā)熱和速度。我的判斷是iPhone 用戶日常使用優(yōu)先走快捷指令加 API Key 的組合省電、響應快但每次請求都要聯(lián)網(wǎng)而且 API Key 如果泄露別人可以盜刷你的額度。Android 上有折騰精神、想體驗純離線推理的才值得在 Termux 里從源碼編譯 Ollama。8B 模型在旗艦手機上生成速度大約每秒幾個 token當玩具可以當生產(chǎn)力工具會把人急死。3.2 iPhone快捷指令加 API Key 配置iPhone 這條方案核心是把“發(fā)請求、拿結(jié)果、展示”封裝成一個快捷指令。安裝方式是從分享鏈接導入iOS 系統(tǒng)默認會攔截未受信任的快捷指令需要先到“設置-快捷指令”里打開“允許不受信任的快捷指令”。首次運行時系統(tǒng)彈窗問“允許訪問”這里必須選允許否則后續(xù)每次執(zhí)行都會卡在授權(quán)彈窗。操作步驟按順序來用 Safari 打開資源包里的快捷指令 iCloud 鏈接點擊“獲取快捷指令”完成導入。到提供 API Key 的服務商頁面創(chuàng)建一個 Key建議創(chuàng)建時就把權(quán)限限制為“僅可調(diào)用對話接口”不要給管理員權(quán)限。在快捷指令編輯頁里找到“文本”參數(shù)把 Key 粘貼進去替換掉原來的示例內(nèi)容?;氐阶烂孢\行這條快捷指令輸入“你好”能收到回復就算通了。配置里最容易翻車的是復制 Key 時帶上了換行符或空格。我習慣先粘到備忘錄里確認首尾沒有多余字符再復制進快捷指令。另一點是不同服務商的 API 地址可能不一樣如果快捷指令里的請求地址還是默認值需要手動改成你實際購買的接口地址這一步在指令的“URL”參數(shù)里能看到。3.3 AndroidTermux 環(huán)境搭建與 Ollama 編譯Android 的部署比 iPhone 重很多核心是在 Termux 這個終端模擬器里手動編譯 Ollama。Termux 相當于 Android 上的 Linux 環(huán)境有包管理器能裝 git、golang、cmake 這些工具鏈。原版指南里git clone depth 1是個筆誤正確寫法是--depth 1意思是只克隆最近一次提交能省掉大量 Git 歷史數(shù)據(jù)對手機流量很友好。# 設置存儲權(quán)限允許 Termux 訪問手機文件 termux-setup-storage # 更新軟件包索引并升級已有包首次運行必須做 pkg update pkg upgrade -y # 安裝編譯 Ollama 需要的依賴 pkg install git cmake golang libjpeg-turbolibjpeg-turbo是處理圖片數(shù)據(jù)的依賴不裝的話后面編譯可能報找不到頭文件的錯。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 ./...會掃描代碼里的生成指令把內(nèi)嵌的資源文件生成到對應目錄。go build .默認編譯當前包產(chǎn)物是一個名為ollama的可執(zhí)行文件。編譯過程比較吃內(nèi)存如果 Termux 報signal: killed多半是內(nèi)存不足被系統(tǒng)殺了可以先關(guān)掉其他 App 再重試。編譯完成后啟動服務# 后臺啟動 Ollama 服務 ./ollama serve # 驗證服務是否存活返回 Ollama is running 即成功 curl http://localhost:11434 # 拉取并運行 DeepSeek 模型 ./ollama pull deepseek-r1:8b ./ollama run deepseek-r1:8bserve默認只監(jiān)聽localhost意味著只有手機自己可以訪問。如果你希望用電腦或另一臺手機通過局域網(wǎng)訪問這臺手機上的模型需要改成./ollama serve --host 0.0.0.0:11434。注意符號把進程放到后臺Termux 一旦被系統(tǒng)回收后臺進程也會被殺死想長期掛著還得配合termux-wake-lock保持屏幕常駐。4. 基于 Open WebUI 的 Web 部署用 Docker 把界面和模型串起來4.1 Open WebUI 是什么為什么必須用 DockerOllama 本身只有命令行和 API沒有現(xiàn)代聊天界面。Open WebUI 是跑在瀏覽器里的對話前端支持多用戶登錄、會話歷史、模型參數(shù)調(diào)節(jié)還能直接對接本地 Ollama 服務。這一層是很多人部署 DeepSeek 時的剛需畢竟不是每個人都能習慣黑乎乎的終端。用 Docker 而不是直接用 Python 裝 Open WebUI是因為它依賴非常多Python 版本、Node 構(gòu)建、數(shù)據(jù)庫遷移一個不對就起不來。Docker 容器把運行時、代碼、配置全部打成一個鏡像宿主機只要裝一個 Docker Desktop其他全是容器內(nèi)部的事情。升級也方便刪掉舊容器、拉新鏡像、重新跑一遍同樣的命令就行。4.2 Docker Desktop 安裝與基礎(chǔ)檢查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 的資源設置里建議把內(nèi)存調(diào)到 4 GB 以上否則 Open WebUI 和 Ollama 同時跑可能互相擠內(nèi)存。4.3 部署 Open WebUI一條命令起一個服務Open WebUI 官方發(fā)布的容器鏡像可以直接從 GitHub Container Registry 拉取。部署命令需要把宿主機的 3000 端口映射到容器的 8080 端口同時掛載一個數(shù)據(jù)卷保存用戶賬號和會話記錄。最關(guān)鍵的是告訴容器 Ollama 服務在哪也就是OLLAMA_BASE_URL這個環(huán)境變量。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創(chuàng)建了一個命名卷容器刪了數(shù)據(jù)還在。host.docker.internal是 Docker 提供的一個特殊域名在容器內(nèi)部解析到宿主機 IPWindows 和 macOS 默認支持。Linux 環(huán)境下 Docker Desktop 沒有這個域名需要在命令末尾加一段--add-hosthost.docker.internal:host-gateway否則容器找不到 Ollama。瀏覽器打開http://localhost:3000第一次訪問會要求創(chuàng)建管理員賬號這是 Open WebUI 自己的用戶體系和 Ollama 無關(guān)。登錄后進左下角設置找到“模型管理”在輸入框里填deepseek-r1:7b點下載。下載完成后回到對話頁頂部模型下拉菜單里選 DeepSeek 就能開始聊天。如果你想把 Ollama 和 Open WebUI 分到兩臺機器OLLAMA_BASE_URL改成 Ollama 所在機器的局域網(wǎng) IP比如http://192.168.1.100:11434前提是 Ollama 啟動時加了--host 0.0.0.0。這個變量支持 HTTP 地址不推薦直接暴露到公網(wǎng)因為 Open WebUI 本身沒有內(nèi)置限流和鑒權(quán)公網(wǎng)裸奔很容易被掃到然后被別人白嫖算力。5. 避坑與排查四類高頻報錯的處理記錄5.1 模型拉取卡住Pulling 進度不走現(xiàn)象執(zhí)行ollama run deepseek-r1:7b后終端停在 “Pulling manifest” 或進度條長時間不動有時直接顯示 0%。原因Ollama 拉模型走的是官方模型倉庫這個倉庫在部分網(wǎng)絡環(huán)境下訪問很慢或直接超時。另一個可能原因是本地磁盤空間不足模型文件下到一半寫不進去但 Ollama 不會明確提示。解決先確認磁盤執(zhí)行df -h ~/.ollama看看剩余空間夠不夠模型體積的 1.2 倍??臻g沒問題的話拉取時加--verbose看詳細日志能直接看到是連接超時還是下載中斷。最簡單粗暴的辦法是ollama rm刪掉半截模型換個時間重新拉斷點續(xù)傳在 Ollama 里表現(xiàn)不穩(wěn)定與其等一個不確定的狀態(tài)不如重來。5.2 Termux 編譯 Ollama 時 go build 報錯現(xiàn)象go build .中途退出報錯信息包含undefined: unix.Stat_t或者整個進程直接被系統(tǒng)殺死。原因第一種是 Go 版本太老Ollama 依賴新版 Go 的系統(tǒng)調(diào)用接口Termux 默認源里的 Go 版本往往滯后。第二種是內(nèi)存不足手機編譯大型 Go 項目時峰值占用可能超過系統(tǒng)限制進程被殺沒有任何錯誤日志。解決先執(zhí)行g(shù)o version如果低于 1.22去 Go 官網(wǎng)下載新版 tarball 手動安裝。內(nèi)存問題優(yōu)先關(guān)后臺應用釋放內(nèi)存再執(zhí)行g(shù)o build -p 2 .限制并行編譯數(shù)為 2降低峰值占用。如果還不行把GOMAXPROCS也設成 2。別指望一次性成功我在手機上編譯至少試了三次才過前兩次都是內(nèi)存被殺。5.3 容器里的 Open WebUI 連不上 Ollama現(xiàn)象Open WebUI 頁面打開后新建對話直接報錯后臺日志顯示could not connect to ollama。原因容器里的localhost指的是容器自己不是宿主機。Open WebUI 容器內(nèi)部去訪問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進去改環(huán)境變量改了也不會生效。還有一個隱蔽坑Ollama 默認只監(jiān)聽 127.0.0.1如果 Ollama 跑在另一臺機器必須用--host 0.0.0.0啟動否則即使網(wǎng)絡通服務本身拒絕外部連接。5.4 快捷指令首次運行一直要授權(quán)現(xiàn)象iPhone 上運行快捷指令彈窗提示“允許訪問 xxx”每次都點允許但下一次運行還是會彈。原因iOS 對快捷指令訪問網(wǎng)絡的授權(quán)機制就是這樣首次必須手動允許。如果一直彈是因為指令里有多個網(wǎng)絡請求每個請求都要單獨授權(quán)一次。還有一種情況是 API Key 填錯服務端返回 401快捷指令就判定為請求失敗看起來也像授權(quán)問題。解決以最快路徑驗證 Key 是否有效在電腦上用 curl 直接請求一次對話接口能返回內(nèi)容就說明 Key 沒問題。如果 Key 沒問題建議刪掉快捷指令重新導入一次導入時不要改任何參數(shù)先跑通再改。改過 URL 參數(shù)后快捷指令會被視為新指令需要重新授權(quán)這個現(xiàn)象很容易讓人誤判成系統(tǒng)故障。6. 進階把 Ollama 接進自己的 Python 腳本6.1 用 requests 調(diào)用本地 API 構(gòu)建簡單工具部署和 Web UI 都跑通之后下一個自然需求是讓代碼調(diào)用模型。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控制隨機性值越低回答越穩(wěn)定代碼生成建議 0.2閑聊可以開到 0.8。num_predict限制生成的最大 token 數(shù)不設的話模型可能一直寫到上下文耗盡。如果 Ollama 跑在手機上或另一臺服務器把 URL 換成對應的 IP 即可前提是服務啟動時綁定了0.0.0.0。6.2 用 /api/chat 實現(xiàn)多輪對話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角色的消息用來設定身份和行為準則不屬于用戶對話內(nèi)容。需要注意這條路不會自動截斷歷史對話輪數(shù)多了上下文超過模型窗口后早期內(nèi)容會被截斷這時需要手動刪掉messages列表前幾項。從那以后我每次換環(huán)境部署 Ollama都強制自己走一遍完整驗證版本、模型列表、一次生成、一次對話四步全過才算部署完成。這套資源里的完整命令清單和報錯速查表能幫你把這幾步壓縮到半個小時以內(nèi)。希望幫到你。本文還有配套的精品資源點擊獲取