上一篇 下一篇 分享链接 返回 返回顶部

从零搭建企业内网 ChatGPT:Ollama + Open WebUI 私有化部署实战命令全记录

发布人:慈云数据-客服中心 发布时间:14小时前 阅读量:5

ChatGPT 私有化部署方案|附完整命令

说明:严格来说,OpenAI 官方的 ChatGPT 产品本身不能被“私有化部署”到企业内网或个人服务器中。通常我们所说的“ChatGPT 私有化部署”,本质上是指:在本地服务器、企业内网或私有云环境中,部署开源大语言模型,并配套 Web 聊天界面、API 服务、知识库检索、权限控制等能力,从而实现类似 ChatGPT 的对话体验。

本文将以 Ollama + Open WebUI + Docker Compose 为核心方案,给出一套可落地、易维护、适合个人和中小团队使用的私有化部署方案,并附上完整命令。


一、为什么要做 ChatGPT 私有化部署?

随着大语言模型在办公、研发、客服、知识管理、数据分析等场景中的普及,越来越多企业开始关注“私有化部署”。相比直接使用公网 AI 服务,私有化部署主要有以下优势。

1. 数据更安全

很多企业内部资料、客户信息、合同文档、研发代码、业务数据都不适合直接上传到公网服务。私有化部署可以把模型服务、对话记录、知识库文档都放在本地服务器或内网环境中,降低数据泄露风险。

2. 使用成本可控

如果团队成员较多,并且每天调用频率较高,长期使用第三方 API 的费用可能并不低。私有化部署虽然前期需要服务器和显卡投入,但后续边际成本更低,尤其适合固定场景、大量重复调用的企业。

3. 可深度定制

私有化部署可以根据业务需求定制模型、提示词、知识库、插件、API 接口、权限体系和日志策略。例如:

  • 部署企业内部知识库问答系统;
  • 接入公司 OA、CRM、ERP;
  • 为客服系统提供智能回复;
  • 为研发团队提供代码助手;
  • 针对特定行业语料进行微调或 RAG 增强。

4. 网络环境更稳定

在内网或私有云中运行,可以减少公网访问不稳定、API 限流、外部服务不可用等问题。对于对稳定性要求较高的业务系统来说,这一点非常重要。


二、整体部署架构

本文推荐的基础架构如下:

用户浏览器
   ↓
Nginx 反向代理 / HTTPS
   ↓
Open WebUI 聊天界面
   ↓
Ollama 模型服务
   ↓
本地大语言模型,如 Qwen、Llama、DeepSeek、Mistral

各组件作用如下:

组件 作用
Ollama 本地大模型运行框架,负责下载、管理和运行模型
Open WebUI 类 ChatGPT 的网页聊天界面,支持多用户、知识库、模型管理
Docker Compose 统一编排服务,方便启动、停止、升级
Nginx 反向代理、域名访问、HTTPS 证书配置
大语言模型 实际提供对话能力的模型,如 Qwen、DeepSeek、Llama 等

如果你只是个人学习或小团队内部使用,Ollama + Open WebUI 已经足够。如果后续需要高并发推理、GPU 集群、OpenAI API 兼容接口,可以进一步使用 vLLM、Xinference、FastChat 等方案。


三、服务器配置建议

不同模型对硬件要求差异较大。一般来说,模型参数越大,效果越好,但显存占用和推理速度也越高。

1. 最低配置

适合个人测试、小模型运行:

CPU:4 核以上
内存:16GB
硬盘:100GB SSD
GPU:可无 GPU
系统:Ubuntu 22.04 LTS

可运行模型:

  • qwen2.5:1.5b
  • qwen2.5:3b
  • llama3.2:3b
  • deepseek-r1:1.5b

2. 推荐配置

适合小团队使用:

CPU:8 核以上
内存:32GB 或 64GB
硬盘:500GB SSD
GPU:NVIDIA 16GB 显存以上
系统:Ubuntu 22.04 LTS

可运行模型:

  • qwen2.5:7b
  • qwen2.5-coder:7b
  • llama3.1:8b
  • deepseek-r1:7b

3. 企业级配置

适合多人并发、知识库问答、API 服务:

CPU:16 核以上
内存:128GB
硬盘:1TB NVMe SSD
GPU:NVIDIA A10 / A100 / L40S / 4090 等
系统:Ubuntu 22.04 LTS

可运行模型:

  • qwen2.5:14b
  • qwen2.5:32b
  • deepseek-r1:32b
  • llama3.1:70b,需更高显存或多卡部署

四、安装基础环境

以下命令以 Ubuntu 22.04 为例。

1. 更新系统

sudo apt update && sudo apt upgrade -y

2. 安装常用工具

sudo apt install -y \
  curl \
  wget \
  git \
  vim \
  unzip \
  htop \
  net-tools \
  ca-certificates \
  gnupg \
  lsb-release

3. 设置服务器时区

sudo timedatectl set-timezone Asia/Shanghai
timedatectl

五、安装 Docker 和 Docker Compose

1. 卸载旧版本 Docker

sudo apt remove -y docker docker-engine docker.io containerd runc

2. 添加 Docker 官方源

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

3. 安装 Docker

sudo apt update

sudo apt install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

4. 启动 Docker

sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker

5. 验证 Docker

docker --version
docker compose version
sudo docker run hello-world

6. 将当前用户加入 Docker 用户组

sudo usermod -aG docker $USER

执行后建议重新登录服务器,或者执行:

newgrp docker

六、安装 NVIDIA 驱动和容器运行时

如果你的服务器没有 NVIDIA GPU,可以跳过本节。CPU 也能运行小模型,但速度会明显慢一些。

1. 查看显卡

lspci | grep -i nvidia

2. 安装推荐驱动

sudo ubuntu-drivers devices
sudo ubuntu-drivers autoinstall

安装完成后重启:

sudo reboot

重启后验证:

nvidia-smi

如果能看到显卡型号、驱动版本、显存占用,说明驱动安装成功。

3. 安装 NVIDIA Container Toolkit

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit

配置 Docker 使用 NVIDIA 容器运行时:

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

测试 GPU 是否能被容器识别:

docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi

七、部署 Ollama

Ollama 是当前非常流行的本地大模型运行工具,优点是简单、模型丰富、命令友好,非常适合作为私有化部署的基础。

1. 创建部署目录

sudo mkdir -p /opt/chatgpt-private
sudo chown -R $USER:$USER /opt/chatgpt-private
cd /opt/chatgpt-private

2. 编写 Docker Compose 文件

创建 docker-compose.yml

vim docker-compose.yml

写入以下内容:

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ./ollama:/root/.ollama
    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"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_NAME=Private ChatGPT
    volumes:
      - ./open-webui:/app/backend/data
    depends_on:
      - ollama

如果你的机器没有 NVIDIA GPU,请将 ollama 中的 deploy 部分删除,改成如下:

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ./ollama:/root/.ollama

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_NAME=Private ChatGPT
    volumes:
      - ./open-webui:/app/backend/data
    depends_on:
      - ollama

3. 启动服务

docker compose up -d

查看容器状态:

docker ps

查看日志:

docker logs -f ollama
docker logs -f open-webui

八、下载并运行模型

Ollama 启动后,需要下载模型。可以进入 Ollama 容器执行命令。

1. 下载 Qwen 模型

docker exec -it ollama ollama pull qwen2.5:7b

运行测试:

docker exec -it ollama ollama run qwen2.5:7b

输入:

请用中文介绍一下你自己。

如果模型正常回复,说明部署成功。

2. 下载 DeepSeek R1 模型

docker exec -it ollama ollama pull deepseek-r1:7b

运行:

docker exec -it ollama ollama run deepseek-r1:7b

3. 下载代码模型

如果主要用于编程辅助,可以下载 Qwen Coder:

docker exec -it ollama ollama pull qwen2.5-coder:7b

测试:

docker exec -it ollama ollama run qwen2.5-coder:7b

4. 查看已安装模型

docker exec -it ollama ollama list

5. 删除模型

docker exec -it ollama ollama rm qwen2.5:7b

九、访问 Web 聊天界面

打开浏览器访问:

http://服务器IP:3000

首次访问时,需要创建管理员账号。Open WebUI 会将第一个注册用户作为管理员。

登录后,可以在模型列表中选择已经下载的模型,例如:

qwen2.5:7b
deepseek-r1:7b
qwen2.5-coder:7b

然后就可以像使用 ChatGPT 一样进行对话。

如果模型没有显示,可以检查 Open WebUI 是否正确连接 Ollama:

docker logs -f open-webui

也可以在服务器上测试 Ollama API:

curl http://127.0.0.1:11434/api/tags

如果返回模型列表,说明 Ollama 本身正常。


十、配置 Nginx 反向代理

生产环境不建议直接暴露 3000 端口,建议使用 Nginx 进行反向代理,并配置域名和 HTTPS。

1. 安装 Nginx

sudo apt install -y nginx

启动并设置开机自启:

sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx

2. 创建站点配置

假设你的域名是:

ai.example.com

创建配置文件:

sudo vim /etc/nginx/sites-available/chatgpt-private.conf

写入:

server {
    listen 80;
    server_name ai.example.com;

    client_max_body_size 200m;

    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 3600;
        proxy_send_timeout 3600;
    }
}

启用站点:

sudo ln -s /etc/nginx/sites-available/chatgpt-private.conf /etc/nginx/sites-enabled/

检查配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

此时可以访问:

http://ai.example.com

十一、配置 HTTPS 证书

推荐使用 Let’s Encrypt 免费证书。

1. 安装 Certbot

sudo apt install -y certbot python3-certbot-nginx

2. 申请证书

sudo certbot --nginx -d ai.example.com

按照提示输入邮箱、同意协议即可。

3. 测试证书自动续期

sudo certbot renew --dry-run

申请成功后,就可以通过 HTTPS 访问:

https://ai.example.com

十二、开放防火墙端口

如果服务器启用了 UFW 防火墙,需要放行 HTTP、HTTPS 端口。

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

如果你只在内网使用,可以不开放公网端口,而是在公司 VPN 或内网网段中访问。


十三、配置 OpenAI 兼容 API

很多应用支持 OpenAI API 格式。如果想让内部业务系统调用本地模型,可以通过 Open WebUI 或 Ollama 暴露接口。

Ollama 本身提供 API,例如生成接口:

curl http://127.0.0.1:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5:7b",
    "prompt": "请写一段关于企业知识库建设的介绍",
    "stream": false
  }'

聊天接口:

curl http://127.0.0.1:11434/api/chat \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5:7b",
    "messages": [
      {
        "role": "system",
        "content": "你是一个专业的企业知识库助手。"
      },
      {
        "role": "user",
        "content": "请解释什么是 RAG。"
      }
    ],
    "stream": false
  }'

如果业务系统需要公网或内网调用,建议通过 Nginx 代理 API,并增加认证机制,不建议直接暴露 11434 端口。


十四、启用知识库能力

Open WebUI 支持文档上传和知识库功能,可以将企业内部文档上传后,让模型基于文档回答问题。

常见可上传资料包括:

PDF 文档
Word 文档
Markdown 文档
TXT 文档
内部制度
产品手册
客服话术
研发文档
FAQ

使用建议:

  1. 文档尽量结构清晰,标题层级明确;
  2. 不要一次上传过大的文档,可按部门或主题拆分;
  3. 对重要文档定期更新;
  4. 建议为不同团队建立不同知识集合;
  5. 敏感数据要设置权限访问。

如果对知识库准确率要求较高,可以进一步引入 RAG 系统,例如:

  • Dify
  • FastGPT
  • AnythingLLM
  • LangChain
  • LlamaIndex
  • Milvus
  • Chroma
  • Elasticsearch

基础流程一般是:

文档上传
  ↓
文本切分
  ↓
向量化
  ↓
写入向量数据库
  ↓
用户提问
  ↓
检索相关片段
  ↓
模型基于上下文回答

十五、服务维护常用命令

1. 查看服务状态

cd /opt/chatgpt-private
docker compose ps

2. 查看日志

docker logs -f ollama
docker logs -f open-webui

3. 停止服务

cd /opt/chatgpt-private
docker compose down

4. 启动服务

cd /opt/chatgpt-private
docker compose up -d

5. 重启服务

cd /opt/chatgpt-private
docker compose restart

6. 更新镜像

cd /opt/chatgpt-private
docker compose pull
docker compose up -d

7. 查看磁盘占用

du -sh /opt/chatgpt-private/*
docker system df

8. 清理无用 Docker 资源

谨慎执行:

docker system prune -a

如果不想删除模型数据,不要删除 /opt/chatgpt-private/ollama 目录。


十六、数据备份方案

私有化部署后,需要重点备份两类数据:

  1. Open WebUI 数据:用户、对话、知识库、配置;
  2. Ollama 模型数据:已下载模型文件。

创建备份目录:

sudo mkdir -p /backup/chatgpt-private
sudo chown -R $USER:$USER /backup/chatgpt-private

执行备份:

cd /opt

tar -czvf /backup/chatgpt-private/chatgpt-private-$(date +%F).tar.gz chatgpt-private

查看备份文件:

ls -lh /backup/chatgpt-private

恢复时可以执行:

cd /opt
tar -xzvf /backup/chatgpt-private/chatgpt-private-2025-01-01.tar.gz

然后重新启动服务:

cd /opt/chatgpt-private
docker compose up -d

建议将备份文件同步到 NAS、对象存储或异地服务器:

rsync -avz /backup/chatgpt-private/ user@backup-server:/data/backup/chatgpt-private/

十七、安全加固建议

私有化部署并不代表天然安全,尤其当服务暴露到公网时,必须做好安全控制。

1. 不要直接暴露 Ollama 端口

11434 是模型 API 端口,不建议公网开放。建议仅监听本地或内网,并通过受控网关访问。

可以在云服务器安全组中只开放:

22
80
443

不要开放:

11434
3000

2. 开启 HTTPS

如果涉及账号密码、文档上传、企业知识库,必须配置 HTTPS。

3. 设置强密码

Open WebUI 管理员账号必须使用强密码,并定期更换。

4. 限制注册

在 Open WebUI 后台关闭公开注册,仅允许管理员邀请用户。

5. 配置访问白名单

如果只给公司内部使用,可以在 Nginx 中限制 IP:

allow 192.168.0.0/16;
allow 10.0.0.0/8;
deny all;

6. 定期更新镜像

cd /opt/chatgpt-private
docker compose pull
docker compose up -d

7. 定期备份

至少每周备份一次 Open WebUI 数据和知识库文件。


十八、常见问题排查

1. Open WebUI 无法连接 Ollama

检查容器是否正常:

docker ps

检查 Ollama 日志:

docker logs -f ollama

检查 Open WebUI 环境变量:

docker inspect open-webui | grep OLLAMA_BASE_URL

正确值应类似:

http://ollama:11434

2. 模型回复很慢

可能原因包括:

  • 没有 GPU,只使用 CPU 推理;
  • 模型参数过大;
  • 显存不足;
  • 并发用户太多;
  • 上下文长度设置过高。

查看 GPU 使用情况:

nvidia-smi

如果显存不足,可以换更小模型,例如:

docker exec -it ollama ollama pull qwen2.5:3b

3. 浏览器无法访问

检查端口监听:

sudo netstat -tulnp | grep 3000

检查防火墙:

sudo ufw status

检查 Nginx:

sudo nginx -t
sudo systemctl status nginx

4. Docker Compose 启动失败

查看详细日志:

docker compose logs

重新拉取镜像:

docker compose pull
docker compose up -d

十九、进阶方案:使用 vLLM 提升并发能力

如果你的场景是企业内部 API 服务,需要较高并发和更好的吞吐,可以考虑使用 vLLM。vLLM 更适合部署在 GPU 服务器上,并提供 OpenAI 兼容接口。

示例命令如下:

docker run -d \
  --name vllm-qwen \
  --restart unless-stopped \
  --gpus all \
  -p 8000:8000 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  vllm/vllm-openai:latest \
  --model Qwen/Qwen2.5-7B-Instruct \
  --host 0.0.0.0 \
  --port 8000

测试接口:

curl http://127.0.0.1:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen2.5-7B-Instruct",
    "messages": [
      {
        "role": "user",
        "content": "请用中文介绍 vLLM 的优势"
      }
    ],
    "temperature": 0.7
  }'

vLLM 更适合以下场景:

  • 多用户并发;
  • 业务系统频繁调用 API;
  • 需要 OpenAI API 兼容格式;
  • 有较强 GPU 资源;
  • 对吞吐量和响应速度要求较高。

但对于普通个人用户或小团队,Ollama 部署更简单,维护成本更低。


二十、总结

本文介绍了一套较完整的 ChatGPT 私有化部署方案。核心思路是使用开源大语言模型替代官方 ChatGPT,并通过 Ollama 提供模型运行能力,通过 Open WebUI 提供类 ChatGPT 的网页聊天体验,再配合 Docker Compose、Nginx、HTTPS、备份和安全策略,实现一套可长期运行的私有 AI 助手平台。

推荐落地路径如下:

第一阶段:Ollama + Open WebUI,完成基础聊天能力
第二阶段:接入企业知识库,实现文档问答
第三阶段:配置 HTTPS、权限、备份和日志
第四阶段:接入业务系统 API
第五阶段:根据并发需求升级到 vLLM 或多机部署

对于个人用户,可以从 qwen2.5:7bdeepseek-r1:7b 开始;对于企业团队,可以根据 GPU 显存和并发需求选择更大的模型或专用推理框架。只要做好权限控制、数据备份和服务监控,私有化部署的 AI 助手完全可以成为企业内部知识管理、办公自动化和研发效率提升的重要基础设施。

目录结构
全文