Ollama 本地部署入门:从安装模型到局域网访问完整流程

Ollama 本地部署:Open WebUI 局域网访问

本地跑大模型这件事,最容易卡住的不是“模型怎么用”,而是链路怎么打通:Ollama 已经跑起来了,命令行也能对话,但手机、平板、另一台电脑就是打不开一个像样的聊天页面。

这篇直接按实操来走:用 Ollama 拉取模型,用 Open WebUI 做网页聊天入口,再把页面开放给局域网设备访问。全程不绕远路,适合放在家用服务器、办公室小主机、NAS 旁边那台 Linux 机器上跑。文章默认你有一台能长期在线的 Linux 机器,想先把本地 AI 页面跑起来,再考虑给其他设备访问。

本地 Ollama 与 Open WebUI 访问链路图

图1:局域网设备访问 Open WebUI,Open WebUI 再调用宿主机上的 Ollama API 和本地模型。

1 什么是 Ollama 和 Open WebUI?

Ollama 在这套方案里负责两件事:下载模型、提供本地推理服务。安装完成后,它默认在本机的 11434 端口提供 API,命令行里执行 ollama run 就能直接和模型对话。

Open WebUI 负责把这个能力变成网页。它本身不替代 Ollama 推理,而是连到 Ollama API,然后提供账号、聊天记录、模型选择、页面对话这些更顺手的功能。

这篇用的结构很简单:

  • Ollama:模型运行层
  • Open WebUI:浏览器访问层
  • 局域网设备:手机、平板、其他电脑访问 Open WebUI 页面
  • cpolar:放在扩展章节,只处理临时公网访问场景

这里先提醒一句:不要一上来就折腾公网访问。先把本机和局域网跑通,后面排错会轻松很多。

2 环境准备:确认系统、Docker 和端口

这篇主线以 Ubuntu / Debian 系 Linux 为例。macOS 和 Windows 也能安装 Ollama,但家用服务器、云桌面旁边的小主机、长期运行的开发机,用 Linux 更稳。

开始前先确认机器上有 curl 和 Docker:

curl --version
docker --version

如果 Docker 没安装,Ubuntu 可以用官方仓库安装。已经装好 Docker 的机器,直接跳过这段。

sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

装完后检查 Docker 服务:

sudo systemctl status docker --no-pager
sudo docker run --rm hello-world

执行到 hello-world 时,只要终端能看到 Docker 返回的成功提示,就说明 Docker 引擎已经可以正常拉取镜像并运行容器。

这里别急着改防火墙。后面 Open WebUI 会用到 3000 端口,Ollama 默认用 11434 端口。局域网访问只需要放行 Open WebUI 的 3000,不要把 Ollama API 暴露给不需要访问的设备。

3 安装 Ollama 并启动本地服务

Ollama 官方 Linux 安装命令是一行脚本:

curl -fsSL https://ollama.com/install.sh | sh

安装完成后,查看版本:

ollama -v

Linux 安装脚本会配置系统服务。确认服务状态:

sudo systemctl status ollama --no-pager

如果状态里看到 active (running),说明 Ollama 服务已经在后台运行。再用本机 API 测一下:

curl http://127.0.0.1:11434/api/tags

新机器还没拉模型时,返回的模型列表是空的,这个结果正常。这里的目的不是测试回答质量,而是确认 11434 端口已经有服务响应。

确认服务状态时,重点看 Active: active (running) 和监听端口是否正常;如果服务没有启动,再回到安装日志排查。

3.1 让 Docker 容器能访问 Ollama

Open WebUI 运行在 Docker 容器里,它要访问宿主机上的 Ollama。Linux 环境下建议把 Ollama 监听地址改成 0.0.0.0:11434,再用 Docker 的 host.docker.internal 指向宿主机。

执行:

sudo systemctl edit ollama

在打开的编辑器里写入下面内容:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"

保存退出后重载并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart ollama
sudo systemctl status ollama --no-pager

这一步容易填错。Environment 这一行要放在 [Service] 下面,双引号不要漏。如果重启失败,先执行下面命令看日志:

journalctl -e -u ollama

安全提醒也放在这里:11434 是 Ollama API 端口,局域网里自己用够了,不要把它直接映射到公网。后面给外部设备访问时,只开放 Open WebUI 页面。

4 拉取模型并在命令行完成第一次对话

Ollama 模型库里有很多模型。入门建议先选体积较小、下载更快的模型,例如 llama3.2。先把链路跑通,比一上来追求大模型更省时间。

拉取并运行:

ollama run llama3.2

第一次执行会自动下载模型文件。下载完成后,终端会进入对话界面,可以直接输入一句中文测试:

用三句话介绍一下 Ollama 适合做什么。

退出对话界面输入:

/bye

查看本机已经下载的模型:

ollama list

查看正在内存中的模型:

ollama ps

ollama list 能看到 llama3.2 后,说明模型文件已经下载到本机;后续 Open WebUI 也会从这里读取可用模型。

如果 ollama run llama3.2 下载很慢,先检查当前机器能不能正常访问模型源。不要反复删除重装 Ollama,安装成功和模型下载速度是两件事。

5 使用 Docker 部署 Open WebUI

命令行能对话之后,就可以加网页入口了。Open WebUI 官方提供 Docker 镜像,标准容器内部端口是 8080,这里映射到宿主机的 3000

执行下面命令启动:

sudo docker run -d \
  --name open-webui \
  --restart always \
  -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  -v open-webui:/app/backend/data \
  ghcr.io/open-webui/open-webui:main

这条命令使用了 sudo docker,适合刚装好 Docker、还没把当前用户加入 docker 用户组的机器。如果你的账号已经能直接执行 docker ps,也可以去掉 sudo

这条命令里有几个点别填错:

  • -p 3000:8080:浏览器访问宿主机的 3000,容器内部仍然是 8080
  • OLLAMA_BASE_URL:告诉 Open WebUI 去哪里找 Ollama
  • -v open-webui:/app/backend/data:保存账号、配置和聊天数据,删容器后数据还在
  • --restart always:机器重启后自动拉起容器

启动后看容器状态:

sudo docker ps --filter name=open-webui

再看日志:

sudo docker logs --tail 80 open-webui

本机浏览器打开:

http://127.0.0.1:3000

第一次进入页面会创建管理员账号。这个账号是本地 Open WebUI 的管理账号,建议密码别用简单字符串,尤其后面要做局域网或临时公网访问时更要认真设置。

第一次打开 Open WebUI 时会进入管理员账号创建页面,完成后再选择模型开始对话测试。

5.1 重启和更新 Open WebUI

日常使用时,Open WebUI 不需要每次手动启动。前面加了 --restart always,机器重启后 Docker 会自动拉起容器。想手动重启,执行:

sudo docker restart open-webui

想更新到最新镜像,可以先拉取新镜像,再重建容器。注意,这里不要删除 open-webui 数据卷,聊天记录和本地配置都在这个卷里。

sudo docker pull ghcr.io/open-webui/open-webui:main
sudo docker rm -f open-webui
sudo docker run -d \
  --name open-webui \
  --restart always \
  -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  -v open-webui:/app/backend/data \
  ghcr.io/open-webui/open-webui:main

这里别顺手执行 docker volume rm open-webui。那是清空数据卷的命令,只有确定要重置 Open WebUI 时才用。

如果页面打不开,按这个顺序查:

sudo docker ps --filter name=open-webui
sudo ss -lntp | grep 3000
curl -I http://127.0.0.1:3000

docker ps 看容器是否运行,ss 看端口是否监听,curl 看本机能不能访问页面。三步分开查,比盲目重启容器更快。

6 在 Open WebUI 中连接模型并完成页面测试

进入 Open WebUI 后,页面里应该能看到 Ollama 中已经拉取的模型,比如 llama3.2。选择模型,发一条简单消息:

请用项目 README 的口吻,写一段 80 字以内的 Ollama 本地部署说明。

这一步不是为了测试模型文采,而是确认 Open WebUI → Ollama → 模型推理 → Open WebUI 返回结果这条链路已经打通。

Docker 部署 Open WebUI 并连接 Ollama 示意图

图2:Open WebUI 容器通过 OLLAMA_BASE_URL 连接宿主机 Ollama,页面里选择 llama3.2 后即可完成对话测试。

如果页面能打开,但模型列表为空,优先查 Open WebUI 到 Ollama 的连接:

sudo docker exec open-webui sh -c 'wget -qO- http://host.docker.internal:11434/api/tags || true'

能看到 JSON 返回,说明容器能访问 Ollama。看不到返回时,回到第 3 节检查 OLLAMA_HOST 和服务重启情况。

如果命令提示容器里没有 wget,换成看 Open WebUI 日志:

sudo docker logs --tail 120 open-webui

日志里出现连接 Ollama 失败时,重点检查 OLLAMA_BASE_URL 是否写成了 http://host.docker.internal:11434。这里别写 localhost,容器里的 localhost 指的是容器自己,不是宿主机。

7 开启局域网访问:手机和平板也能打开

本机页面跑通后,再开放给局域网设备。先查这台机器的局域网 IP:

ip addr show

常见地址长这样:

192.168.1.23
10.0.0.15

在同一个 Wi-Fi 下,用手机或另一台电脑访问:

http://192.168.1.23:3000

把这里的 IP 换成你自己机器的局域网地址。这里测手机很有价值,因为它能帮你确认“不是只有本机能打开”。如果手机页面能进、也能正常对话,说明 Open WebUI 端口、防火墙、Ollama 连接都已经过了一遍。

手机或平板访问时,地址栏使用 http://局域网IP:3000。如果本机能打开但手机打不开,优先检查防火墙和是否在同一个 Wi-Fi 网段。

如果本机能打开,手机打不开,按这个顺序查:

sudo ss -lntp | grep 3000
sudo ufw status

Ubuntu 开了 UFW 防火墙时,放行 3000/tcp

sudo ufw allow 3000/tcp
sudo ufw reload
sudo ufw status

还有一个很常见的坑:手机和服务器不在同一个网段。比如手机连了访客 Wi-Fi,服务器在主 Wi-Fi,页面就访问不到。先确认两个设备拿到的 IP 前三段一致,比如都是 192.168.1.x

如果你只是自己在家里用,到这里就够了。Open WebUI 页面在局域网内访问,模型和聊天数据都留在自己的机器上,日常测试、写代码辅助、资料整理都能覆盖。

8 可选扩展:没有公网 IP 时临时访问 Open WebUI

人在外面想临时打开家里 Open WebUI 页面时,很多家庭宽带没有公网 IP,路由器端口转发也不好维护。这种场景可以用 cpolar 临时生成一个 HTTPS 访问地址,把本机 3000 端口映射出去。

注意,这一节是扩展方案,不影响前面的本地部署。建议只在临时演示、短时间远程访问时开启,并且给 Open WebUI 设置强密码。

Linux 安装 cpolar:

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

macOS 可以用 Homebrew:

brew tap probezy/core && brew install cpolar
sudo cpolar service install
sudo cpolar service start

安装后打开本地管理页面:

http://127.0.0.1:9200

登录账号后,创建一个 HTTP 隧道指向 Open WebUI 的 3000 端口。也可以直接用命令行启动临时隧道:

cpolar http 3000

运行后,终端会显示公网访问地址。把生成的 HTTPS 地址复制到浏览器,就能访问本机 Open WebUI 页面。

cpolar 隧道创建完成后,列表里会出现指向本机 3000 端口的公网 HTTPS 地址;只在临时演示或短时间远程访问时开启即可。

这里有两条提醒:

  • 免费随机地址会变化,适合临时访问和演示;固定二级子域名需要基础套餐或以上
  • 不要把没有密码保护的管理后台长期暴露出去,用完就关闭隧道

如果公网地址打开后页面能显示,但对话没有返回,先回服务器本机确认 http://127.0.0.1:3000 正常,再检查 Open WebUI 容器日志。公网访问只是多了一层入口,核心链路仍然是 Open WebUI 连接本机 Ollama。

9 总结

到这里,一套能实际使用的本地大模型页面已经搭起来了:Ollama 负责下载和运行模型,Open WebUI 提供网页聊天入口,同一个局域网里的手机、平板、电脑都能通过 http://局域网IP:3000 访问。

这套流程里最关键的是三步:

  • 先用 ollama run llama3.2 确认模型能在命令行跑起来
  • 再用 Docker 启动 Open WebUI,并把 OLLAMA_BASE_URL 指向宿主机 Ollama
  • 本机页面跑通后,再开放局域网端口;有临时远程访问需求时,再映射 3000 端口

后面要扩展也很顺:想换模型,就继续 ollama run 拉取新模型;想给家里多台设备用,就保持 Open WebUI 容器常驻;想临时在外面访问,就短时间开启隧道。别一开始就把所有功能堆上去,先让链路稳定,比什么都重要。

Logo

免费领 100 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐