自托管AI服务部署完全指南:Ollama + OpenWebUI

自托管AI服务部署完全指南:Ollama + OpenWebUI

你是否想过在本地运行一个大语言模型,像使用 ChatGPT 一样和它对话,但完全私有、数据不出本机?开源工具 OllamaOpenWebUI 的组合让这件事变得前所未有的简单。

本文将带你从零完成:

  1. 安装配置 Ollama(模型运行引擎)
  2. 部署 OpenWebUI(美观的 Web 界面)
  3. 部署第一个模型(Llama 3.5 / Qwen2.5)
  4. 配置 GPU 加速与内网访问

一、为什么自托管?

在开始之前,先问自己:真的需要自托管吗?

场景 推荐方案
追求最强模型能力 OpenAI / Claude API
追求性价比 + 隐私 Ollama + OpenWebUI 本地部署
公司内网、敏感数据 必须自托管
尝鲜学习、预算有限 Ollama + OpenWebUI

自托管的优势:

  • 🚫 数据完全私有,不上传云端
  • 💰 无 API 调用费用(硬件成本)
  • 🌐 可在内网离线使用
  • 🔧 完全自定义模型和配置

自托管的劣势:

  • ⚡ 模型能力弱于 GPT-4o / Claude
  • 💻 需要足够的本地算力
  • 🔧 部署和维护需要一定技术能力

二、安装 Ollama

Ollama 是目前最流行的本地大模型运行引擎,支持 macOS、Linux、Windows。

macOS / Linux 一键安装

1
2
3
4
5
# macOS
brew install ollama

# Linux (一键脚本)
curl -fsSL https://ollama.com/install.sh | sh

Windows 安装

直接从 ollama.com/download 下载安装包,安装后 Ollama 会在后台运行。

验证安装

1
2
3
4
5
ollama --version
# 输出:ollama version 0.5.x

# 启动服务(默认监听 11434 端口)
ollama serve

拉取第一个模型

1
2
3
4
5
6
7
8
# 拉取 Qwen2.5-3B(3B参数,约2GB,CPU可跑)
ollama pull qwen2.5:3b

# 拉取 Llama 3.5-8B(需要8GB显存,推荐)
ollama pull llama3.5:8b

# 查看已下载模型
ollama list

常用模型推荐:

模型 参数量 最低显存 适用场景
qwen2.5:3b 3B 4GB RAM 轻量任务、快速测试
qwen2.5:14b 14B 8GB VRAM 日常对话、代码生成
llama3.5:8b 8B 8GB VRAM 英文为主的任务
deepseek-r1:7b 7B 8GB VRAM 推理能力强

直接对话测试

1
2
3
4
ollama run qwen2.5:3b
# 然后直接输入问题

# 退出:/bye

REST API(重要!)

Ollama 自带 REST API,其他工具可以通过 API 调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 对话接口
curl -X POST http://localhost:11434/api/chat -d '{
"model": "qwen2.5:3b",
"messages": [
{"role": "user", "content": "用Python写一个快速排序"}
],
"stream": false
}'

# 生成接口(不含对话历史)
curl -X POST http://localhost:11434/api/generate -d '{
"model": "qwen2.5:3b",
"prompt": "解释什么是REST API",
"stream": false
}'

三、安装 OpenWebUI(前端界面)

OpenWebUI(曾用名 Ollama WebUI)是一个美观的 Web 界面,功能对标 ChatGPT,支持多用户、模型管理、图片上传(多模态模型)、知识库等功能。

Docker 部署(推荐)

1
2
3
4
5
6
7
docker run -d \
--name openwebui \
-p 3000:8080 \
-v open-webui:/app/backend/data \
-e OLLAMA_BASE_URL=http://localhost:11434 \
--restart unless-stopped \
ghcr.io/open-webui/open-webui:main

部署完成后,打开浏览器访问 http://localhost:3000,首次访问会要求注册管理员账号。

Docker Compose 方式(更方便管理)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# docker-compose.yml
version: '3.8'

services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: openwebui
ports:
- "3000:8080"
volumes:
- ./open-webui/data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:11434
- WEBUI_SECRET=
restart: unless-stopped
1
docker-compose up -d

非 Docker 安装(备选)

1
2
3
4
5
6
7
# 需要 Node.js 18+
git clone https://github.com/open-webui/open-webui.git
cd open-webui
npm install
npm run build
pip install open-webui
open-webui serve

四、GPU 加速配置

如果你的电脑有 NVIDIA 显卡,配置 GPU 加速能大幅提升推理速度。

检查 NVIDIA 驱动

1
2
nvidia-smi
# 如果输出显卡信息,说明驱动已安装

Ollama GPU 支持(自动检测)

Ollama 在 macOS 上会自动使用 Apple Silicon GPU,在 Linux/Windows 上会自动检测 NVIDIA GPU。无需额外配置

手动指定 GPU:

1
2
3
# 设置使用 GPU
export OLLAMA_GPU_OVERHEAD=0
ollama run qwen2.5:14b # 自动使用 GPU

手动设置 GPU 可见性(多卡机器)

1
2
3
4
5
# 只使用第0号GPU
CUDA_VISIBLE_DEVICES=0 ollama serve

# 使用0和1号GPU
CUDA_VISIBLE_DEVICES=0,1 ollama serve

模型量化(省显存利器)

模型量化将精度从 FP16 压缩到 INT4/INT8,大幅降低显存需求:

1
2
3
4
5
6
# 默认拉取的是 FP16 版本
# 查看可用的量化版本
ollama show qwen2.5:14b

# 直接运行已拉取的量化版本
ollama run qwen2.5:14b-instruct-q4_K_M

常用量化等级:Q4_K_M(推荐平衡)> Q5_K_M(更准但更大)> Q8_0(接近原始精度)

五、内网 / 远程访问配置

让局域网设备访问

OpenWebUI 默认监听 0.0.0.0:8080,只需确保防火墙开放对应端口:

1
2
3
4
# macOS 开放端口
sudo firewallctl port add 3000/tcp

# 或直接在路由器做端口映射

然后局域网内其他设备访问:http://<你的IP>:3000

反向代理 + HTTPS(可选但推荐)

使用 Nginx 配置 HTTPS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# /etc/nginx/sites-available/openwebui
server {
listen 443 ssl;
server_name your-domain.com;

ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;

location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
}
}

配置 Ollama 远程 API

Ollama 默认只接受本地连接。如果需要远程调用:

1
2
3
4
5
6
# 启动时指定监听所有网卡
OLLAMA_HOST=0.0.0.0:11434 ollama serve

# 或者设置环境变量
export OLLAMA_HOST="0.0.0.0"
ollama serve

⚠️ 安全提醒:Ollama 没有内置认证,暴露到公网前务必用防火墙或 VPN 保护。

六、OpenWebUI 进阶功能

连接知识库(RAG)

OpenWebUI 内置 RAG 功能,可以上传文档作为上下文:

  1. 进入「工作区」→「文档」
  2. 上传 PDF / TXT / Markdown 文件
  3. 创建知识库并关联到对话

使用 OpenAI API 作为补充

OpenWebUI 支持同时连接 Ollama 和 OpenAI API:

  1. 进入「设置」→「连接」
  2. 添加 OpenAI API Key
  3. 在模型选择器中切换不同模型

自定义提示词(System Prompt)

在「管理面板」→「模型设置」中,为每个模型设置专属的系统提示词:

1
2
你是一位经验丰富的Python开发者,用简洁高效的方式回答问题。
代码示例必须包含中文注释,并且可以直接运行。

七、常见问题排查

Q: Ollama 启动后端口被占用

1
2
3
4
# 查看占用进程
lsof -i :11434
# 杀掉进程或改端口
OLLAMA_HOST=0.0.0.0:11435 ollama serve

Q: 模型下载太慢

1
2
3
# 使用镜像(如果有)
export OLLAMA_REGISTRY=https://your-mirror.com
ollama pull qwen2.5:14b

Q: OpenWebUI 无法连接 Ollama
检查容器网络,确保 OpenWebUI 能访问宿主机的 11434 端口:

1
2
# Docker Compose 中使用 host.docker.internal
OLLAMA_BASE_URL=http://host.docker.internal:11434

Q: 显存不够
减小模型参数量(3B/7B),或使用量化版本(Q4_K_M)。

八、性能基准参考

在 MacBook Pro M3 Max (128GB) 上测试:

模型 量化 首 token 延迟 生成速度
qwen2.5:3b Q4 ~50ms ~50 tok/s
qwen2.5:14b Q4 ~200ms ~15 tok/s
llama3.5:8b Q4 ~100ms ~30 tok/s

在 NVIDIA RTX 4090 (24GB) 上测试:

模型 量化 首 token 延迟 生成速度
qwen2.5:14b Q4 ~80ms ~45 tok/s
deepseek-r1:7b Q4 ~60ms ~40 tok/s

总结

Ollama + OpenWebUI 是目前最简单的本地大模型部署方案,零基础也能在 10 分钟内跑起来。整个技术栈完全开源,数据完全私有,适合:

  • 注重隐私的开发者
  • 公司内网隔离环境
  • 学习和实验大模型技术
  • 作为 AI 开发项目的后端服务

下一步建议:

  1. 先跑通基础版,感受本地模型的能力边界
  2. 配置 GPU 加速,提升响应速度
  3. 尝试接入 LangChain / CrewAI,构建本地 AI Agent

本地大模型的时代已经到来,你值得拥有自己的 AI 服务!🚀


有任何部署问题,欢迎在评论区留言!