进阶 20 分钟部署

在 上部署一个AI聊天机器人以供团队使用 intranet

您的团队未经您同意就使用 ChatGPT,每次输入提示词都可能把内部文件传给 OpenAI。在内网部署企业 AI 聊天机器人,几小时就能解决这个问题:部署一台运行 Ollama 的服务器、支持多用户的 Open WebUI,以及位于前端并启用 HTTPS 的 Nginx,就能为整个团队提供类似 ChatGPT 的界面,且没有任何 token 离开您的网络。本指南涵盖完整技术栈,从硬件选型一直到对话备份。

作者: Mohamed Meguedmi·更新于 2026-08-27·已在 Windows、macOS 和 Linux 上测试

#为什么要在内网部署企业 AI 聊天机器人?

有三个具体原因促使团队选择内部部署:隐私保护(您的提示中经常包含代码片段、客户数据和财务信息)、成本(ChatGPT Team 订阅每用户每月 25 欧元,20 人的团队一年费用很快就达到 5000 欧元),以及控制权(您可以选择模型、系统提示和对话日志)。

配置得当的企业内网 AI 聊天机器人技术栈,只需一台机器就能支持最多 30–50 人的团队。超过这一规模时,就将推理服务器与前端分开部署,但架构保持不变。

i
最终你获得的内容
一个内部 HTTPS 地址(https://chat.entreprise.local),可从内网的所有工作电脑访问。每位员工都有自己的账户、历史记录和文件夹。任何数据都不会离开网络。服务器准备就绪后,完成全部配置所需时间不到 20 分钟。

#技术栈架构

企业本地 AI 套件

在工作场所部署本地 AI:GDPR、AI 法案、多用户架构、成本、供管理层参考的说明材料。

  • 在线空间,终身可用
  • PDF + 文件
  • 终身更新

四个组件堆叠,每个组件均有明确职责:

Ollama
托管模型(Qwen 3.5、Granite 4.2、Gemma 4、Mistral Small)的推理守护进程。默认监听地址为 http://localhost:11434。
Open WebUI
在 Docker 中运行的类 ChatGPT 多用户前端。支持账户、对话、RAG 以及管理员和用户角色的管理。
Nginx
作为前置反向代理,负责终止 HTTPS 连接、实施请求速率限制,并通过一个规范的内部域名提供服务。
Watchtower + cron
自动更新 Docker 镜像,并每天备份 Open WebUI 的数据卷(其中包含账户和对话)。
→
为何选择Open WebUI而非LibreChat或AnythingLLM?
Open WebUI 与 Ollama 的原生集成最完善(自动发现模型、管理显存),具备支持 RBAC 的稳健多用户模式,并内置无需外部依赖的 RAG 功能。目前,它是内网部署的默认选择。

#硬件和操作系统要求

系统配置取决于目标模型和并发负载情况。团队可参考以下实用建议:

小团队(5-15名用户,模型8-9B)
16 GB 内存,GPU 需要 8-12 GB 显存(RTX 3060 12GB,4060 Ti 16GB)。Qwen 3.5 9B Q4(6.6 GB,256k 上下文)或 Granite 4.2 8B(5.3 GB,token 消耗极低)
中等规模团队(15-30名用户,模型规模20-24B)
32 GB 内存,配备 16 GB 显存的 GPU(RTX 4070 Ti Super、5080)。Mistral Small 24B Q4(14 GB,法语表现良好)或 gpt-oss 20B(14 GB,采用 MXFP4 格式时速度很快)。
大型团队(30-50 人,模型规模 27-30B)
64 GB 内存,配备 24 GB 显存的 GPU(RTX 3090/4090),或 64 GB 的 Mac Studio M5 Max。Qwen 3.8 27B Q4(18 GB,262k 上下文,支持视觉)或 Granite 4.2 30B Q4(18 GB,面向企业)。
并发用户超过 50 人
切换至 vLLM 或在负载均衡器后部署多个 Ollama 实例。超出本指南范围。

操作系统方面:Ubuntu Server 22.04 或 24.04 LTS 仍是最简单的选择。需预先安装 Docker Engine 和 NVIDIA 驱动程序(使用 GPU 时还需安装 nvidia-container-toolkit)。

!
避免把服务器放在办公桌下面
依赖该工具的团队无法容忍因断电导致的服务中断。请将设备放置在服务器机房内,接入不间断电源(UPS),并确保 SSH 访问稳定。如果没有基础设施,将一台 Mac mini M4 放在置物架上,就能得到一台出色、安静且节能的推理服务器(空闲时功耗为 40 W)。

#1. 在服务器上安装 Ollama

Linux 上的安装通过官方脚本完成。该脚本会检测 NVIDIA GPU,并自动配置 systemd 服务。

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

默认情况下,守护进程仅在本地主机上监听。为了让 Docker (Open WebUI) 能从容器内调用它,需将其暴露在服务器的所有本地接口上。编辑 systemd 覆盖文件:

systemd 配置
sudo systemctl edit ollama
/etc/systemd/system/ollama.service.d/override.conf
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_KEEP_ALIVE=30m"
Environment="OLLAMA_NUM_PARALLEL=4"
OLLAMA_HOST=0.0.0.0:11434
监听所有网络接口。操作系统防火墙仍会阻止外部访问 11434 端口——只有同一台机器上的 Open WebUI 能访问该端口。
OLLAMA_KEEP_ALIVE=30m
在最后一次提示之后,将模型继续保留在显存中 30 分钟。避免在两次用户请求之间重新加载模型所带来的较大开销。
OLLAMA_NUM_PARALLEL=4
并行请求数。对于在 12 GB 显存上运行的 8–9B 模型(如 Qwen 3.5 9B),可以先设为 4;使用规格更低的 GPU 时,请降至 2。
重新加载并下载模型
sudo systemctl daemon-reload
sudo systemctl restart ollama
ollama pull qwen3.5:9b
→
法语团队应选择哪个模型?
Qwen 3.5 9B(6.6 GB,256k 上下文,多模态,Apache 2.0)对于组织内部的一般用户而言,是法语应用中质量与速度之间的最佳折中。对于要求更高的场景(法律分析、长文档摘要),请改用 Mistral Small 24B Q4(法语表现良好),或在显存允许的情况下使用 Qwen 3.8 27B。

#2. 使用 Docker 以多用户模式部署 Open WebUI

Open WebUI 通过一条 Docker 命令即可部署。挂载卷 open-webui:/app/backend/data 包含全部数据:账户、对话、提示词。您需要备份的就是这部分数据。

启动 Open WebUI
docker run -d \
  --name open-webui \
  --restart always \
  -p 127.0.0.1:3000:8080 \
  -v open-webui:/app/backend/data \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  -e WEBUI_AUTH=true \
  -e ENABLE_SIGNUP=false \
  -e DEFAULT_USER_ROLE=pending \
  --add-host=host.docker.internal:host-gateway \
  ghcr.io/open-webui/open-webui:main
-p 127.0.0.1:3000:8080
Open WebUI 仅能在服务器本地访问,Nginx 将作为内部网络的桥梁。这对安全性至关重要。
ENABLE_SIGNUP=false
任何人都无法从登录页面创建账户。您需要在管理后台创建用户账户。
DEFAULT_USER_ROLE=pending
新账户需等待管理员审核。避免员工误邀请外部人员。
OLLAMA_BASE_URL
指向 Ollama,该服务运行在主机上。host.docker.internal 通过 --add-host 参数解析为 Docker 网关。

通过 http://serveur:3000 界面(经 SSH 转发或直接访问)创建的第一个账户会自动成为管理员。请在容器启动后立即创建该账户,并在对外开放服务之前完成这一步。

!
第一个账户 = 管理员
如果在创建管理员账户之前就让 Open WebUI 可通过网络访问,第一个注册的人将获得全部权限。请始终在本地或通过 SSH 隧道完成初始设置,绝不要直接向网络开放服务。

#3. 使用Nginx配置反向代理并启用内部SSL

为了妥善对外提供 chat.entreprise.local 服务,由 Nginx 终止 HTTPS 连接,再将请求转发到位于 127.0.0.1:3000 的 Open WebUI。在内网中,您可以使用内部 PKI 颁发的证书,或通过 GPO 部署到各台计算机上的自签名证书。

安装Nginx
sudo apt install nginx
/etc/nginx/sites-available/chat-intranet
server {
    listen 80;
    server_name chat.entreprise.local;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name chat.entreprise.local;

    ssl_certificate     /etc/ssl/certs/chat-intranet.crt;
    ssl_certificate_key /etc/ssl/private/chat-intranet.key;
    ssl_protocols TLSv1.2 TLSv1.3;

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }
}
client_max_body_size 100M
RAG 不可或缺的设置:允许您的用户上传最大 100 MB 的 PDF 或文档。
Upgrade / Connection
启用WebSocket。缺少这两行时,token级流式输出将停止,界面会显得卡住。
proxy_read_timeout 600s
耗时较长的生成请求(例如为大型文档生成摘要)可能需要数分钟。Nginx 的默认超时时间(60 秒)会导致响应在中途被截断。
启用并重新加载
sudo ln -s /etc/nginx/sites-available/chat-intranet /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

#4. 身份认证、角色与用户引导

Open WebUI 原生支持三个角色:admin(配置所有设置)、user(使用聊天功能)、pending(账户已创建但尚未激活)。对于中小企业,本地身份验证就足够了。当用户人数超过 30 至 40 人,或需要严格遵循 IT 管理要求时,请通过 OIDC 对接您的身份提供商(Keycloak、Authentik、Microsoft Entra)。

  1. 01
    创建用户
    在 Admin 面板中进入 Users → Add User。填写电子邮箱、姓名和初始密码。用户会在首次登录时更改该密码。
  2. 02
    按角色限制模型
    在 Admin → Models 中,您可以对普通用户隐藏某些模型。例如,如果已加载 Qwen 3.8 27B(显存占用最高的模型),可以将其设为仅供管理员使用。
  3. 03
    强制使用默认系统提示词
    Admin → Settings → Interface → Default Prompt Suggestions。非常适合设定使用规则(“你用法语回答,拒绝敏感话题等。”)。
  4. 04
    禁用外部功能
    如果您不希望有任何出站网络连接,请在 Admin → Settings 中关闭 Web Search(否则 Open WebUI 会调用 DuckDuckGo)和 Image Generation。
→
借助 OIDC 进一步提升
Open WebUI 支持通过环境变量配置 OAUTH_PROVIDER_NAME、OAUTH_CLIENT_ID、OAUTH_CLIENT_SECRET 和 OPENID_PROVIDER_URL。10 分钟内,用户即可使用 Entra ID 或 Google Workspace 账户登录,无需管理本地密码。

#5. 监控与对话备份

需要监控三项内容:服务器的健康状况(CPU/GPU/RAM)、Ollama API 的健康状况,以及 Open WebUI 数据库的完整性。还需要备份一项内容:Docker 的 open-webui 数据卷。

#快速监控

Ollama 健康检查
curl -s http://localhost:11434/api/tags | jq '.models | length'

如果您使用 Prometheus + Grafana,用 nvidia_smi_exporter 监控 GPU、用 node_exporter 监控系统,就足以满足 95% 的情况。Open WebUI 本身提供可通过 GET 请求访问的 /health 接口,可将其加入您的可用性检查。

#每天备份 Open WebUI 数据卷

Docker 卷 open-webui 中包含一个 SQLite 数据库,其中存储了所有账户、对话、自定义提示词以及为 RAG 建立索引的文档。丢失这个卷,就意味着团队的全部历史记录都会丢失。

/usr/local/bin/backup-openwebui.sh
#!/bin/bash
set -e
BACKUP_DIR=/var/backups/open-webui
TIMESTAMP=$(date +%Y%m%d-%H%M)
mkdir -p "$BACKUP_DIR"

docker run --rm \
  -v open-webui:/data \
  -v "$BACKUP_DIR":/backup \
  alpine tar czf "/backup/openwebui-$TIMESTAMP.tar.gz" -C /data .

find "$BACKUP_DIR" -name 'openwebui-*.tar.gz' -mtime +14 -delete
每天凌晨 2 点执行的 Cron 定时任务
sudo chmod +x /usr/local/bin/backup-openwebui.sh
echo "0 2 * * * root /usr/local/bin/backup-openwebui.sh" | sudo tee /etc/cron.d/openwebui-backup

脚本保留14天的历史记录。要建立像样的灾难恢复计划(PRA),请每晚通过rsync或rclone,将/var/backups/open-webui复制到NAS或加密的S3存储桶。

!
合规性与对话日志
对话中可能包含个人数据或战略性数据。请在您的 GDPR 登记册中记录数据保留期限,并为用户提供清除对话的方式(Open WebUI 原生支持此功能)。如果条件允许,请在磁盘层面对 Docker 卷进行加密(LUKS)。

#故障排除

Open WebUI 检测不到任何模型
容器无法连接到 Ollama。请运行 docker exec open-webui curl http://host.docker.internal:11434/api/tags 进行检查。如果超时,说明您的 Ollama 正在监听 127.0.0.1——请将设置改回 OLLAMA_HOST=0.0.0.0:11434。
流式输出不连贯或卡住
Nginx 缺少 WebSocket 头部。请检查 vhost 配置中是否存在 proxy_set_header Upgrade 和 Connection "upgrade"。
长时间请求出现 504 网关超时
proxy_read_timeout 设置过低。请至少设为 600 秒。为大型文档生成摘要时,请提高到 1200 秒。
GPU 资源饱和,延迟急剧上升
并行请求过多。将 OLLAMA_NUM_PARALLEL 设置为 2,并提高 OLLAMA_KEEP_ALIVE 值以避免频繁重新加载。
/var/lib/docker 出现 'no space left' 错误
Ollama 模型不包含在 Docker 中——是 open-webui 的卷导致体积增大。请运行 docker system prune,并监控 RAG(索引文档会迅速达到数 GB)。

#深入了解

您已经有一个供团队使用的实例在运行。接下来,可以从三个方面自然地推进,让它更专业:

记录GDPR合规性
《本地 LLM 与 GDPR》指南涵盖审计、处理活动记录及 CNIL 建议——如果您的团队处理个人数据,这份指南必不可少。
通过 RAG 扩展工具
使用 ChromaDB 和 Mistral 的 RAG 指南介绍了如何将您的内部文档库(维基、导出的 SharePoint 内容、合同)连接到 Open WebUI。
自动化工作流
《使用 n8n 和 Ollama 实现自动化》指南介绍了如何将您的聊天机器人连接到业务系统(收到的邮件、工单、RSS),同时确保数据完全不会泄露到云端。
这份指南对您有帮助吗?

有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。