跳转到内容

Open WebUI

Open WebUI(原名 Ollama WebUI)是一个功能丰富的大语言模型 Web 前端界面。它提供了类似 ChatGPT 的对话体验,支持连接 Ollama 和 OpenAI 兼容 API,具备多用户管理、对话历史、模型切换、RAG 文档问答等功能,非常适合在团队或企业内部部署私有化 AI 对话平台。

  • 类 ChatGPT 的现代化界面
  • 支持多模型切换(Ollama、OpenAI、vLLM 等)
  • 多用户管理与权限控制
  • 对话历史保存与搜索
  • RAG(检索增强生成)文档问答
  • 模型自定义与 Modelfile 管理
  • Markdown 渲染、代码高亮
  • 支持语音输入和 TTS
  • CentOS Stream 9 & 10 / AlmaLinux 9 & 10 / Rocky Linux 9 & 10
  • Docker 或 Podman
  • 已部署的 Ollama 服务或其他 OpenAI 兼容 API(参考 Ollama 本地大模型

如果尚未安装 Docker:

安装 Docker(EL 9 / EL 10)
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl enable --now docker
sudo usermod -aG docker $(whoami)

重新登录以使组变更生效。

部署 Open WebUI(连接本机 Ollama)

Section titled “部署 Open WebUI(连接本机 Ollama)”

如果 Ollama 运行在同一台机器上:

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

访问 http://your-server-ip:3000 即可打开界面。

部署 Open WebUI(连接远程 Ollama)

Section titled “部署 Open WebUI(连接远程 Ollama)”

如果 Ollama 运行在其他服务器上:

Terminal window
docker run -d \
--name open-webui \
--restart always \
-p 3000:8080 \
-v open-webui-data:/app/backend/data \
-e OLLAMA_BASE_URL=http://192.168.1.100:11434 \
ghcr.io/open-webui/open-webui:main

如果使用 vLLM 或其他兼容 OpenAI API 的后端:

Terminal window
docker run -d \
--name open-webui \
--restart always \
-p 3000:8080 \
-v open-webui-data:/app/backend/data \
-e OPENAI_API_BASE_URL=http://192.168.1.100:8000/v1 \
-e OPENAI_API_KEY=not-needed \
ghcr.io/open-webui/open-webui:main

创建 docker-compose.yml 文件,同时部署 Ollama 和 Open WebUI:

Terminal window
mkdir -p /opt/open-webui && cd /opt/open-webui
cat > docker-compose.yml <<'EOF'
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: always
volumes:
- ollama-data:/root/.ollama
ports:
- "11434:11434"
# 如有 GPU,取消注释以下配置
# 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: always
depends_on:
- ollama
ports:
- "3000:8080"
volumes:
- open-webui-data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
ollama-data:
open-webui-data:
EOF

启动服务:

Terminal window
docker compose up -d

在 Ollama 容器中拉取模型:

Terminal window
docker exec -it ollama ollama pull qwen2.5
docker exec -it ollama ollama pull llama3.1

EL9 系统自带 Podman,无需额外安装 Docker。

Terminal window
podman run -d \
--name open-webui \
--restart always \
-p 3000:8080 \
-v open-webui-data:/app/backend/data \
--network=host \
-e OLLAMA_BASE_URL=http://localhost:11434 \
ghcr.io/open-webui/open-webui:main
Terminal window
# 生成 systemd 服务文件
mkdir -p ~/.config/systemd/user
podman generate systemd --name open-webui --new > ~/.config/systemd/user/open-webui.service
# 启用开机自启(用户级服务)
systemctl --user daemon-reload
systemctl --user enable open-webui.service
# 启用 lingering 以在用户未登录时也运行
sudo loginctl enable-linger $(whoami)

首次访问 Open WebUI 时,需要注册第一个账户。第一个注册的账户将自动成为管理员。

  1. 打开浏览器访问 http://your-server-ip:3000
  2. 点击 “Sign up” 注册
  3. 填写用户名、邮箱和密码
  4. 注册完成后自动登录

登录后点击左下角头像进入设置。

用户管理:管理员可以在 Admin Panel 中:

  • 查看和管理所有用户
  • 设置用户注册策略(开放注册 / 需要审批 / 关闭注册)
  • 修改用户角色(管理员 / 普通用户)
Admin Panel > Settings > General > Enable New Sign Ups

模型管理

  • 选择对用户可见的模型
  • 设置默认模型
  • 创建自定义模型(基于 Modelfile)

在管理员设置中配置后端连接:

Ollama 连接

Admin Panel > Settings > Connections > Ollama API
URL: http://host.docker.internal:11434

OpenAI API 连接

Admin Panel > Settings > Connections > OpenAI API
URL: http://your-vllm-server:8000/v1
API Key: your-api-key

Open WebUI 支持通过环境变量进行配置。以下是常用的环境变量:

环境变量说明默认值
OLLAMA_BASE_URLOllama API 地址http://localhost:11434
OPENAI_API_BASE_URLOpenAI 兼容 API 地址-
OPENAI_API_KEYOpenAI API 密钥-
WEBUI_AUTH是否启用认证true
WEBUI_SECRET_KEYJWT 密钥自动生成
DEFAULT_MODELS默认选中的模型-
ENABLE_SIGNUP是否允许注册true
ENABLE_RAG_WEB_SEARCH启用 RAG 网络搜索false

Open WebUI 的数据存储在容器内的 /app/backend/data 目录。通过 Docker Volume 持久化这些数据:

Terminal window
# 查看 volume 信息
docker volume inspect open-webui-data
# 备份数据
docker run --rm \
-v open-webui-data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/open-webui-backup.tar.gz -C /data .
# 恢复数据
docker run --rm \
-v open-webui-data:/data \
-v $(pwd):/backup \
alpine tar xzf /backup/open-webui-backup.tar.gz -C /data
Terminal window
# Docker 方式
docker pull ghcr.io/open-webui/open-webui:main
docker stop open-webui
docker rm open-webui
# 重新运行 docker run 命令(数据已通过 volume 持久化)
# Docker Compose 方式
cd /opt/open-webui
docker compose pull
docker compose up -d
Terminal window
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload

确认 Ollama 监听地址正确:

Terminal window
# 检查 Ollama 是否监听
curl http://localhost:11434/api/tags
# 如果 Docker 容器无法访问宿主机的 Ollama
# 确保 Ollama 监听在 0.0.0.0
sudo systemctl edit ollama
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Terminal window
sudo systemctl daemon-reload
sudo systemctl restart ollama
Terminal window
# 查看容器日志
docker logs open-webui
# 常见原因:端口冲突
# 更换端口
docker run -d --name open-webui -p 8080:8080 ...
Terminal window
# 进入容器重置
docker exec -it open-webui bash
# 在容器内执行(具体命令视版本而定)
# 或者删除 volume 重新初始化(会丢失所有数据)
docker stop open-webui
docker rm open-webui
docker volume rm open-webui-data
# 重新创建容器