Ollama + Open WebUI 部署教程:本地运行大语言模型,自建私有 AI 助手
不想把对话内容发给 OpenAI?有私密需求或离线场景?Ollama 让你在自己的服务器上运行 Llama、Qwen、DeepSeek 等开源大语言模型,Open WebUI 提供和 ChatGPT 一样的聊天界面。这篇文章讲如何搭建一套完整的私有 AI 服务。
可以运行哪些模型
Ollama 支持的主流模型(2025 年):
| 模型 | 中文支持 | 最小显存/内存 |
|---|---|---|
| Qwen2.5:7b | ⭐ 优秀 | 8GB |
| DeepSeek-R1:7b | ⭐ 优秀 | 8GB |
| Llama3.1:8b | ✅ 一般 | 8GB |
| Qwen2.5:14b | ⭐ 优秀 | 16GB |
| DeepSeek-R1:32b | ⭐ 极佳 | 32GB |
无 GPU 时使用 CPU 推理,速度较慢但可用。
服务器配置
CPU 推理(无 GPU):
- 4 核 8GB 内存:可跑 7B 模型,生成速度约 2-5 token/s
- 8 核 16GB 内存:可跑 14B 模型
有 NVIDIA GPU:
- 6GB 显存:7B 模型流畅运行(20+ token/s)
- 16GB 显存:14B 模型流畅运行
我把服务部署在雨云服务器rainyun+com 的 8 核 16G 机型上,CPU 推理跑 Qwen2.5:7b 完全可用,对话响应速度可以接受。注册填优惠码 2026off 领 5 折优惠券,高内存机型价格实惠。
Docker 部署
bash
mkdir -p ~/ai && cd ~/ai
yaml
# docker-compose.yml
version: "3.8"
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "127.0.0.1:11434:11434"
volumes:
- ollama_data:/root/.ollama # 模型存储(会很大)
# 如果有 NVIDIA GPU,取消下面注释
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: 1
# capabilities: [gpu]
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "127.0.0.1:3000:8080"
volumes:
- webui_data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- WEBUI_SECRET_KEY=替换为随机字符串
# 允许注册(第一个注册的是管理员)
- ENABLE_SIGNUP=true
# 连接外部 OpenAI 兼容 API(可选)
# - OPENAI_API_BASE_URL=https://api.openai.com/v1
# - OPENAI_API_KEY=你的OpenAI密钥
depends_on:
- ollama
restart: unless-stopped
caddy:
image: caddy:alpine
container_name: caddy
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
restart: unless-stopped
volumes:
ollama_data:
webui_data:
caddy_data:
caddy_config:
# Caddyfile
ai.你的域名.com {
reverse_proxy open-webui:8080
}
bash
docker compose up -d
下载模型
bash
# 下载 Qwen2.5 7B(推荐中文场景,约 4.7GB)
docker exec ollama ollama pull qwen2.5:7b
# 下载 DeepSeek-R1 7B(推理能力强,约 4.7GB)
docker exec ollama ollama pull deepseek-r1:7b
# 下载 Llama3.1 8B(英文能力强,约 4.9GB)
docker exec ollama ollama pull llama3.1:8b
# 查看已下载的模型
docker exec ollama ollama list
访问和初始配置
访问 https://ai.你的域名.com,第一个注册的账号自动成为管理员。
推荐的初始设置:
- 「管理员设置」→「用户」→ 关闭注册(只给自己和受信任的人用)
- 「模型」→ 选择下载的模型作为默认
- 「系统提示词」→ 设置全局 System Prompt(如:用中文回答)
通过 API 使用(兼容 OpenAI 格式)
Ollama 完全兼容 OpenAI API 格式,可以替换 SDK 里的 base_url:
python
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama", # 随便填
)
response = client.chat.completions.create(
model="qwen2.5:7b",
messages=[{"role": "user", "content": "你好!"}]
)
print(response.choices[0].message.content)
bash
# curl 测试
curl http://localhost:11434/api/chat -d '{
"model": "qwen2.5:7b",
"messages": [{"role": "user", "content": "你好"}],
"stream": false
}'
自定义模型配置(Modelfile)
bash
# 创建带自定义系统提示词的模型
cat > ~/ai/my-assistant.modelfile << 'EOF'
FROM qwen2.5:7b
SYSTEM """
你是一个专业的 Linux 运维助手。
回答要简洁、准确,优先提供可直接使用的命令。
默认使用中文回复。
"""
PARAMETER temperature 0.7
PARAMETER num_ctx 4096
EOF
docker exec -i ollama ollama create my-assistant -f - < ~/ai/my-assistant.modelfile
性能优化
yaml
# 在 docker-compose.yml 的 ollama 服务里添加
environment:
- OLLAMA_NUM_PARALLEL=2 # 同时处理 2 个请求
- OLLAMA_MAX_LOADED_MODELS=2 # 同时加载 2 个模型(需要内存够)
- OLLAMA_FLASH_ATTENTION=1 # 开启 Flash Attention(更快)
查看资源占用
bash
# 查看推理时的 CPU/内存占用
docker stats ollama
# 查看模型加载状态
docker exec ollama ollama ps
Ollama + Open WebUI 是目前最完整的本地 AI 部署方案,ChatGPT 的体验、完全本地的隐私。在雨云服务器rainyun+com 的 8 核 16G 机型上部署,Qwen2.5:7b 运行流畅,日常问答、写代码、总结文档都没问题,注册填优惠码 2026off 领 5 折优惠券,用自己的服务器跑 AI,对话内容永远不会泄露给第三方。