优炫智能问答系统 · 安装运维简明手册

适用:znwd-compose-images-delivery 镜像部署包 · Linux x86_64

按顺序操作:解压并配置 → 启动系统 → 测试问答 → 需要时接入微信客服。

Dify 用来管理知识库和问答流程;AstrBot 用来连接微信客服。首次启动会自动导入两套业务流程,不需要从头搭建。

一、安装并启动

1. 准备好再开始

  • 一台能联网的 Linux x86_64 服务器,已安装 Docker、Docker Compose 和 Buildx,并有足够的磁盘空间。
  • 完整的镜像部署包,以及 licenses/uxdb.lic 数据库授权。授权需要适用于安装系统的服务器;不适用时,请联系管理员更换。
  • 后续做问答和知识入库时,需要有效的通义模型密钥。

包内已包含部分镜像。首次启动仍需联网获取 Dify、Docling;启用解析服务时还需下载模型。网络慢时请耐心等待。

不确定 Docker 是否已安装?

执行下面的命令,确认都能显示版本信息;如报命令不存在,请先联系运维安装。

docker version
docker compose version
docker buildx version

2. 解压安装包

以下以安装包放在 /opt 为例。如果服务器上已经有同名部署目录,先备份原环境,不要直接覆盖。

cd /opt
tar -xzf znwd-v1.0.tar.gz
cd znwd-compose-images-delivery

3. 创建并填写配置

首次安装,在部署目录复制配置模板并打开:

cp .env.example .env
chmod 600 .env
vim .env

已有 .env 的系统不要重复执行复制命令,直接打开原文件。vim 中按 i 开始编辑;修改完成后按 Esc,输入 :wq 并回车保存。

首次安装时,至少检查并填写以下项目:

项目怎么填写
PUBLIC_URL例如 http://服务器IP:3000;修改访问端口时与 DIFY_PORT 保持一致
UXDB_PASSWORD自己设置数据库密码,不能为空
DIFY_ADMIN_EMAILDify 管理员邮箱,默认 admin@example.com
DIFY_ADMIN_PASSWORD自己设置 Dify 登录密码,至少 8 位,包含字母和数字
ASTRBOT_USERNAMEAstrBot 管理员账号,默认 admin
ASTRBOT_PASSWORD自己设置;留空时首次生成随机密码
TONGYI_API_KEY填写通义模型密钥;暂时没有可以留空,问答和入库前再配置
COMPOSE_PROFILES默认留空,不启用本地 MinerU 和 OCR;需要时填 ocr、mineru 或 mineru,ocr

默认不启用本地 MinerU 和 OCR。需要 OCR 时填写 ocr;需要 MinerU 时填写 mineru;两者都需要时填写 mineru,ocr。MinerU 需要可用的 NVIDIA GPU 和容器运行时,首次启动还会构建较大的镜像并下载模型;OCR 首次启动也需要下载模型。未启用的解析服务不能直接使用。密码或密钥含 $、# 或空格时,用英文单引号包住整个值。

当前知识库流水线和售前问答中的文件解析节点会用到 MinerU;图片文字回填会用到 OCR。默认关闭时,这些节点对应的文件入库、附件解析或图片文字回填可能无法完成;需要相关功能时,请启用相应服务并检查 Dify 中的工具配置。

如果没有提前创建 .env,首次启动也会自动生成配置和随机密码;本手册以下按手动填写的配置说明。文件中如有同名项目,以后面一条为准。

4. 检查配置并启动

docker compose config -q

没有输出且没有报错是正常的,表示入口配置检查通过。接着启动:

docker compose up -d

启动命令会自动准备初始化工具、加载随包镜像、拉取所需镜像并启动服务。以后日常启动也用这一条。

5. 确认服务启动

在部署目录执行:

docker compose ps -a
docker compose -f compose.stack.yaml ps -a

入口的 install 显示 Exited (0)、ready 显示 Up 属于正常;业务服务中,初始化任务显示 Exited (0)、长期运行的服务显示 Up,带健康检查的显示 healthy。

自动生成和手动复制的配置都默认关闭 MinerU 和 OCR;需要时修改 .env 中的 COMPOSE_PROFILES,再执行 docker compose up -d。


二、登录 Dify,配置问答

1. 找到登录地址和密码

在部署目录打开配置文件:

vim .env

查找以下项目。文件中如果同名项目出现多次,以后面一条为准;密码外层的英文单引号不需要输入。

项目在 .env 中查看
Dify 地址PUBLIC_URL,例如 http://服务器IP:3000
Dify 邮箱和密码DIFY_ADMIN_EMAIL、DIFY_ADMIN_PASSWORD
AstrBot 账号和密码ASTRBOT_USERNAME、ASTRBOT_PASSWORD

如果 AstrBot 密码留空,首次生成的账号和密码在 data/runtime/initial-access.json;如果后来在 AstrBot 中改过密码,以修改后的密码为准。

使用配置中的邮箱和密码登录 Dify。默认邮箱为 admin@example.com,密码使用第一部分设置的值;如采用自动生成配置,以 .env 中的值为准。

2. 配置模型密钥

如果首次启动前还没有配置模型密钥,在 .env 中填写管理员提供的值:

TONGYI_API_KEY=你的通义模型密钥

密钥含 $、# 或空格时,用英文单引号包住整个值。

保存后,在部署目录重新执行:

docker compose up -d

系统会尝试配置模型并发布流程。如果页面仍提示模型未配置或流程为草稿,请到 Dify 的模型供应商设置中检查凭据,并发布对应流程。更换已经配置过的模型密钥时,在 Dify 的模型供应商设置中更新。

3. 放入资料并测试

安装完成后,在 Dify 中检查这两套应用和对应知识库:

用途应用知识库
售前问答售前知识库RAGUSQAS-售前知识库2.0
微信客服UXDB智能客服2.0USQAS-微信智能客服知识库2.0

进入知识库,上传一份内容清楚的测试资料,等待解析和索引完成;再打开对应应用,提一个资料中有答案的问题,检查回答及引用是否正确。两套应用分别测试一次。

后续修改了应用流程或知识库流水线,要在 Dify 中重新发布。模型、解析服务或工具提示异常时,先检查对应凭据和服务状态。

三、接入微信客服(需要时操作)

先确认 Dify 中的 UXDB智能客服2.0 已能正常回答。微信客服需要企业微信后台配置和外部可访问的 HTTPS 地址。

1. 填写企业微信配置

从微信客服后台取得企业 ID、具有客服接口权限的 Secret、回调 Token 和 EncodingAESKey,填写到 .env:

WECHAT_ENABLED=true
WECOM_CORPID=企业ID
WECOM_SECRET=客服接口Secret
WECOM_TOKEN=回调Token
WECOM_ENCODING_AES_KEY=回调EncodingAESKey

将等号右边替换为真实值;Token 和 EncodingAESKey 要与微信后台一致。值含 $、# 或空格时,用英文单引号包住整个值。保存后执行:

docker compose up -d

2. 检查 AstrBot 和回调地址

打开 http://服务器IP:6185,用第二部分找到的 AstrBot 账号登录。检查:

  • Dify 对话已启用,提供商为 dify_app_default;程序会自动绑定客服应用的 API Key。
  • wecom 平台已启用,“微信客服账号名”与微信后台的客服名称一致。模板默认名称是“优炫数据库技术客服”,不同就修改并保存。

请网络管理员准备微信平台可访问的 HTTPS 地址,并转发到服务器的默认回调端口:

微信后台填写:https://客服域名/callback/command
服务器接收:  http://服务器IP:6195/callback/command

在微信后台保存地址、Token 和 EncodingAESKey,完成校验;如后台要求可信 IP 或接口授权,也要按提示配置。最后通过客服链接或二维码发一条测试消息,确认能收到正确回答。默认回调端口修改过时,使用实际的 WECOM_PORT。

四、日常维护和常见问题

命令都在部署目录执行。

想做什么命令
再次启动或应用 .env 修改docker compose up -d
看业务服务状态docker compose -f compose.stack.yaml ps -a
看安装步骤的错误docker compose logs --tail=100 install
看数据库、问答和微信日志docker compose -f compose.stack.yaml logs --tail=100 uxdb api worker astrbot
看磁盘空间df -h

启动时如果出现下载中断、unexpected EOF,可以先重试 docker compose up -d;仍失败时检查网络、代理和安装包校验值。如果出现 Exited (1) 或 unhealthy,查看对应日志;数据库授权、模型下载和微信回调问题需要分别按日志排查。

执行 docker compose config -q 后没有任何输出,通常表示入口配置检查通过;业务是否启动成功还要看上面的服务状态。

需要停机时,先停止业务项目,再停止入口项目:

docker compose -f compose.stack.yaml down
docker compose down

不要给以上命令加 -v,也不要删除 data/runtime。 备份时请运维人员同时保存 .env、licenses/、data/、外置模型目录和业务 Docker 数据卷;数据库需要一致性备份,只复制 data 文件夹并不完整。

遇到问题时,记录做到哪一步和对应报错。分享日志或截图前,去掉密码、模型密钥和微信密钥。