Ubuntu 24.04本地部署大模型:Ollama+Open WebUI完整指南

发布时间:2026/10/19 7:10:21

Ubuntu 24.04本地部署大模型:Ollama+Open WebUI完整指南 想在一台 Ubuntu 24.04 服务器上跑自己的大模型服务又不想把数据交给外部 APIOpen WebUI 配合 Ollama 是目前我试下来最省心的一套本地方案。它解决的问题很直接Ollama 负责把开源模型拉下来跑推理Open WebUI 提供一个像模像样的网页聊天界面两者通过一个 OpenAI 兼容的接口对接起来。无论你只有一台闲置 PC还是配置不错的专用服务器都能照着这条路搭出一套可日常使用的对话服务。这篇文章我会把整套部署过程按“环境检查 - Ollama - Open WebUI - 联调测试 - 守护进程”的顺序写清楚。每一步除了给命令还会解释为什么这么做以及我第一次装的时候在哪里卡过。如果你之前没碰过 Linux 服务器也能照做如果已经有一定基础可以直接跳到第 3 章之后看部署细节。1. 为什么是 Ollama Open WebUI而不是直接跑 Web 服务先聊清楚选型很多人一上来就急着敲命令结果装完发现不是自己想要的东西。Ollama 和 Open WebUI 是两条独立的东西。Ollama 专注做一件事管理模型文件、启动本地推理服务。它本身不带聊天界面启动后默认监听 11434 端口提供的是一个 HTTP API。你直接用 curl 也能跟它对话但没有任何图形界面对普通用户不友好。Open WebUI 补上了这一层它负责提供网页聊天窗口、历史会话、文档上传、用户管理等体验类功能。这两者为什么能配合Open WebUI 内部实现了 OpenAI 兼容接口的客户端而 Ollama 从某个版本开始对外暴露了/v1路径专门兼容 OpenAI 的请求格式。所以 Open WebUI 只要把请求地址指向 Ollama 的 11434 端口就能像调用外部大模型 API 一样调用本地模型不需要写胶水代码也不需要改模型文件。从实际需求角度看这种组合适合三类人数据敏感的团队文本内容不出内网不经过第三方服务适合内部知识库、工单助手这类场景。想反复试模型的人Ollama 切换模型只需要一条命令同一个 WebUI 界面可以对应多个底模不用每个模型搭一套 UI。刚入门本地大模型的人部署链路短不需要懂 Kubernetes也不需要自己写推理服务一个 Docker 容器加一个二进制文件就能跑起来。反过来说如果你追求的是训练模型或者精细调优那这套方案不适合你Ollama 更适合推理而不是训练。如果只是临时调几个 API 玩一下也不用部署 WebUI直接 Ollama 就够了。认清边界后续才不会白折腾。2. 动手前先检查环境Ubuntu 24.04 上最容易出问题的三个地方很多人部署失败不是因为命令错了而是基础环境不对。我建议先花十分钟把下面三件事确认完比出错之后排错要省时间得多。2.1 系统版本、内存、磁盘空间Ubuntu 24.04 的版本号可以直接用lsb_release -a查看。理论上 22.04 甚至 20.04 也适用于本文大部分命令但 24.04 的 Python 是 3.12软件源里的 Docker 版本也较新整体兼容性更省心。内存和磁盘分别关乎推理速度和能否下载模型。我自己的判断标准是内存跑 7B 到 8B 参数量的模型建议至少 16GB 内存32GB 会比较从容。内存不够也能跑但加载模型和对话速度都会变慢。磁盘模型文件不是小东西。7B 模型 Q4 量化后大约 4.7GB14B 约 9GB32B 约 20GB70B 级别要 40GB 往上。如果只是试一试预留 50GB如果打算长期用建议给模型单独挂一块数据盘而不是堆在系统盘。检查命令很简单free -h df -h /如果磁盘空间不够有些朋友会临时把模型目录软链到移动硬盘我不建议这么做USB 外置盘的读写延迟会让模型加载和推理都很难受最好是 SATA SSD 或 NVMe。2.2 NVIDIA 驱动与显卡情况Ubuntu 24.04 默认内核是 6.8系统自带的显卡驱动是开源的 nouveau。如果你有一块 NVIDIA 显卡直接用开源驱动跑 Ollama 大概率会失败或者加载模型极慢。Ollama 的 CUDA 后端需要安装 NVIDIA 官方闭源驱动。先看显卡型号lspci | grep -i nvidia nvidia-sminvidia-smi如果提示 command not found说明驱动没装。在 Ubuntu 上最省事的方式是sudo ubuntu-drivers list这个命令会列出当前系统支持的闭源驱动版本通常会有 recommended 标记。然后直接sudo ubuntu-drivers install sudo reboot重启后再看nvidia-smi如果能正常显示显卡型号和显存就说明驱动就位了。没有 NVIDIA 显卡也不用放弃Ollama 支持 CPU 推理只是速度慢不少。比如 7B 模型在纯 CPU 环境下每秒生成几个 token 是正常水平拿来聊天能忍做文档分析会比较痛苦。如果你的机器只有 CPU建议先选 7B 以下的模型试水。2.3 防火墙、端口和 Python 环境Ubuntu 24.04 默认不一定启用了 UFW 防火墙但如果你之前手动开过需要确保 11434 和 3000 这两个端口是放行的。11434 是 Ollama 的 API 端口3000 是 Open WebUI 的默认 Web 端口。sudo ufw status sudo ufw allow 11434/tcp sudo ufw allow 3000/tcp如果是在云服务器上部署还要去安全组控制台放行对应的入方向规则这个很容易漏。另外要注意如果你打算用 Open WebUI 的 pip 方式安装系统 Python 环境尽量别直接用开一个虚拟环境是更安全的选择具体我在第 4 章说。3. 安装 Ollama官方脚本、存储目录与常用运维配置Ollama 的安装是整套方案里最简单的一环但安装完之后的存储调整和并发参数设置才是真正影响长期使用体验的地方。3.1 官方安装脚本与手动安装两条路官方推荐一条命令curl -fsSL https://ollama.com/install.sh | sh这个脚本会检测操作系统架构把 Ollama 二进制放到/usr/local/bin同时配置好一个 systemd 服务。安装完直接ollama --version看版本。如果你不想用脚本也可以去官方仓库下载二进制包手动解压放到任意目录然后自己写 systemd 服务。脚本安装对绝大多数人来说就够了手动安装更适合“二进制必须放在指定路径”的管控型环境。这里有个新手容易困惑的点安装完成后ollama命令是有了但服务并不会自动启动。启动方式sudo systemctl start ollama sudo systemctl status ollama服务启动后可以用curl http://127.0.0.1:11434试一下能返回Ollama is running之类的响应就说明正常。3.2 模型存储目录一定要提前规划Ollama 默认把模型放在/usr/share/ollama/.ollama/modelsroot 安装时或者当前用户目录下的.ollama/models。问题在于很多人的服务器系统盘不大而模型动辄十几 GB很容易把根目录塞满。我建议安装完成后、下载第一个模型之前先把存储目录改到数据盘。方法是通过 systemd 的环境变量覆盖sudo systemctl edit ollama在打开的文件里加[Service] EnvironmentOLLAMA_MODELS/data/ollama/models保存后执行sudo systemctl daemon-reload sudo systemctl restart ollama然后ollama list确认没有报错再检查一下/data/ollama/models目录是否自动创建。这个步骤看起来多花两分钟但能避免几个月后“磁盘已满Ollama 无法写入新模型”的尴尬。3.3 并发参数与基础运维命令Ollama 默认的并发处理能力偏保守。如果你的服务器内存和显卡都足够但一次只能处理一个对话体验会比较差。可以通过环境变量OLLAMA_NUM_PARALLEL调整同时处理的请求数sudo systemctl edit ollama[Service] EnvironmentOLLAMA_NUM_PARALLEL4数字不是越大越好它取决于显存。7B 模型 Q4 量化大约占 5~6GB 显存如果你的卡是 24GB并发 4 基本没问题如果是 8GB 卡设置并发 2 都容易显存溢出。建议先从 2 试观察nvidia-smi的显存占用和ollama ps的输出再逐步往上加。日常运维里最常用的命令也就这几个ollama list # 查看本地已下载的模型 ollama ps # 查看当前正在运行的模型 ollama pull 模型名 # 下载模型 ollama rm 模型名 # 删除模型 ollama run 模型名 # 命令行直接对话ollama ps很多人不看但它很有用。当觉得对话变慢时看一眼这里有没有多个模型驻留显存如果有且不是你立刻要用的用ollama stop 模型名把它清掉能明显释放显存。4. 安装 Open WebUIDocker、pip、源码三种方式的取舍Open WebUI 的官方文档给了多种安装方式实际能选的也就三种Docker、pip、源码运行。我给一个明确的建议有 Docker 就用 Docker没有 Docker 再用 pip。4.1 Docker 方式最省心也最推荐Docker 方式把所有依赖打包在镜像里不需要担心前端编译、Python 包冲突、Node 环境缺失这些事。命令如下docker run -d \ --name open-webui \ --restart always \ -p 3000:8080 \ --add-hosthost.docker.internal:host-gateway \ -v open-webui-data:/app/backend/data \ open-webui/open-webui:main逐行解释一下-p 3000:8080宿主机 3000 端口映射到容器内 8080 端口。--add-hosthost.docker.internal:host-gateway让容器内可以通过host.docker.internal访问宿主机。因为 Ollama 跑在宿主机上而 Open WebUI 在容器里没有这一行容器默认访问不到宿主机服务。-v open-webui-data:/app/backend/data持久化数据卷。Open WebUI 的数据库、密钥、用户信息都存在这里。不映射的话容器一删全没。Docker 方式唯一的痛点是镜像拉取速度。如果你发现docker pull非常慢可以在 Docker 配置文件里配置公共镜像加速器具体地址每个服务商不一样选自己网络可达的即可。实在拉不动就切到 pip 方式。4.2 pip 方式适合没有 Docker 的轻量机器如果你的服务器不打算装 Docker或者内存本身就紧张pip 方式可以少一层容器开销。Ubuntu 24.04 自带 Python 3.12先建虚拟环境python3 -m venv venv source venv/bin/activate pip install -U open-webui启动open-webui serve --host 0.0.0.0 --port 8080这里有一个很多人会踩的坑如果你直接pip install open-webui它会装到系统 Python 目录以后升级或者卸载容易跟系统包互相干扰。用虚拟环境能避免这个问题。另外Open WebUI 依赖的包里有不少需要编译的组件如果你的服务器 CPU 老安装过程可能比较慢耐心等就行。pip 方式下 Open WebUI 和宿主机 Ollama 的通信没有容器网络隔离默认配置就能连通反而省了配置这一步。4.3 源码方式适合要改代码的人如果你打算二次开发比如改前端界面或者加自定义逻辑才需要走源码安装git clone 官方仓库 cd open-webui python3 -m venv venv source venv/bin/activate pip install -e .源码方式能让你改完代码重启即生效但安装依赖时间最长第一次启动还要等前端资源构建。普通用户不建议碰这种方式。4.4 三种方式对比方式适合场景依赖复杂度升级难度资源占用Docker绝大多数人低镜像自带低换镜像重建多一层容器开销pip无 Docker 的轻量环境中依赖较多中venv 内升级较低源码二次开发、改 UI高前后端都要装高需处理合并最高我自己的选择逻辑很简单能 Docker 就 Docker。原因是升级方便docker pull新镜像再重建容器即可不用管 Python 依赖怎么迁移。但如果你在国内网络环境下镜像拉不动pip 方式才是备选。5. 第一次对话前的最后几步模型选择、接口联调与常见坑环境都装好了不等于能直接对话。Open WebUI 第一次启动会有一个初始化流程Ollama 也需要把模型拉下来。这中间有几个细节经常卡人。5.1 模型选择不是越大越好先看显存再看算力Ollama 模型库里有大量模型可选新手最常犯的错误是一上来就选 70B 级别的模型然后发现对话速度慢到无法接受。我列一个粗略的对照表量化精度以 Q4 为主模型参数量量化后体积推荐显存适合场景7B约 4.7GB8GB 起步日常聊天、轻量问答8B约 4.9GB8-10GB通用对话、代码助手14B约 9GB16GB 起步需要更好推理能力的场景32B约 20GB24-32GB复杂逻辑、长文本分析70B约 40GB48GB 以上高质量生成资源要求高选模型的关键不只看参数量还要看显存余量。显存不够时 Ollama 会把部分层放到内存里速度骤降。如果显卡只有 8GB老老实实跑 7B/8B 模型流畅度远比纸面参数重要。下载模型用ollama pull 模型名下载速度取决于你的网络。如果拉取过程中反复超时可以多试几次或者换个网络环境再拉。模型下载是支持断点续传的中断后重新执行 pull 会继续。5.2 第一次打开 WebUI管理员账号不能乱填浏览器访问http://服务器IP:3000Open WebUI 会要求先注册账号。这里有一个重要规则第一个注册的账号会被自动设为管理员。这是一个我踩过的坑初次试用时随手输了一个测试账号后面正式使用想换管理员才发现 Open WebUI 没有自助找回/转移管理员的功能只能进数据库操作或者清空数据卷重来。所以第一次注册时一定要想好管理员账号和密码最好用组织内部统一规划的账号名。注册完成登录后进入设置页面看“外部连接”或者“Ollama API”相关配置。默认情况下 Open WebUI 会自动探测同主机的 Ollama地址一般是http://localhost:11434。这里分两种情况如果 Open WebUI 和 Ollama 在同一台宿主机且 Open WebUI 用 pip 方式运行通常不需要改配置。如果 Open WebUI 在 Docker 容器里Ollama 在宿主机需要把 Ollama 地址改成http://host.docker.internal:11434。因为我们前面 docker run 时加了--add-hosthost.docker.internal:host-gateway这个地址是通的。改完地址保存回到对话页面如果左侧模型列表是空的去模型选择框里选一个已下载的模型再开始对话。如果提示连接失败多半是地址没改对回到设置里检查。5.3 对话参数和联网搜索Open WebUI 的对话界面里展开高级设置能看到 temperature、top_p 等参数。这些参数不是越高越好temperature 控制随机性。0.1 到 0.3 适合代码生成、事实问答0.7 以上适合创意写作。top_p 一般保持默认 0.9 即可不需要频繁调整。另外 Open WebUI 自带联网搜索能力但它依赖外部搜索 API。需要你自己注册搜索服务商并取得 API Key然后在设置页填入。这里注意填 Key 之前先确认这台服务器能访问对应服务商的接口网络不可达的话配置了也搜不了。如果网络条件受限干脆不开启联网搜索只作为纯本地知识问答来用反而更稳。5.4 最容易忽略的模型加载缓存与首次响应慢第一次调用某个模型时Ollama 需要把模型文件从磁盘加载到内存和显存这个过程会持续几十秒甚至一分钟然后才有响应。这不是故障只是首次加载的冷启动开销。如果你发现后续对话依然很慢可以打开一个终端执行ollama ps看模型是否驻留。如果模型在ollama ps里消失了说明它的空闲超时默认值到了五六分钟已经在后台自动卸载。这时重新发起对话又会重新加载。要想减少这种等加载的现象可以通过环境变量OLLAMA_KEEP_ALIVE调整驻留时间单位是秒[Service] EnvironmentOLLAMA_KEEP_ALIVE86400设置成 86400 表示让模型在显存里驻留一天只要显存够响应速度会稳定很多。但要注意长时间驻留会影响其他模型加载如果显存不够大建议设成 1800 左右即可。6. 部署完之后的“生产化”开机自启、日志查看和常见维修只是能对话不算完事。一台服务器上跑服务至少要保证重启后能自动恢复、日志能看、出问题能快速定位。这一章我按自己的操作习惯写一遍。6.1 Ollama 和 Open WebUI 的开机自启如果你用的是官方安装脚本安装的 Ollama它已经注册为 systemd 服务自启是默认开启的sudo systemctl enable ollamaOpen WebUI 要分两种情况。Docker 方式下如果创建容器时带了--restart always重启后容器会自动拉起。pip 方式则要自己写 systemd 服务[Unit] DescriptionOpen WebUI Afternetwork.target [Service] User你的用户名 Group你的用户组 WorkingDirectory/你的目录/venv EnvironmentPATH/你的目录/venv/bin ExecStart/你的目录/venv/bin/open-webui serve --host 0.0.0.0 --port 8080 Restartalways [Install] WantedBymulti-user.target保存后sudo systemctl daemon-reload sudo systemctl enable open-webui sudo systemctl start open-webui把用户名、目录替换成实际值注意WorkingDirectory和ExecStart里的路径都要指向你的虚拟环境。6.2 日志查看和性能观察出问题先看日志这是排查的第一步不要盲目重装。Ollama 日志sudo journalctl -u ollama -fOpen WebUI 容器日志docker logs -f open-webuipip 方式的话journalctl -u open-webui -f性能观察方面nvidia-smi不能只盯着显存占用看还要关注功耗和 GPU 利用率。如果 GPU-Util 接近 100%说明推理负载重对话排队是正常的。如果 GPU-Util 只有个位数但响应也慢有可能是模型部分层在 CPU 上跑或者是 OLLAMA_NUM_PARALLEL 设置得太小导致请求排队。内存层面用free -h看可用内存特别注意 swap 是否被大量使用。一旦开始用 swap对话速度会断崖式下跌。6.3 磁盘膨胀与模型清理Open WebUI 的数据卷会随时间增长主要是历史会话和文档上传。如果你长期不清理几百 MB 甚至几个 GB 都是正常的。Docker 数据卷清理要看实际情况别动不动就把整个卷删掉那会连管理员账号一起删没。比较安全的清理思路是定期在 WebUI 设置里删除不用的历史会话而不是直接操作数据库文件。模型层面也一样用ollama list看哪些模型长期没用用ollama rm释放空间。6.4 升级与回滚升级 Ollama 和 Open WebUI 其实没有官方一键命令但也不复杂。Ollama 重新跑一次安装脚本即可curl -fsSL https://ollama.com/install.sh | sh脚本会保留已有模型不会覆盖模型文件。Open WebUI 如果是 Docker 方式先拉新镜像再重建容器docker pull open-webui/open-webui:main docker stop open-webui docker rm open-webui docker run ... # 用之前同一套参数重建因为数据卷独立于容器重建不会丢账号和会话。pip 方式则是pip install -U open-webui。升级前的好习惯先拍一个数据卷快照或者备份一下/usr/share/ollama/.ollama/models目录的清单。出问题能退回旧版本至少能知道之前是哪条命令让服务跑起来的。整套环境正常跑起来之后我的最大感受是本地部署大模型的门槛并不在安装命令而在于资源规划和网络可达性。Ollama 把底层推理做得足够简单Open WebUI 把交互体验补得足够完整真正的风险集中在显存够不够、磁盘够不够、端口通不通这三个朴素问题上。如果你在部署过程中遇到某一步卡住别急着重装先看日志再检查端口和网络大部分问题都能在十分钟内定位。最后再分享一个小技巧配置好之后把ollama pull模型、nvcc版本青云工具的版本号、数据卷位置这三样信息写在一个部署备注文件里放服务器上。很多问题在你三个月后回来看的时候都是靠这些备注想起来的。
延伸阅读

更多相关文章

2026/10/19 7:05:21

大模型训练如何选择SiLU与GELU:从原理到工程决策

刚入行大模型训练的时候,我一度以为激活函数只是导入一行代码的事:ReLU不行就换LeakyReLU,再不行就换tanh。直到有一次在试一个百亿参数规模的实验时,因为把GELU换成SiLU,损失曲线的形状直接变了,我才意识到…

2026/10/19 7:05:21

老式加密项目构建链解析:从MSVC到PKCS#11接口实践

简介:TrueCrypt是一款知名的开源磁盘加密软件,这组文件专为其源码编译环境准备,面向需要进行本地构建、代码走读和二次开发的C/C工程师。资源覆盖Windows各主要版本、macOS和Linux下的构建依赖,能够明显降低从零配置工具链、补全头…

2026/10/19 7:05:21

从斐波那契到波斐契那数列:递推、滚动数组与矩阵快速幂

在牛客上刷每日一题时,碰到一道名为“波斐契那数列”的题目,第一眼看到这名字我就笑了——这摆明是“斐波那契”的魔改版,但点开题面之后发现它还真不只是换了个名字:前三项给定初值,从第四项起每一项都是前三项之和。…

2026/10/19 10:47:08

OpenClaw:轻量级消息总线驱动的Agent协同框架

1. 项目概述:一场被误读的“爆火”背后,到底在解决什么问题?“OpenClaw”这个名字最近在技术圈刷屏了——GitHub 上不到三个月冲到30万星,速度碾压此前所有AI基础设施类项目。标题里那句“赢的不是模型,是消息总线”&a…

2026/10/19 10:47:08

OpenClaw消息总线:解耦智能体模块的协议级基础设施

1. 项目概述:一场被误读的“爆火”背后,到底在解决什么真问题?最近刷到“OpenClaw GitHub 30 万星”这个数据,很多人第一反应是:“又一个大模型开源项目杀疯了?”——但标题里那句“赢的不是模型&#xff0…

2026/10/19 10:47:08

SSL证书详解:类型选择、部署实战与故障排查指南

1. 为什么突然想写这篇SSL证书详解做网站的朋友应该都感受过那种被浏览器红锁支配的恐惧——地址栏里明晃晃的“不安全”三个字,点击率掉一截,用户信任感打折,甚至有些浏览器直接拦截页面。这几年HTTPS早就不是可选项,而是上线前的…

2026/10/19 10:47:08

WinPcap UDP发包程序详解:从以太网帧构造到协议栈绕过

简介:这是一份基于WinPcap实现的UDP发包示例工程,适合学习网络编程、理解UDP协议以及上手WinPcap库的开发者参考。压缩包共349个文件,大小约5.94MB,核心为C/C源码(.h、.cpp)与Visual Studio工程文件&#x…

2026/10/19 10:47:08

Agent通识技能MCP:Memory、Control、Protocol三大工程支柱

1. 从“Agent通识技能”这个说法说起:它到底在指什么?“Agent通识技能——MCP”这个标题,乍看像一串技术黑话拼贴,但其实藏着当前智能体(Agent)开发领域一个非常真实、也非常棘手的痛点:绝大多数…

2026/10/19 10:42:03

MCP服务Stateless架构迁移实战:从有状态扩容故障到无状态水平扩展

1. 从一次线上故障说起:为什么“有状态”的MCP服务让人头疼 去年年底,我负责维护的一个内部工具集成平台做了一次扩容。这个平台的核心职责,是把内部多个业务系统的能力,通过一套统一的协议暴露给上层的智能助手调用。用的就是MCP…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑