Ollama + Open WebUI 本地 AI 部署完全指南 2026

发布日期:2026-05-05 · 阅读时间:14 分钟 · 分类:AI 基础设施

到 2026 年中,格局已经改变。企业正在将 AI 工作负载撤回本地部署。隐私法规日益收紧。而你可以在单块 GPU 上运行的模型——DeepSeek V4、Qwen 3、Llama 4、Mistral Large——已经能与 6 个月前的云端 API 相媲美。

本指南带你搭建一套生产级的本地 AI 技术栈,让你的数据保持私有、成本可预测、延迟最小化。

1. 2026 年为什么要用本地 AI

算账的方式变了。以下是推动这种转变的因素:

💡 总结: 到 2026 年中,本地 AI 不再是妥协。对于许多开发者工作流来说,它是更好的选择。

2. 技术栈概览

三个核心组件,各有其特定角色:

组件 角色 兼容 API
Ollama 模型运行器和推理引擎 兼容 OpenAI 的聊天和嵌入端点
Open WebUI 聊天界面、RAG、多用户管理 Ollama API(无需代理)
Continue.dev VS Code / JetBrains AI 助手 兼容 OpenAI(指向 Ollama)

可选但推荐:MCP 服务器(文件系统、GitHub、git、数据库)为你的本地 AI 代理提供工具访问能力。

3. Docker Compose 部署

这是启动全套技术栈的最快路径。一个命令,全部连接好。

docker-compose.yml

version: "3.8"
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama
    environment:
      - OLLAMA_KEEP_ALIVE=24h
      - OLLAMA_NUM_PARALLEL=2
      - OLLAMA_MAX_LOADED_MODELS=2
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    ports:
      - "3000:8080"
    volumes:
      - open_webui_data:/app/backend/data
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY:-changeme}
      - WEBUI_NAME=Local AI
      - ENABLE_SIGNUP=false
    depends_on:
      - ollama
volumes:
  ollama_data:
  open_webui_data:
⚠️ 安全: 在将 Open WebUI 暴露到任何网络之前,将 WEBUI_SECRET_KEY 改为强随机值。创建管理员账户后设置 ENABLE_SIGNUP=false

部署

docker compose up -d
# 检查日志
docker compose logs -f
# 验证 Ollama API
curl http://localhost:11434/api/tags

Open WebUI 将运行在 http://localhost:3000。首次访问创建管理员账户。

4. Ollama 配置

拉取模型

从最适合你硬件的模型开始:

# 在容器内或宿主机上运行
docker exec -it ollama ollama pull qwen3:72b
docker exec -it ollama ollama pull deepseek-v4:latest
docker exec -it ollama ollama pull llama4:70b
docker exec -it ollama ollama pull mistral-large:latest
# 嵌入模型(用于 Open WebUI 的 RAG)
docker exec -it ollama ollama pull nomic-embed-text:v1.5

Ollama 环境调优

变量 默认值 推荐值 原因
OLLAMA_KEEP_ALIVE 5 分钟 24 小时 保持模型加载在显存中。防止每次请求 30 秒加载时间。
OLLAMA_NUM_PARALLEL 1 2-4 处理并发请求。更高的值增加显存使用。
OLLAMA_MAX_LOADED_MODELS 1 1-2 更多模型 = 更少重载,但更多显存争用。
OLLAMA_HOST 127.0.0.1 0.0.0.0 监听所有接口(Docker 内需要)。

自定义 Modelfile

创建自定义 modelfile 来调整每个模型的系统提示和参数:

FROM qwen3:72b
# 编程用系统提示
SYSTEM """你是一名经验丰富的软件工程师。编写干净、文档完善的代码。
偏重实用方案而非理论方案。
不确定时承认不确定,不要胡编乱造。"""
PARAMETER temperature 0.3
PARAMETER top_p 0.9
PARAMETER num_ctx 32768
docker exec -i ollama ollama create my-coder -f - << 'EOF'
FROM qwen3:72b
SYSTEM "你是一名经验丰富的软件工程师..."
PARAMETER temperature 0.3
PARAMETER num_ctx 32768
EOF

5. Open WebUI 设置

Open WebUI 提供类似 ChatGPT 的界面,背后是你的本地模型,并支持 RAG 文档查询。

首次登录配置

  1. 打开 http://localhost:3000 — 创建管理员账户
  2. 进入 Admin Panel → Settings → Models
    • 确认 Ollama 连接显示了你拉取的模型
    • 将默认模型设为主要模型(例如 qwen3:72b
  3. 进入 Settings → Documents
    • 上传文档用于 RAG 检索
    • 选择 nomic-embed-text:v1.5 作为嵌入模型
  4. 进入 Settings → Interface
    • 禁用注册(如果尚未通过环境变量设置)
    • 配置用户角色

值得启用的关键功能

6. Continue.dev VS Code 集成

Continue.dev 将 VS Code 直接连接到你的本地 Ollama 模型,提供内联补全、聊天和编程代理功能。

安装

# 在 VS Code 中:扩展 → 搜索 "Continue"
# 或通过命令行:
code --install-extension continue.continue

配置(~/.continue/config.json)

{
  "models": [
    {
      "title": "本地 Qwen 3",
      "provider": "ollama",
      "model": "my-coder",
      "apiBase": "http://localhost:11434",
      "contextLength": 32768,
      "completionOptions": {
        "temperature": 0.2,
        "topP": 0.9
      }
    },
    {
      "title": "DeepSeek V4",
      "provider": "ollama",
      "model": "deepseek-v4:latest",
      "apiBase": "http://localhost:11434",
      "contextLength": 65536
    }
  ],
  "tabAutocompleteModel": {
    "title": "本地 Tab 补全",
    "provider": "ollama",
    "model": "qwen3:7b",
    "apiBase": "http://localhost:11434"
  },
  "embeddingsProvider": {
    "provider": "ollama",
    "model": "nomic-embed-text:v1.5",
    "apiBase": "http://localhost:11434"
  }
}
✅ 专业提示: 对 Tab 自动补全使用较小的模型(7B-14B)— 它需要在 200ms 内响应。将 70B+ 模型保留给 /edit 和聊天命令,这些场景质量比速度更重要。

你能获得什么

7. MCP 服务器集成

MCP(模型上下文协议)服务器为你的本地 AI 提供工具访问能力 — 读取文件、查询数据库、管理 git 等。Continue.dev 和 Open WebUI 都支持 MCP。

Continue.dev 中的 MCP

添加到你的 ~/.continue/config.json

{
  "experimental": {
    "mcpServers": {
      "filesystem": {
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]
      },
      "github": {
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-github"],
        "env": {
          "GITHUB_TOKEN": "${GITHUB_TOKEN}"
        }
      },
      "git": {
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-git", "."]
      }
    }
  }
}

Open WebUI 中的 MCP

Open WebUI(v0.5+)内置 MCP 客户端。进入 Admin Panel → Tools → MCP Servers 并添加:

{
  "servers": [
    {
      "name": "filesystem",
      "transport": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/data"]
    },
    {
      "name": "web-search",
      "transport": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-brave-search"],
      "env": {
        "BRAVE_API_KEY": "${BRAVE_API_KEY}"
      }
    }
  ]
}

8. GPU 加速

没有 GPU,大模型将在 CPU 上运行 — 可用但速度很慢(70B 模型 1-3 token/秒)。以下是如何确保 GPU 加速正常工作。

NVIDIA GPU

# 验证 NVIDIA 驱动和 CUDA
nvidia-smi
# 安装 NVIDIA 容器工具包
sudo apt install nvidia-container-toolkit
sudo systemctl restart docker
# 在容器中测试 GPU
docker run --rm --gpus all nvidia/cuda:12.8-base nvidia-smi

如果上面的 Docker Compose 文件包含 deploy.resources.reservations.devices 的 NVIDIA capabilities,Ollama 将自动使用 GPU。

AMD ROCm

使用 Ollama 的 ROCm 构建版本:

image: ollama/ollama:rocm

对于 16GB+ 显存的 AMD GPU(RX 7900 XTX、MI250),ROCm 对推理的支持很稳定。

Apple Silicon(M 系列)

Ollama 在 macOS 上原生运行,支持 Metal 加速:

# 直接安装(macOS 上无需 Docker)
brew install ollama
ollama serve
# M1/M2/M3/M4 上自动启用 Metal 加速
# 统一内存 = 在 M 系列 Max/Ultra 上可运行 64GB 模型
ollama pull qwen3:72b
💡 Apple Silicon 优势: 统一内存架构让你可以在 64GB M3 Ultra 上运行 70B 模型而无需量化。无需独立 GPU。

显存需求

模型大小 量化级别 所需显存 硬件
7B Q4_K_M ~6 GB RTX 3060、M1、任意 GPU
14B Q4_K_M ~10 GB RTX 3080、M2 Pro
32B Q4_K_M ~20 GB RTX 3090、M3 Max
70B Q4_K_M ~42 GB RTX 4090 24GB(2x)、M3 Ultra、A100
72B Q4_K_M ~43 GB A6000、2x RTX 3090、M3 Ultra
120B+ Q4_K_M ~72 GB A100 80GB、2x A6000

9. 生产环境加固

更进一步?以下是需要添加的内容:

身份认证

Open WebUI 内置基于角色的用户管理。生产环境中:

限流和监控

# nginx 限流示例
limit_req_zone $binary_remote_addr zone=ai_api:10m rate=30r/m;
server {
    listen 443 ssl;
    server_name ai.yourdomain.com;
    location / {
        limit_req zone=ai_api burst=10 nodelay;
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

备份策略

# 备份 Open WebUI 数据(包含用户账户、聊天历史、RAG 文档)
docker run --rm -v open_webui_data:/data -v $(pwd):/backup \
  alpine tar czf /backup/open-webui-backup-$(date +%Y%m%d).tar.gz -C /data .
# 备份 Ollama 模型(体积大 — 如果能重新拉取可跳过)
# 模型文件位于 ollama_data 卷:/root/.ollama/models/

资源限制

services:
  ollama:
    deploy:
      resources:
        limits:
          memory: 64G
        reservations:
          memory: 32G

10. 模型选择指南

使用场景 最佳模型 备选 最低硬件
通用编程 Qwen 3 72B DeepSeek V4-0514 24GB 显存(Q4)
Tab 自动补全 Qwen 3 7B / DeepSeek-Coder 7B Llama 4 8B 8GB 显存
RAG 和文档问答 Mistral Large 2 Qwen 3 32B 16GB 显存
推理/数学 DeepSeek V4-0514 Qwen 3 72B 48GB 显存
创意写作 Llama 4 70B Mistral Large 2 48GB 显存
低硬件(8GB) Qwen 3 7B Llama 4 8B 8GB 显存
跨平台 M 系列 Qwen 3 72B(Metal) DeepSeek V4(Metal) M3 Max 48GB

11. 故障排查

Ollama 不使用 GPU

# 检查容器内 CUDA 是否可用
docker exec -it ollama nvidia-smi
# 验证容器工具包
docker info | grep -i runtime
# 强制 GPU 设备
docker compose down
docker compose up -d  #(确保 compose 中有 --gpus all)

模型加载但输出垃圾内容

Open WebUI 无法连接 Ollama

# 从 webui 容器内验证
docker exec -it open-webui curl http://ollama:11434/api/tags
# 检查 docker-compose 中 OLLAMA_BASE_URL 是否设置正确
# 应为 http://ollama:11434(容器名称,非 localhost)

Apple Silicon 上推理慢

Continue.dev 无法连接

# 从宿主机测试 Ollama API
curl http://localhost:11434/api/generate -d '{"model":"qwen3:72b","prompt":"hi"}'
# 验证 config.json 中的 apiBase 完全匹配
# Docker:apiBase 为 "http://host.docker.internal:11434"
# 原生安装:"http://localhost:11434"
完成。 你现在拥有了一套完全私有、可离线运行的 AI 技术栈,运行在你自己的硬件上。有问题或遇到故障?查看 Ollama GitHub 或 Open WebUI Discord 获取最新的社区故障排查方案。

标签:Ollama, Open WebUI, Continue.dev, 本地 AI, MCP, Docker, GPU, LLM