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

内网也能用的智能办公平台搭建指南:Docker一键部署与完整配置

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

AI办公 部署完整教程|附配置文件

本文将从零开始,带你部署一套可本地化运行的“AI办公系统”。该系统适合企业内部知识问答、文档总结、邮件撰写、会议纪要生成、表格辅助分析、流程自动化等场景。教程以 Docker Compose 为核心,组合使用 Ollama + Open WebUI + Nginx,并预留知识库、API调用和企业内网访问扩展能力。


一、什么是AI办公系统?

所谓“AI办公”,并不是单纯安装一个聊天机器人,而是将大模型能力嵌入日常办公流程中,例如:

  • 帮你撰写周报、日报、邮件、通知;
  • 对Word、PDF、Excel等文档进行总结和问答;
  • 根据会议录音或会议纪要生成行动项;
  • 辅助编写方案、合同、标书、运营文案;
  • 将企业内部资料接入知识库,实现内部问答;
  • 通过API接入OA、CRM、ERP、工单系统;
  • 在内网部署,避免敏感数据上传到公网平台。

本文部署的方案偏向“轻量级、易落地、可扩展”,适合个人、团队、小型企业先行试用,也可以作为后续建设企业级AI办公平台的基础。


二、整体架构说明

本教程采用如下架构:

用户浏览器
    ↓
Nginx反向代理
    ↓
Open WebUI 前端界面
    ↓
Ollama 本地大模型服务
    ↓
本地模型:qwen、llama、deepseek、mistral等

各组件作用如下:

组件 作用
Ollama 本地大模型运行服务,负责加载和推理模型
Open WebUI 类似ChatGPT的网页界面,支持多用户、聊天、模型管理
Nginx 反向代理,方便域名访问、HTTPS配置、统一入口
Docker Compose 一键编排多个服务,便于部署和维护
本地模型 提供实际AI能力,例如写作、总结、问答、代码生成

本方案最大的优点是:
部署简单、成本低、数据可控、适合内网使用。


三、服务器配置建议

AI办公系统对硬件有一定要求,尤其是本地运行大模型时,内存和显存非常重要。

1. 最低配置

适合个人测试:

项目 配置
CPU 4核
内存 8GB
硬盘 50GB
GPU 可无
系统 Ubuntu 22.04 / Debian 12 / CentOS 7+

可运行较小模型,例如:

  • qwen2.5:3b
  • llama3.2:3b
  • gemma2:2b

2. 推荐配置

适合团队内部使用:

项目 配置
CPU 8核以上
内存 32GB以上
硬盘 200GB SSD
GPU NVIDIA 8GB显存以上
系统 Ubuntu 22.04 LTS

可运行:

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

3. 企业级配置

适合多人并发、知识库、自动化流程:

项目 配置
CPU 16核以上
内存 64GB以上
硬盘 500GB SSD或更高
GPU NVIDIA 24GB显存以上
网络 千兆内网
系统 Ubuntu Server 22.04 LTS

可运行:

  • qwen2.5:14b
  • llama3.1:70b量化版
  • deepseek-r1:14b / 32b量化版

四、部署前准备

本文以 Ubuntu 22.04 为例。

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装常用工具

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

3. 安装Docker

curl -fsSL https://get.docker.com | bash

启动Docker:

sudo systemctl enable docker
sudo systemctl start docker

查看版本:

docker version

4. 安装Docker Compose

新版Docker通常已内置Compose插件,可直接检查:

docker compose version

如果没有安装,可执行:

sudo apt install -y docker-compose-plugin

五、创建项目目录

建议将AI办公系统统一放到 /opt/ai-office 目录下:

sudo mkdir -p /opt/ai-office
sudo chown -R $USER:$USER /opt/ai-office
cd /opt/ai-office

创建必要目录:

mkdir -p nginx/conf.d
mkdir -p nginx/certs
mkdir -p data/ollama
mkdir -p data/open-webui

目录结构如下:

/opt/ai-office
├── docker-compose.yml
├── .env
├── nginx
│   ├── conf.d
│   │   └── ai-office.conf
│   └── certs
├── data
│   ├── ollama
│   └── open-webui

六、编写环境变量配置文件

在项目根目录创建 .env 文件:

vim .env

写入以下内容:

# 项目名称
COMPOSE_PROJECT_NAME=ai-office

# Open WebUI端口
OPEN_WEBUI_PORT=3000

# Ollama端口
OLLAMA_PORT=11434

# Nginx HTTP端口
NGINX_HTTP_PORT=80

# Nginx HTTPS端口,如暂不启用HTTPS可先保留
NGINX_HTTPS_PORT=443

# 默认管理员邮箱,可在首次登录后创建管理员
ADMIN_EMAIL=admin@example.com

# 时区
TZ=Asia/Shanghai

说明:

  • OPEN_WEBUI_PORT:Open WebUI容器内部服务端口;
  • OLLAMA_PORT:Ollama API端口;
  • NGINX_HTTP_PORT:对外访问端口;
  • TZ:设置为中国时区,方便日志时间准确。

七、编写Docker Compose配置文件

/opt/ai-office 下创建 docker-compose.yml

vim docker-compose.yml

写入以下完整配置:

version: "3.9"

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ai-office-ollama
    restart: unless-stopped
    ports:
      - "${OLLAMA_PORT}:11434"
    volumes:
      - ./data/ollama:/root/.ollama
    environment:
      - TZ=${TZ}
    networks:
      - ai-office-net

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: ai-office-open-webui
    restart: unless-stopped
    depends_on:
      - ollama
    ports:
      - "${OPEN_WEBUI_PORT}:8080"
    volumes:
      - ./data/open-webui:/app/backend/data
    environment:
      - TZ=${TZ}
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_AUTH=true
      - ENABLE_SIGNUP=true
      - DEFAULT_USER_ROLE=user
    networks:
      - ai-office-net

  nginx:
    image: nginx:1.25-alpine
    container_name: ai-office-nginx
    restart: unless-stopped
    depends_on:
      - open-webui
    ports:
      - "${NGINX_HTTP_PORT}:80"
      - "${NGINX_HTTPS_PORT}:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/certs:/etc/nginx/certs
    environment:
      - TZ=${TZ}
    networks:
      - ai-office-net

networks:
  ai-office-net:
    driver: bridge

这份配置会启动三个服务:

  1. ollama:负责运行本地大模型;
  2. open-webui:提供网页聊天界面;
  3. nginx:提供统一访问入口。

八、编写Nginx反向代理配置

创建配置文件:

vim nginx/conf.d/ai-office.conf

写入以下内容:

server {
    listen 80;
    server_name _;

    client_max_body_size 200m;

    location / {
        proxy_pass http://open-webui:8080;

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

配置说明:

  • client_max_body_size 200m:允许上传较大的PDF、Word、Excel文件;
  • proxy_read_timeout 3600:防止大模型长时间回答时连接中断;
  • UpgradeConnection:支持WebSocket连接。

如果你有域名,例如 ai.example.com,可以将:

server_name _;

改为:

server_name ai.example.com;

九、启动AI办公系统

在项目目录下执行:

docker compose up -d

查看容器状态:

docker ps

正常情况下会看到三个容器:

ai-office-ollama
ai-office-open-webui
ai-office-nginx

查看日志:

docker compose logs -f

如果没有报错,说明基础服务已经部署成功。


十、下载并运行本地模型

Ollama启动后,还需要下载模型。

进入Ollama容器:

docker exec -it ai-office-ollama bash

下载中文能力较好的模型:

ollama pull qwen2.5:7b

也可以下载更小的模型:

ollama pull qwen2.5:3b

或下载推理模型:

ollama pull deepseek-r1:7b

查看已安装模型:

ollama list

测试模型是否可用:

ollama run qwen2.5:7b

输入:

请帮我写一份项目周报模板。

如果能正常输出内容,说明模型运行成功。


十一、访问AI办公系统

在浏览器中访问:

http://服务器IP

如果你没有使用Nginx,也可以访问:

http://服务器IP:3000

首次打开Open WebUI时,需要注册一个账号。第一个注册的用户通常会成为管理员。

注册完成后,进入后台可以看到模型列表。如果没有显示模型,可以检查Open WebUI是否正确连接Ollama。


十二、常用办公场景提示词

部署完成后,你可以直接将AI用于日常办公。以下是一些实用提示词。

1. 周报生成

你是一名专业项目经理,请根据以下内容生成一份结构清晰的项目周报。
要求包括:本周完成事项、存在问题、风险点、下周计划。
内容如下:
【粘贴工作内容】

2. 邮件润色

请帮我将下面这封邮件改写得更加正式、清晰、礼貌,适合发送给客户。
邮件内容:
【粘贴邮件】

3. 会议纪要整理

请根据以下会议记录生成会议纪要。
要求包含:会议主题、参会人员、讨论要点、决议事项、待办任务、负责人、截止时间。
会议记录:
【粘贴内容】

4. 文档总结

请将以下文档内容总结为三部分:
1. 核心观点
2. 关键数据
3. 可执行建议

文档内容:
【粘贴文档】

5. Excel数据分析思路

你是一名数据分析师,请根据以下表格数据,分析业务趋势、异常点和优化建议。
数据如下:
【粘贴表格数据】

十三、开启HTTPS访问

如果你的AI办公系统需要公网访问,强烈建议启用HTTPS。

假设你已经有证书文件:

nginx/certs/fullchain.pem
nginx/certs/privkey.pem

修改 nginx/conf.d/ai-office.conf

server {
    listen 80;
    server_name ai.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name ai.example.com;

    ssl_certificate /etc/nginx/certs/fullchain.pem;
    ssl_certificate_key /etc/nginx/certs/privkey.pem;

    client_max_body_size 200m;

    location / {
        proxy_pass http://open-webui:8080;

        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 https;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 3600;
        proxy_send_timeout 3600;
    }
}

重启Nginx:

docker compose restart nginx

访问:

https://ai.example.com

十四、配置GPU加速

如果服务器有NVIDIA显卡,建议启用GPU推理,否则大模型回答速度可能较慢。

1. 安装NVIDIA驱动

查看显卡:

lspci | grep -i nvidia

安装驱动后确认:

nvidia-smi

如果能看到显卡信息,说明驱动正常。

2. 安装NVIDIA Container Toolkit

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

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/$distribution/libnvidia-container.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:

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

3. 修改docker-compose.yml

ollama 服务改为支持GPU:

  ollama:
    image: ollama/ollama:latest
    container_name: ai-office-ollama
    restart: unless-stopped
    ports:
      - "${OLLAMA_PORT}:11434"
    volumes:
      - ./data/ollama:/root/.ollama
    environment:
      - TZ=${TZ}
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    networks:
      - ai-office-net

然后重启:

docker compose down
docker compose up -d

进入容器运行模型时,Ollama会自动优先使用GPU。


十五、模型选择建议

不同办公场景适合不同模型。

场景 推荐模型
中文写作 qwen2.5:7b、qwen2.5:14b
日常问答 llama3.1:8b、qwen2.5:7b
推理分析 deepseek-r1:7b、deepseek-r1:14b
代码辅助 qwen2.5-coder:7b
低配置机器 qwen2.5:3b、llama3.2:3b
高质量输出 qwen2.5:14b、deepseek-r1:32b

如果你的机器配置有限,建议优先选择 qwen2.5:7b。它在中文办公、总结、写作、问答方面表现比较均衡。


十六、数据安全与权限建议

企业部署AI办公系统时,必须注意数据安全。

1. 不建议直接公网裸奔

如果必须公网访问,至少应做到:

  • 开启HTTPS;
  • 使用强密码;
  • 关闭自由注册;
  • 增加防火墙限制;
  • 配置访问白名单;
  • 定期备份数据。

2. 关闭用户注册

当管理员账号创建完成后,可以修改 docker-compose.yml 中Open WebUI环境变量:

      - ENABLE_SIGNUP=false

然后重启:

docker compose restart open-webui

这样新用户就不能随意注册。

3. 限制端口访问

建议仅对外开放Nginx端口,不直接暴露Ollama端口。

如果只允许内网访问,可使用防火墙:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw deny 11434/tcp
sudo ufw enable

如果只在内网使用,甚至可以不开放公网端口。


十七、备份与恢复

AI办公系统的重要数据主要包括:

  • Open WebUI用户数据;
  • 聊天记录;
  • 模型文件;
  • 配置文件;
  • 上传的知识库文件。

1. 备份

cd /opt
tar -zcvf ai-office-backup-$(date +%F).tar.gz ai-office

2. 恢复

将备份文件上传到新服务器:

cd /opt
tar -zxvf ai-office-backup-2025-01-01.tar.gz
cd ai-office
docker compose up -d

3. 定时备份

创建脚本:

vim /opt/backup-ai-office.sh

内容如下:

#!/bin/bash

BACKUP_DIR="/opt/backups"
PROJECT_DIR="/opt/ai-office"
DATE=$(date +%F-%H%M)

mkdir -p ${BACKUP_DIR}

tar -zcvf ${BACKUP_DIR}/ai-office-${DATE}.tar.gz ${PROJECT_DIR}

find ${BACKUP_DIR} -name "ai-office-*.tar.gz" -mtime +7 -delete

赋予执行权限:

chmod +x /opt/backup-ai-office.sh

配置定时任务:

crontab -e

加入:

0 2 * * * /opt/backup-ai-office.sh

表示每天凌晨2点自动备份,并删除7天前的旧备份。


十八、常见问题排查

1. 访问页面打不开

检查容器是否运行:

docker ps

查看日志:

docker compose logs nginx
docker compose logs open-webui

检查端口是否占用:

sudo netstat -tulnp | grep 80

如果80端口被占用,可以修改 .env

NGINX_HTTP_PORT=8080

然后重启:

docker compose up -d

访问:

http://服务器IP:8080

2. Open WebUI看不到模型

检查Ollama是否有模型:

docker exec -it ai-office-ollama ollama list

检查Open WebUI是否能访问Ollama:

docker exec -it ai-office-open-webui curl http://ollama:11434/api/tags

如果能返回模型列表,说明连接正常。

3. 模型回答很慢

可能原因:

  • CPU推理性能不足;
  • 模型太大;
  • 内存不够;
  • 没有启用GPU;
  • 并发用户太多。

解决方法:

  • 换小模型,例如 qwen2.5:3b
  • 增加内存;
  • 启用GPU;
  • 减少上下文长度;
  • 限制多人同时使用。

4. 上传文件失败

检查Nginx配置:

client_max_body_size 200m;

如果文件更大,可以改成:

client_max_body_size 500m;

然后重启Nginx:

docker compose restart nginx

十九、升级系统

升级前建议先备份:

cd /opt
tar -zcvf ai-office-before-upgrade.tar.gz ai-office

拉取最新镜像:

cd /opt/ai-office
docker compose pull

重启服务:

docker compose up -d

清理旧镜像:

docker image prune -f

二十、完整配置文件汇总

1. .env

COMPOSE_PROJECT_NAME=ai-office
OPEN_WEBUI_PORT=3000
OLLAMA_PORT=11434
NGINX_HTTP_PORT=80
NGINX_HTTPS_PORT=443
ADMIN_EMAIL=admin@example.com
TZ=Asia/Shanghai

2. docker-compose.yml

version: "3.9"

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ai-office-ollama
    restart: unless-stopped
    ports:
      - "${OLLAMA_PORT}:11434"
    volumes:
      - ./data/ollama:/root/.ollama
    environment:
      - TZ=${TZ}
    networks:
      - ai-office-net

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: ai-office-open-webui
    restart: unless-stopped
    depends_on:
      - ollama
    ports:
      - "${OPEN_WEBUI_PORT}:8080"
    volumes:
      - ./data/open-webui:/app/backend/data
    environment:
      - TZ=${TZ}
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_AUTH=true
      - ENABLE_SIGNUP=true
      - DEFAULT_USER_ROLE=user
    networks:
      - ai-office-net

  nginx:
    image: nginx:1.25-alpine
    container_name: ai-office-nginx
    restart: unless-stopped
    depends_on:
      - open-webui
    ports:
      - "${NGINX_HTTP_PORT}:80"
      - "${NGINX_HTTPS_PORT}:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/certs:/etc/nginx/certs
    environment:
      - TZ=${TZ}
    networks:
      - ai-office-net

networks:
  ai-office-net:
    driver: bridge

3. nginx/conf.d/ai-office.conf

server {
    listen 80;
    server_name _;

    client_max_body_size 200m;

    location / {
        proxy_pass http://open-webui:8080;

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

二十一、总结

通过本文的步骤,我们完成了一套基础但实用的AI办公系统部署,包括:

  • 使用Docker Compose统一管理服务;
  • 部署Ollama作为本地大模型运行环境;
  • 部署Open WebUI作为AI办公交互界面;
  • 使用Nginx提供统一访问入口;
  • 配置模型下载、HTTPS、GPU加速、备份和安全策略。

这套方案适合快速搭建企业内部AI助手,尤其适合对数据安全有要求、希望降低外部API依赖的团队。后续如果要进一步增强能力,可以继续接入知识库、RAG检索、工作流自动化、企业微信机器人、飞书机器人、OA系统接口等,让AI真正融入日常办公流程。

目录结构
全文