私有化部署 Checklist
- 03-deployment-ops/单机Docker部署SOP-v1.0.md
- 03-deployment-ops/Kubernetes-Helm部署SOP-v1.0.md
- 03-deployment-ops/网络端口与防火墙清单-v1.0.md
- 03-deployment-ops/环境变量配置参考-v1.0.md
- 03-deployment-ops/生产资源规格建议-v1.0.md
- 03-deployment-ops/Nginx反向代理配置清单-v1.0.md
- 03-deployment-ops/MinIO-Bucket与数据管理-v1.0.md
- 03-deployment-ops/DockerCompose离线部署指南-v1.0.md
- 03-deployment-ops/升级与版本迁移指南-v1.0.md
- 03-deployment-ops/监控与日志配置指南-v1.0.md
- 03-deployment-ops/内部模块Profile开启指南-v1.0.md
OCTO 私有化部署 Checklist v1.0
本文档为 OCTO 私有化交付全流程检查清单,按"交付前→交付中→交付后"三阶段组织,供交付工程师和客户方运维逐项核对。每项均给出期望结果、验证方式和参考文档,不重复详细操作步骤。
部署形态选择:Docker Compose 单机(<200人/PoC)或 Kubernetes Helm(≥200人/高可用)。本文档以 Docker Compose 为主线,K8s 差异处标注。
使用方法:每项实际结果填写 ☐(未完成)/ ✅(通过)/ N/A(不适用),并在备注栏记录实际值或问题。
一、交付前 Checklist(客户环境准备)
目标:确认客户环境满足部署前提,收集必要信息,准备镜像和安装包。
1.1 服务器资源核验
参考:《生产资源规格建议-v1.0》§2-§4
| # | 检查项 | 期望结果 | 验证方式 | 参考文档 | 实际结果 | 备注 |
|---|---|---|---|---|---|---|
| 1.1.1 | 确定用户规模档位 | 选定 S/M/L/XL 档(🔴均为经验估算无官方证据,实际需压测验证) | 与客户确认注册/并发/消息量预估;🔴售前不得将档位人数作为承诺报出(PS-06) | 生产资源规格§2(含PS-06纠偏注) | ☐ | 档:__ 人 |
| 1.1.2 | CPU 核数满足档位要求 | S≥4核 / M≥8核 / L≥16核 / XL≥32核 | nproc 或 lscpu |
生产资源规格§3.1 | ☐ | __核 |
| 1.1.3 | 内存满足档位要求 | S≥8GiB / M≥16GiB / L≥32GiB / XL≥64GiB | free -h |
生产资源规格§3.1 | ☐ | __GiB |
| 1.1.4 | 系统盘空间 | S≥100GiB / M≥200GiB / L≥500GiB / XL≥1TiB SSD | df -h / |
生产资源规格§4.1 | ☐ | __GiB |
| 1.1.5 | MinIO 数据盘规划(最大增长项) | S≥50GiB / M≥100GiB / L≥300GiB / XL≥1TiB(独立挂载点推荐) | df -h |
生产资源规格§4.2 | ☐ | __GiB |
| 1.1.6 | MySQL 数据盘 | S≥30GiB / M≥50GiB / L≥100GiB / XL≥200GiB | df -h |
生产资源规格§4.1 | ☐ | __GiB |
| 1.1.7 | 可选模块资源增量评估 | 按启用模块叠加 CPU/内存/磁盘 | 确认启用模块清单 | 生产资源规格§3.1.2 | ☐ | 启用模块:__ |
| 1.1.8 | Search 模块额外资源(如启用) | +2核/3GiB/40GiB 起步(S档),OS JVM 堆预留 | 确认是否开启 search | 生产资源规格§3.2.4 | ☐ | |
| 1.1.9 | 网络带宽满足档位 | S≥10Mbps上/50Mbps下;L≥100M/500M;XL≥500M/1G | 客户提供带宽说明或 speedtest-cli |
生产资源规格§5 | ☐ | __Mbps |
| 1.1.10 | 磁盘类型为 SSD | MySQL/OpenSearch/Kafka 需要低延迟 IO | lsblk -d -o name,rota(rota=0为SSD) |
生产资源规格§3.1 | ☐ |
1.2 操作系统与基础软件要求
参考:《单机Docker部署SOP-v1.0》§1.1-1.2
| # | 检查项 | 期望结果 | 验证方式 | 参考文档 | 实际结果 | 备注 |
|---|---|---|---|---|---|---|
| 1.2.1 | 操作系统版本 | Linux x86_64,推荐 Ubuntu 22.04 / Debian 12 / CentOS 8+ | cat /etc/os-release |
单机SOP§1.1 | ☐ | |
| 1.2.2 | Linux 内核版本 | ≥ 4.18(支持 OverlayFS) | uname -r |
单机SOP§1.1 | ☐ | |
| 1.2.3 | CPU 架构 | x86_64/amd64(ARM64 需自行构建镜像,不推荐) | uname -m |
离线部署指南§2.1 | ☐ | |
| 1.2.4 | Docker Engine 版本 | ≥ 24.0,推荐 26.x+ | docker --version |
单机SOP§1.2 | ☐ | |
| 1.2.5 | Docker Compose v2 插件 | ≥ 2.20,使用 docker compose(无连字符) |
docker compose version |
单机SOP§1.2 | ☐ | |
| 1.2.6 | OpenSSL 版本 | ≥ 1.1.1 | openssl version |
单机SOP§1.2 | ☐ | |
| 1.2.7 | 系统时区配置 | 国内部署设为 Asia/Shanghai |
timedatectl;TZ 将在 .env 中设 |
环境变量§3.4 | ☐ | |
| 1.2.8 | Swap 分区建议 | 生产建议关闭 swap 或设 swappiness=10 | swapon --show;cat /proc/sys/vm/swappiness |
通用最佳实践 | ☐ | |
| 1.2.9 | 系统时间同步 | NTP/chrony 已配置,时间偏差<1分钟 | timedatectl status 或 chronyc tracking |
通用最佳实践 | ☐ | |
| 1.2.10 | 防火墙工具可用 | ufw/iptables/firewalld 可配置 | which ufw 或 which firewall-cmd |
网络端口§3 | ☐ | |
| 1.2.11 | (K8s 部署)Kubernetes 集群版本 | ≥ 1.26(Helm chart 要求,待确认) | kubectl version |
K8s Helm SOP | ☐ | N/A ☐ |
1.3 网络准备
参考:《网络端口与防火墙清单-v1.0》§1-3
| # | 检查项 | 期望结果 | 验证方式 | 参考文档 | 实际结果 | 备注 |
|---|---|---|---|---|---|---|
| 1.3.1 | 访问域名已准备 | 客户提供可用域名(如 octo.customer.com)或确定使用 IP |
DNS 解析或 hosts 文件确认 | 环境变量§3.1 | ☐ | 域名:__ |
| 1.3.2 | 域名 DNS 解析生效 | 域名 A 记录指向部署服务器 IP | nslookup 或 dig |
Nginx配置§5 | ☐ | |
| 1.3.3 | SSL/TLS 证书准备 | 生产环境使用可信 CA 证书(Let's Encrypt/商业CA);测试可用自签名 | 证书文件 .crt/.key 已就绪 | 单机SOP§3.3 | ☐ | 证书路径:__ |
| 1.3.4 | HTTPS 端口规划 | 默认 28443,如用标准 443 需 root 权限或前置 LB | 与客户确认端口策略 | 网络端口§1.5 | ☐ | HTTPS端口:__ |
| 1.3.5 | HTTP 入口端口 | 默认 28080,仅 Nginx 需对外暴露 | 与客户确认防火墙策略 | 网络端口§1.1 | ☐ | HTTP端口:__ |
| 1.3.6 | 外网访问策略确认 | 确认纯内网 / VPN访问 / 公网访问 | 与客户网络管理员确认 | 网络端口§3 | ☐ | 场景:__ |
| 1.3.7 | 出站网络访问策略 | 在线部署需出站访问 Docker Hub/mininglamposs/hub2.intra.mlamp.cn;离线需允许导入介质 | 从服务器 curl -I https://registry-1.docker.io |
离线部署指南§1 | ☐ | 在线/离线:__ |
| 1.3.8 | (在线)Docker Hub 连通性 | 能拉取 Docker Hub 镜像或已配置镜像加速器 | docker pull hello-world |
生产资源§7 | ☐ | |
| 1.3.9 | (离线)镜像介质准备 | 全量镜像 tar 包已传输至目标机(约 15-30GB) | ls -lh 确认 tar 包存在 |
离线部署指南§3-6 | ☐ | 介质路径:__ |
| 1.3.10 | (内网)私有镜像仓库 | 如客户有 Harbor 等 Registry,确认推送/拉取权限 | docker login 测试 |
离线部署指南§9 | ☐ | N/A ☐ |
| 1.3.11 | LLM API 出站连通性(如需AI功能) | 服务器能访问 LLM API 端点(公网API或内网LLM网关) | curl -I |
环境变量§7 | ☐ | N/A ☐ |
| 1.3.12 | Docker 子网无冲突 | 默认 172.28.0.0/24 不与客户 VPN/VPC 网段冲突 |
ip route 检查路由表 |
环境变量§3.3 | ☐ |
1.4 端口开放清单
参考:《网络端口与防火墙清单-v1.0》§1、§3、§7
默认部署唯一对外端口:TCP 28080(HTTP)或 28443(HTTPS)。所有内部服务端口绑定 127.0.0.1,不应对外开放。
1.4.1 必须对外/对客户端开放的端口
| # | 端口 | 协议 | 服务 | 用途 | 开放范围 | 实际结果 | 备注 |
|---|---|---|---|---|---|---|---|
| 1.4.1.1 | 28080(或自定义HTTP端口) | TCP | Nginx | HTTP 统一入口 | 客户端网段 | ☐ | |
| 1.4.1.2 | 28443(或443,如启用HTTPS) | TCP | Nginx | HTTPS 统一入口 | 客户端网段 | ☐ | N/A ☐ |
| 1.4.1.3 | 22 | TCP | SSH | 远程管理 | 管理员IP/堡垒机 | ☐ |
1.4.2 内部端口(必须绑定 127.0.0.1,禁止对外开放)
| # | 端口 | 服务 | 风险说明 | 验证 | 实际结果 | 备注 |
|---|---|---|---|---|---|---|
| 1.4.2.1 | 23306 | MySQL | 数据库暴露可致全库泄露 | .env 中 OCTO_MYSQL_BIND=127.0.0.1 |
☐ | |
| 1.4.2.2 | 26379 | Redis(无密码!) | 默认无密码,暴露即失守 | OCTO_REDIS_BIND=127.0.0.1 |
☐ | |
| 1.4.2.3 | 29000 | MinIO API | 绕过Nginx直接访问S3 | OCTO_MINIO_API_BIND=127.0.0.1 |
☐ | |
| 1.4.2.4 | 29001 | MinIO Console | 管理控制台,SSH隧道访问 | OCTO_MINIO_CONSOLE_BIND=127.0.0.1 |
☐ | |
| 1.4.2.5 | 25001 | WuKongIM Manager API | 内部管理接口 | OCTO_WK_API_BIND=127.0.0.1 |
☐ | |
| 1.4.2.6 | 25100 | WuKongIM TCP | 原生TCP长连接,绕过Nginx限流 | OCTO_WK_TCP_BIND=127.0.0.1 |
☐ | |
| 1.4.2.7 | 25200 | WuKongIM WS | WebSocket直连,绕过Nginx限流 | OCTO_WK_WS_BIND=127.0.0.1 |
☐ | |
| 1.4.2.8 | 25300 | WuKongIM Monitor | 监控/varz,泄露拓扑 | OCTO_WK_MONITOR_BIND=127.0.0.1 |
☐ | |
| 1.4.2.9 | 28081 | octo-server 直连 | 绕过Nginx限流 | OCTO_SERVER_BIND=127.0.0.1 |
☐ | |
| 1.4.2.10 | 28082 | admin 直连 | 绕过Nginx直接访问管理后台 | OCTO_ADMIN_BIND=127.0.0.1 |
☐ | |
| 1.4.2.11 | 28083 | web 直连 | 绕过Nginx直连前端 | OCTO_WEB_BIND=127.0.0.1 |
☐ | |
| 1.4.2.12 | 28086 | matter 直连 | 绕过Nginx限流 | OCTO_MATTER_BIND=127.0.0.1 |
☐ | |
| 1.4.2.13 | 28087 | summary-api 直连 | (可选模块) | OCTO_SUMMARY_API_BIND=127.0.0.1 |
☐ | N/A ☐ |
| 1.4.2.14 | 28088 | speech-admin | 语音管理控制台(SSH隧道) | OCTO_SPEECH_ADMIN_BIND=127.0.0.1 |
☐ | N/A ☐ |
| 1.4.2.15 | 29092 | Kafka(search profile) | 消息队列暴露 | OCTO_SEARCH_KAFKA_BIND=127.0.0.1 |
☐ | N/A ☐ |
| 1.4.2.16 | 29200 | OpenSearch(search profile) | 搜索索引暴露 | OCTO_SEARCH_OPENSEARCH_BIND=127.0.0.1 |
☐ | N/A ☐ |
1.4.3 Docker iptables 绕过问题确认
| # | 检查项 | 期望结果 | 验证方式 | 参考文档 | 实际结果 | 备注 |
|---|---|---|---|---|---|---|
| 1.4.3.1 | 知晓 Docker iptables 绕过 ufw 问题 | Docker DOCKER chain 优先级高于 ufw | 阅读网络端口§4 | 网络端口§4 | ☐ | |
| 1.4.3.2 | 前置反向代理时将 OCTO_NGINX_BIND 改为 127.0.0.1 | 宿主机Nginx/LB监听公网,反代到127.0.0.1:28080 | .env 配置确认 | 网络端口§4.3 | ☐ | N/A(直接暴露) ☐ |
| 1.4.3.3 | 或在 DOCKER-USER chain 添加过滤规则 | 非信任IP无法访问内部端口 | iptables -L DOCKER-USER -n |
网络端口§4.2 | ☐ |
1.5 依赖服务核验(内嵌 vs 外接)
参考:《基础设施依赖映射.md》《Kubernetes-Helm部署SOP-v1.0.md》
Docker Compose 默认全部内嵌;K8s Helm 支持外接托管服务。
| # | 依赖服务 | 部署方式选择 | 期望结果 | 验证方式 | 参考文档 | 实际结果 | 备注 |
|---|---|---|---|---|---|---|---|
| 1.5.1 | MySQL 8.0 | ☐ 内嵌(Docker) ☐ 外接(云RDS/自建) | 外接需提供连接串、用户名、密码、权限 | 与客户DBA确认 | 环境变量§5/Helm externalMySQL | ☐ | |
| 1.5.2 | Redis 7 | ☐ 内嵌(Docker,默认无密码) ☐ 外接(云Redis/自建) | 外接需支持AUTH,提供地址/密码 | 与客户DBA确认 | 环境变量§19.1/Helm externalRedis | ☐ | |
| 1.5.3 | MinIO | ☐ 内嵌(Docker) ☐ 外接(COS/OSS/S3/Qiniu) | 外接需确认bucket、AK/SK、Endpoint | Helm server.config.fileService | MinIO文档§1.2 | ☐ | |
| 1.5.4 | WuKongIM | ☐ 内嵌(Docker/Helm) ☐ 外接(一般不推荐) | 长连接服务,建议内嵌 | Helm wukongim.enabled | 网络端口§1 | ☐ | |
| 1.5.5 | PostgreSQL(仅fleet模块) | ☐ 内嵌(fleet-postgres) ☐ 外接 | 启用fleet时需要 | Helm未含fleet | 生产资源§3.2.3 | ☐ | N/A ☐ |
| 1.5.6 | OpenSearch(仅search模块) | ☐ 内嵌 ☐ 外接 | 内嵌需配置 vm.max_map_count | docker-compose.yaml | 生产资源§6.4 | ☐ | N/A ☐ |
| 1.5.7 | Kafka(仅search模块) | ☐ 内嵌(KRaft单节点) ☐ 外接 | 内嵌为单节点KRaft | docker-compose.yaml | 生产资源§3.2.4 | ☐ | N/A ☐ |
1.6 客户信息收集表
| # | 信息项 | 说明 | 填写 | 实际结果 | 备注 |
|---|---|---|---|---|---|
| 1.6.1 | 访问域名 / IP | 客户端访问地址 | __ | ☐ | |
| 1.6.2 | HTTP/HTTPS 端口 | 默认 28080/28443 | __ | ☐ | |
| 1.6.3 | 是否启用 HTTPS | 是/否;证书类型(CA/自签名) | __ | ☐ | |
| 1.6.4 | 管理员账号信息 | superAdmin 初始密码(自动生成或指定) | 自动生成 ☐ / 指定:__ | ☐ | |
| 1.6.5 | LLM API 配置 | API URL / Key / Model(AI功能需要) | URL:__ Key:__ Model:__ | ☐ | N/A ☐ |
| 1.6.6 | LLM 供应商选择 | 通义千问(qwen)/OpenAI兼容/Gemini(语音+摘要) | __ | ☐ | |
| 1.6.7 | SSO/OIDC 配置(如需) | Client ID / Secret / Issuer URL / Callback URL | __ | ☐ | N/A ☐ |
| 1.6.8 | 邮件/SMTP 配置(如需通知) | SMTP Host/Port/User/Password | __ | ☐ | N/A ☐ |
| 1.6.9 | 需要启用的模块 Profile | summary/speech/docs/drive/fleet/search/doc-index/drive-index/docs-html | __ | ☐ | |
| 1.6.10 | 用户规模预估 | 注册用户数/日活/并发在线/日均消息量 | __ | ☐ | |
| 1.6.11 | 对象存储策略 | 内嵌MinIO / 外接COS/OSS/S3;存储配额 | __ | ☐ | |
| 1.6.12 | 备份策略要求 | 备份频率/保留周期/备份存储位置 | __ | ☐ | |
| 1.6.13 | 监控告警接收方式 | 邮件/钉钉/企微/飞书 Webhook | __ | ☐ | |
| 1.6.14 | 客户方运维对接人 | 姓名/手机/邮箱 | __ | ☐ | |
| 1.6.15 | 客户网络策略对接人 | 防火墙/安全组/域名负责人 | __ | ☐ |
1.7 镜像准备
参考:《DockerCompose离线部署指南-v1.0》
| # | 检查项 | 期望结果 | 验证方式 | 参考文档 | 实际结果 | 备注 | |
|---|---|---|---|---|---|---|---|
| 1.7.1 | 部署包获取 | octo-deployment 仓库/安装包已在目标机解压 | ls 确认 docker/ 目录存在 |
单机SOP§二 | ☐ | 路径:__ | |
| 1.7.2 | (在线)镜像拉取验证 | docker compose pull 可正常拉取所有镜像 |
执行 docker compose pull |
单机SOP§四 | ☐ | N/A ☐ | |
| 1.7.3 | (离线)镜像 tar 包完整 | 全量镜像 tar 包约 15-30GB | ls -lh *.tar 核对清单 |
离线部署指南§3 | ☐ | N/A ☐ | |
| 1.7.4 | (离线)镜像导入 | docker load -i 导入所有镜像 |
docker images 确认镜像存在 |
离线部署指南§6 | ☐ | N/A ☐ | |
| 1.7.5 | (离线)OpenSearch IK 镜像 | octo-search-opensearch-ik:2.17.0 已构建并导入(search模块需要) |
`docker images | grep opensearch` | 离线部署指南§5 | ☐ | N/A ☐ |
| 1.7.6 | 中国区镜像加速 | 如需使用国内镜像源,已配置 daemon.json mirror | cat /etc/docker/daemon.json |
环境变量§16 | ☐ | ||
| 1.7.7 | (内网Registry)镜像已推送 | 所有镜像已tag并push到客户私有仓库 | docker pull 验证 |
离线部署指南§9 | ☐ | N/A ☐ | |
| 1.7.8 | 镜像版本一致性 | 确认各服务镜像版本与部署包版本匹配 | 检查 .env 中 OCTO_*_IMAGE 变量 | 环境变量§16 | ☐ |
二、交付中 Checklist(部署执行对照)
目标:按 SOP 逐步执行部署,每步验证通过后再继续。
2.1 基础环境配置
参考:《单机Docker部署SOP-v1.0》§三、《生产资源规格建议》§6.4
| # | 检查项 | 期望结果 | 验证方式 | 参考文档 | 实际结果 | 备注 | |
|---|---|---|---|---|---|---|---|
| 2.1.1 | Docker 已安装且服务运行 | docker daemon active | systemctl status docker |
单机SOP§1.2 | ☐ | ||
| 2.1.2 | Docker 服务开机自启 | enabled | systemctl is-enabled docker |
通用最佳实践 | ☐ | ||
| 2.1.3 | 当前用户在 docker 组 | 免 sudo 执行 docker 命令 | `groups | grep docker` | 通用最佳实践 | ☐ | |
| 2.1.4 | Docker 日志轮转配置 | 防止日志写满磁盘:max-size=100m, max-file=3 | cat /etc/docker/daemon.json |
生产资源§6.4 | ☐ | ||
| 2.1.5 | OpenSearch 内核参数(如启用search) | vm.max_map_count=262144 |
sysctl vm.max_map_count |
生产资源§6.4 | ☐ | N/A ☐ | |
| 2.1.6 | vm.max_map_count 持久化 | 已写入 /etc/sysctl.conf | grep max_map_count /etc/sysctl.conf |
生产资源§6.4 | ☐ | N/A ☐ | |
| 2.1.7 | 文件描述符限制 | nofile ≥ 65536 | ulimit -n |
生产资源§6.4 | ☐ | ||
| 2.1.8 | 数据目录创建 | Docker volume 所在磁盘空间充足 | df -h /var/lib/docker |
生产资源§4 | ☐ | ||
| 2.1.9 | 部署目录权限 | 当前用户对 docker/ 目录有读写权限 | ls -la docker/ |
单机SOP§三 | ☐ | ||
| 2.1.10 | 防火墙规则已配置 | 仅开放必要端口(28080/28443/22),其余拒绝 | ufw status verbose 或云安全组规则 |
网络端口§3 | ☐ | ||
| 2.1.11 | (K8s)Helm 已安装 | helm ≥ 3.12 | helm version |
K8s Helm SOP | ☐ | N/A ☐ | |
| 2.1.12 | (K8s)kubectl 可访问集群 | cluster-admin 权限 | kubectl cluster-info |
K8s Helm SOP | ☐ | N/A ☐ | |
| 2.1.13 | (K8s)StorageClass 可用 | 有默认 StorageClass 支持 PVC 动态供给 | kubectl get sc |
K8s Helm SOP | ☐ | N/A ☐ |
2.2 配置项核验(.env 关键变量检查)
参考:《环境变量配置参考-v1.0》§2-§19
强烈推荐使用 `docker-compose-setup.sh` 自动生成 .env,避免手动遗漏。
| # | 变量名 | 期望结果 | 验证方式 | 实际结果 | 备注 | |
|---|---|---|---|---|---|---|
| 2.2.1 | 🔴 MYSQL_ROOT_PASSWORD | 已修改,非 CHANGE_ME 占位符,仅含 [A-Za-z0-9._-] | grep MYSQL_ROOT_PASSWORD .env 非CHANGE_ME |
☐ | ||
| 2.2.2 | 🔴 MINIO_ROOT_PASSWORD | ≥8字符,非 CHG_ME! | grep MINIO_ROOT_PASSWORD .env |
☐ | ||
| 2.2.3 | 🔴 OCTO_MINIO_APP_PASSWORD | 已修改,非 CHANGE_ME 占位符 | grep OCTO_MINIO_APP_PASSWORD .env |
☐ | ||
| 2.2.4 | 🔴 OCTO_MASTER_KEY | 恰好32字节(openssl rand -hex 16 输出) | grep OCTO_MASTER_KEY .env 检查长度 |
☐ | ||
| 2.2.5 | 🔴 OCTO_NOTIFY_INTERNAL_TOKEN | 已修改,非 CHANGE_ME 占位符 | grep OCTO_NOTIFY_INTERNAL_TOKEN .env |
☐ | ||
| 2.2.6 | 🔴 OCTO_WUKONGIM_MANAGER_TOKEN | 已修改,非 CHANGE_ME 占位符 | grep OCTO_WUKONGIM_MANAGER_TOKEN .env |
☐ | ||
| 2.2.7 | 🔴 OCTO_MATTER_DB_PASSWORD | 非字面默认值 matter |
grep OCTO_MATTER_DB_PASSWORD .env |
☐ | ||
| 2.2.8 | 🔴 OCTO_SUMMARY_DB_PASSWORD | 非字面默认值 summary |
grep OCTO_SUMMARY_DB_PASSWORD .env |
☐ | ||
| 2.2.9 | 🔴 OCTO_SUMMARY_READER_PASSWORD | 非字面默认值 summary_reader |
grep OCTO_SUMMARY_READER_PASSWORD .env |
☐ | ||
| 2.2.10 | 🔴 OCTO_MARKETPLACE_DB_PASSWORD | 已修改,非 CHANGE_ME 占位符 | grep OCTO_MARKETPLACE_DB_PASSWORD .env |
☐ | ||
| 2.2.11 | 🔴 OCTO_ADMIN_PWD | 已设置(setup.sh 自动生成),非弱密码 | grep OCTO_ADMIN_PWD .env |
☐ | ||
| 2.2.12 | OCTO_DOMAIN | 设为客户域名或服务器IP,非 localhost(生产环境) | grep OCTO_DOMAIN .env |
☐ | ||
| 2.2.13 | OCTO_EXTERNAL_IP | 设为实际服务器IP | grep OCTO_EXTERNAL_IP .env |
☐ | ||
| 2.2.14 | TZ | 设为 Asia/Shanghai(国内部署) | grep ^TZ= .env |
☐ | ||
| 2.2.15 | WK_MODE | 生产设为 release | grep WK_MODE .env |
☐ | ||
| 2.2.16 | LLM_API_KEY | 已设置真实可用的 Key(使用matter/summary时必填) | grep LLM_API_KEY .env 非空 |
☐ | N/A ☐ | |
| 2.2.17 | LLM_API_URL / LLM_MODEL | 指向正确的 LLM 端点和模型 | 检查值是否匹配客户LLM服务 | ☐ | N/A ☐ | |
| 2.2.18 | 所有 *_BIND 变量 | 除 OCTO_NGINX_BIND 外均为 127.0.0.1 | grep _BIND .env |
☐ | ||
| 2.2.19 | OCTO_NGINX_BIND | 前置LB时设 127.0.0.1;直连公网保持 0.0.0.0 | grep OCTO_NGINX_BIND .env |
☐ | ||
| 2.2.20 | HTTPS 三变量一致性 | MINIO_SERVER_URL/TS_MINIO_DOWNLOADURL/TS_EXTERNAL_BASEURL 均为相同 https:// URL | 检查HTTPS场景下三变量值 | ☐ | N/A(HTTP) ☐ | |
| 2.2.21 | COMPOSE_PROFILES | 按需启用模块,逗号分隔无空格 | grep COMPOSE_PROFILES .env |
☐ | ||
| 2.2.22 | OCTO_SEARCH_BACKEND | 启用search时设为 es,不启用保持 disabled | grep OCTO_SEARCH_BACKEND .env |
☐ | ||
| 2.2.23 | 🔴 Speech 模块密钥(如启用) | SPEECH_ADMIN_PASSWORD/SPEECH_ADMIN_JWT_SECRET/SPEECH_DB_PASSWORD/VOICE_QWEN_KEY 已设置 | 逐项检查 | 环境变量§11 | ☐ | N/A ☐ |
| 2.2.24 | 🔴 Docs 模块密钥(如启用) | OCTO_DOCS_DB_PASSWORD/OCTO_DOCS_COLLAB_SECRET/OCTO_DOCS_ATTACHMENT_SECRET + 3个URL 已设置 | 逐项检查非空 | 环境变量§12 | ☐ | N/A ☐ |
| 2.2.25 | 🔴 Search 模块密钥(如启用) | OCTO_SEARCH_CURSOR_HMAC 已设置(openssl rand -hex 32) | 检查非空 | 环境变量§13.3 | ☐ | N/A ☐ |
| 2.2.26 | 无空字符串覆盖 | OCTO_WK_WS_ADDR等可选变量未被设为空值(=后无值) | 检查.env中无 VAR= 空值行 | 环境变量§19.3 | ☐ |
2.3 部署步骤对照(按SOP顺序执行)
参考:《单机Docker部署SOP-v1.0》§三-§七
| # | 步骤 | 命令/操作 | 期望结果 | 参考文档 | 实际结果 | 备注 |
|---|---|---|---|---|---|---|
| 2.3.1 | 运行 setup.sh(推荐) | ./docker-compose-setup.sh |
生成 .env、自签名证书、启用HTTPS | 单机SOP§3.1 | ☐ | |
| 2.3.2 | 或手动配置 .env | 从 .env.example 复制,填写所有密码(不推荐) | .env 中所有 CHANGE_ME 已替换 | 单机SOP§3.2 | ☐ | N/A(用setup.sh) ☐ |
| 2.3.3 | TLS 证书放置 | 生产CA证书放 docker/certs/;自签名由setup.sh自动生成 | ls docker/certs/ |
单机SOP§3.3/§6.2 | ☐ | |
| 2.3.4 | 启动核心基础服务 | docker compose up -d(核心栈,无profile时) |
所有核心容器启动 | 单机SOP§四 | ☐ | |
| 2.3.5 | 等待初始化完成 | docker compose up -d --wait(等待healthcheck通过) |
preflight/minio-init退出码0 | 单机SOP§2.2 | ☐ | |
| 2.3.6 | 查看容器运行状态 | docker compose ps |
所有服务 State=running 或 healthy | 单机SOP§2.2 | ☐ | |
| 2.3.7 | 无反复重启容器 | docker ps -a 查看 Restart 列 |
重启次数<3,无 exited 容器(除init job) | 监控指南§2 | ☐ | |
| 2.3.8 | 检查 preflight 日志 | docker compose logs preflight |
无 FATAL/CHANGE_ME 错误 | 单机SOP§2.2 | ☐ | |
| 2.3.9 | 检查 minio-init 日志 | docker compose logs minio-init |
所有 bucket 创建成功,Policy applied | MinIO文档§2.3 | ☐ | |
| 2.3.10 | 按 Profile 逐个启用模块 | 修改 COMPOSE_PROFILES,逐个 docker compose up -d,每启用一个验证健康 |
模块容器正常启动 | 单机SOP§七 | ☐ | 按推荐顺序:summary→speech→docs→drive→fleet→search |
| 2.3.11 | Search 模块特殊处理 | 启动后执行 search-backfill 回填历史消息,最后设置 OCTO_SEARCH_PRODUCER_ON=true | backfill 完成,alias绑定 | 单机SOP§5.7 | ☐ | N/A ☐ |
| 2.3.12 | Speech 模块特殊处理 | 在 speech-admin 控制台创建应用获取 SPEECH_API_KEY,重启 octo-server | 语音消息可正常发送 | 单机SOP§5.2 | ☐ | N/A ☐ |
| 2.3.13 | (K8s)Helm install | helm install octo ./octo -f values.yaml -f values-customer.yaml |
所有 Pod running/ready | K8s Helm SOP | ☐ | N/A ☐ |
| 2.3.14 | (K8s)Ingress 配置 | 配置 Ingress TLS 和 host | 域名可访问 | K8s Helm SOP | ☐ | N/A ☐ |
2.4 Profile 模块启用检查
参考:《内部模块Profile开启指南-v1.0》
| # | 模块 | Profile名 | 启用确认 | 前置密钥/配置已就绪 | 容器健康 | 实际结果 | 备注 |
|---|---|---|---|---|---|---|---|
| 2.4.1 | Marketplace(技能市场) | 默认启用 | ☐ 启用 ☐ 不启用 | OCTO_MARKETPLACE_DB_PASSWORD 已设 | ☐ | ☐ | |
| 2.4.2 | Summary(智能摘要) | summary |
☐ 启用 ☐ 不启用 | LLM_API_KEY + summary DB密码 | ☐ | ☐ | N/A ☐ |
| 2.4.3 | Speech(语音转写) | speech |
☐ 启用 ☐ 不启用 | SPEECH_*全套密钥+语音引擎Key | ☐ | ☐ | N/A ☐ |
| 2.4.4 | Docs(文档协同) | docs |
☐ 启用 ☐ 不启用 | OCTO_DOCS_*全套密钥+3个URL | ☐ | ☐ | N/A ☐ |
| 2.4.5 | docs-html(HTML渲染) | docs-html |
☐ 启用 ☐ 不启用 | 依赖docs;DOCS_BACKEND_INTERNAL_REGISTER_TOKEN | ☐ | ☐ | N/A ☐ |
| 2.4.6 | Drive(企业网盘) | drive |
☐ 启用 ☐ 不启用 | drive相关配置(helm未含,待确认) | ☐ | ☐ | N/A ☐ |
| 2.4.7 | Fleet/Loop(回路) | fleet |
☐ 启用 ☐ 不启用 | fleet-postgres已配置 | ☐ | ☐ | N/A ☐ |
| 2.4.8 | Search(消息搜索) | search |
☐ 启用 ☐ 不启用 | OCTO_SEARCH_BACKEND=es + CURSOR_HMAC + vm.max_map_count | ☐ | ☐ | N/A ☐ |
| 2.4.9 | doc-index(文档索引) | doc-index |
☐ 启用 ☐ 不启用 | 依赖docs+search | ☐ | ☐ | N/A ☐ |
| 2.4.10 | drive-index(网盘索引) | drive-index |
☐ 启用 ☐ 不启用 | 依赖drive+search+tika | ☐ | ☐ | N/A ☐ |
2.5 端口开放验证
部署完成后,从客户端/另一台机器逐一验证。
| # | 端口 | 协议 | 期望结果 | 验证方式 | 实际结果 | 备注 |
|---|---|---|---|---|---|---|
| 2.5.1 | 28080(HTTP入口) | TCP | 从客户端可连通 | nc -zv |
☐ | |
| 2.5.2 | 28443(HTTPS入口,如启用) | TCP | 从客户端可连通 | nc -zv |
☐ | N/A ☐ |
| 2.5.3 | 22(SSH) | TCP | 仅管理员IP可连 | 从非信任IP试连,应被拒绝 | ☐ | |
| 2.5.4 | 23306(MySQL) | TCP | 外部不可达 | nc -zv 应超时/拒绝 |
☐ | |
| 2.5.5 | 26379(Redis) | TCP | 外部不可达 | 同上 | ☐ | |
| 2.5.6 | 29000(MinIO API) | TCP | 外部不可达 | 同上 | ☐ | |
| 2.5.7 | 29001(MinIO Console) | TCP | 外部不可达 | 同上 | ☐ | |
| 2.5.8 | 25001(WK API) | TCP | 外部不可达 | 同上 | ☐ | |
| 2.5.9 | 25100(WK TCP) | TCP | 外部不可达 | 同上 | ☐ | |
| 2.5.10 | 25200(WK WS) | TCP | 外部不可达 | 同上 | ☐ | |
| 2.5.11 | 25300(WK Monitor) | TCP | 外部不可达 | 同上 | ☐ | |
| 2.5.12 | 28081/28082/28083/28086 | TCP | 外部不可达 | 同上 | ☐ | |
| 2.5.13 | WebSocket 连通性 | WS | ws://host:port/ws 可建立连接 | wscat -c ws:// |
☐ |
2.6 健康检查验证
参考:《监控与日志配置指南-v1.0》§2、《网络端口与防火墙清单》§8.2
所有健康检查通过 Nginx 入口或直连验证。
| # | 服务 | 检查命令(经Nginx入口,替换host) | 期望结果 | 实际结果 | 备注 |
|---|---|---|---|---|---|
| 2.6.1 | Nginx | curl -fsS http:// |
200 ok |
☐ | |
| 2.6.2 | 服务状态页 | curl -fsS http:// |
返回HTML状态页 | ☐ | |
| 2.6.3 | octo-server API | curl -fsS http:// |
pong | ☐ | |
| 2.6.4 | octo-server 健康 | curl -fsS http:// |
200 OK | ☐ | |
| 2.6.5 | MySQL(直连) | docker compose exec mysql mysqladmin ping -h 127.0.0.1 -u root -p" |
mysqld is alive |
☐ | |
| 2.6.6 | Redis(直连) | docker compose exec redis redis-cli ping |
PONG |
☐ | |
| 2.6.7 | MinIO(经Nginx) | curl -fsS http:// |
200 | ☐ | |
| 2.6.8 | WuKongIM(直连,需token) | curl -s -H "token: $TOKEN" http://localhost:25001/health |
200 | ☐ | |
| 2.6.9 | web前端 | curl -s -o /dev/null -w "%{http_code}" http:// |
200 | ☐ | |
| 2.6.10 | admin后台 | curl -s -o /dev/null -w "%{http_code}" http:// |
200 | ☐ | |
| 2.6.11 | marketplace | curl -fsS http:// |
200 | ☐ | |
| 2.6.12 | matter(AI助手) | curl -fsS http:// |
200(待确认路径) | ☐ | |
| 2.6.13 | summary-api(如启用) | curl -fsS http://(或直连28087) |
200 | ☐ | N/A ☐ |
| 2.6.14 | octo-docs-backend(如启用) | curl -fsS http:// |
200 | ☐ | N/A ☐ |
| 2.6.15 | 文档WS(如启用) | wscat -c ws:// |
连接建立成功 | ☐ | N/A ☐ |
| 2.6.16 | OpenSearch(如启用search,直连) | curl -fsS http://localhost:29200/_cluster/health |
green/yellow状态 | ☐ | N/A ☐ |
| 2.6.17 | Kafka(如启用search,直连) | docker compose exec search-kafka kafka-broker-api-versions.sh --bootstrap-server localhost:9092 |
返回版本列表 | ☐ | N/A ☐ |
| 2.6.18 | octo-fleet(如启用) | curl -fsS http://(或直连28089) |
200 | ☐ | N/A ☐ |
| 2.6.19 | 全容器健康检查 | docker inspect --format '{{.Name}} {{.State.Health.Status}}' $(docker compose ps -q) |
所有服务 healthy | ☐ | |
| 2.6.20 | HTTPS(如启用) | curl -fsSk https:// |
200 ok |
☐ | N/A ☐ |
2.7 功能冒烟测试
登录后逐项测试核心功能。建议用两个测试账号互发消息。
| # | 功能模块 | 测试项 | 验证方式 | 实际结果 | 备注 |
|---|---|---|---|---|---|
| 2.7.1 | 登录 | 使用 superAdmin 账号登录 Web 端 | 浏览器打开域名,输入用户名密码,成功进入主页 | ☐ | 账号已记录 |
| 2.7.2 | 修改初始密码 | 首次登录后修改 superAdmin 密码 | 在设置中修改密码并重新登录验证 | ☐ | |
| 2.7.3 | 创建普通用户 | 管理员创建测试用户 | Admin 后台创建用户成功 | ☐ | |
| 2.7.4 | 一对一聊天 | 两个用户互发文本消息 | 双方实时收到消息 | ☐ | |
| 2.7.5 | 群聊 | 创建群组,群内发消息 | 所有群成员收到消息 | ☐ | |
| 2.7.6 | 发送图片 | 聊天中发送图片消息 | 图片可正常上传、显示、下载 | ☐ | |
| 2.7.7 | 发送文件 | 聊天中发送文件附件(<100MB) | 文件上传成功,对方可下载 | ☐ | |
| 2.7.8 | 语音消息(如启用speech) | 录制并发送语音消息 | 语音可录制、发送、播放 | ☐ | N/A ☐ |
| 2.7.9 | 消息搜索(如启用search) | 搜索历史消息关键词 | 搜索结果正确返回 | ☐ | N/A ☐ |
| 2.7.10 | AI助手/Matter(如LLM配置) | 在AI助手中发送问题 | AI正常回复 | ☐ | N/A ☐ |
| 2.7.11 | 智能摘要(如启用summary) | 在聊天中触发消息摘要 | 摘要正常生成 | ☐ | N/A ☐ |
| 2.7.12 | 文档协同(如启用docs) | 创建文档、多人编辑 | 文档可创建、实时协同编辑、保存 | ☐ | N/A ☐ |
| 2.7.13 | 企业网盘(如启用drive) | 上传/下载/分享文件 | 网盘功能正常 | ☐ | N/A ☐ |
| 2.7.14 | Bot/技能市场(如启用marketplace) | 安装/启用技能Bot | Bot可正常响应 | ☐ | |
| 2.7.15 | 头像/贴纸/表情 | 上传头像、发送贴纸 | 正常显示 | ☐ | |
| 2.7.16 | 文件下载 URL 签名 | 点击下载聊天附件 | 通过Nginx路径下载文件,MinIO签名验证通过 | ☐ | |
| 2.7.17 | 移动端/桌面端连接(如有) | 使用客户端App连接 | 消息同步正常 | ☐ | N/A ☐ |
| 2.7.18 | 离线消息 | 一用户下线后发送消息,上线后收到 | 离线消息正常投递 | ☐ | |
| 2.7.19 | 管理后台功能 | 登录Admin后台查看用户/组织/配置 | 各项数据正常展示 | ☐ | |
| 2.7.20 | Thread/子区(DM_THREAD_ON=true) | 在消息上创建子区讨论 | 子区功能正常 | ☐ |
三、交付后 Checklist(验收与交接)
目标:完成安全加固、备份配置、监控告警、客户培训、文档交接,正式验收。
3.1 安全检查
参考:《网络端口与防火墙清单-v1.0》§7
| # | 检查项 | 期望结果 | 验证方式 | 参考文档 | 实际结果 | 备注 | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.1.1 | 所有默认密码/Token已修改 | 无任何 CHANGE_ME/CHG_ME/字面默认值残留 | `grep -E "CHANGE_ME | CHG_ME | ^MYSQL_ROOT_PASSWORD=matter$ | =matter$ | =summary$ | =summary_reader$" .env` 无结果 | 网络端口§7.2 | ☐ | |
| 3.1.2 | superAdmin 密码已修改 | 非初始密码,强度≥8位含大小写数字 | 客户管理员确认已修改 | 环境变量§8 | ☐ | ||||||
| 3.1.3 | OCTO_ADMIN_PWD 已从 .env 中移除或妥善保管 | 首次启动后密码不会被再次读取但仍明文存储 | 编辑 .env 删除或加密保存 | 环境变量§8 | ☐ | ||||||
| 3.1.4 | OCTO_MASTER_KEY 强度验证 | 恰好32字节,随机生成(非简单字符串) | grep OCTO_MASTER_KEY .env 检查 |
环境变量§2.4 | ☐ | ||||||
| 3.1.5 | HTTPS 已启用(公网部署必须) | TLS证书有效,非自签名(公网环境) | 浏览器访问无证书警告 | Nginx配置§5.3 | ☐ | 内网自签名可接受 | |||||
| 3.1.6 | HSTS 头已发送(HTTPS) | Strict-Transport-Security 响应头存在 | `curl -sI https:// |
grep -i strict` | Nginx配置§4.3 | ☐ | |||||
| 3.1.7 | 安全响应头 | X-Frame-Options/X-Content-Type-Options/Referrer-Policy 存在 | `curl -sI http:// |
grep -i x-frame` | Nginx配置§4.3 | ☐ | |||||
| 3.1.8 | Nginx 版本隐藏 | server_tokens off | `curl -sI http:// |
grep -i server` 无版本号 | Nginx配置§3.4 | ☐ | |||||
| 3.1.9 | 防火墙规则最终确认 | 仅28080/28443/22开放,来源IP受限 | ufw status verbose 或云安全组 |
网络端口§3 | ☐ | ||||||
| 3.1.10 | Redis 未暴露公网 | 绑定127.0.0.1且无密码保护不构成风险 | `ss -tlnp | grep 26379` 仅127.0.0.1 | 网络端口§7.1 | ☐ | |||||
| 3.1.11 | MinIO Console 未通过Nginx暴露 | 仅SSH隧道可访问 :29001 | 访问 http:// |
网络端口§1.2 | ☐ | ||||||
| 3.1.12 | MinIO Bucket 匿名策略正确 | 仅file/chat/moment/sticker/chatbg/common/avatar设为download,其余私有 | mc anonymous list |
MinIO文档§3.3 | ☐ | ||||||
| 3.1.13 | WuKongIM Token认证开启 | tokenAuthOn=true,非空Token | 不带token访问 :25001/health 应401 | 环境变量§2.6 | ☐ | ||||||
| 3.1.14 | Speech Admin密码已设置 | SPEECH_ADMIN_PASSWORD 非空(如启用speech) | 检查 .env | 环境变量§11 | ☐ | N/A ☐ | |||||
| 3.1.15 | OpenSearch Security 生产启用 | OCTO_SEARCH_OPENSEARCH_DISABLE_SECURITY=false(生产search模块) | 检查.env(公网/多租户必须) | 环境变量§13.2 | ☐ | N/A ☐ | |||||
| 3.1.16 | SSH 密钥认证 | SSH禁用密码登录,仅密钥 | grep PasswordAuthentication /etc/ssh/sshd_config |
通用最佳实践 | ☐ | ||||||
| 3.1.17 | 密码文件权限 | .env 文件权限 600,docker目录权限受限 | ls -la .env |
通用最佳实践 | ☐ | ||||||
| 3.1.18 | Docker iptables 最终验证 | 从外部扫描确认无意外开放端口 | 外部 nmap -p 1-30000 |
网络端口§4 | ☐ |
3.2 备份配置
参考:《MinIO-Bucket与数据管理-v1.0》§8、《升级与版本迁移指南》§1.1
| # | 检查项 | 期望结果 | 验证方式 | 参考文档 | 实际结果 | 备注 |
|---|---|---|---|---|---|---|
| 3.2.1 | MySQL 备份策略确定 | 每日mysqldump或xtrabackup,保留≥7天 | 编写备份脚本并测试 | MinIO文档§8/升级指南§1.1 | ☐ | |
| 3.2.2 | MySQL 备份脚本测试 | 手动执行备份,生成.sql.gz文件,可正常恢复 | 执行备份脚本,检查输出文件 | 升级指南§1.1 | ☐ | |
| 3.2.3 | MySQL 备份cron配置 | crontab中配置每日自动备份 | crontab -l 查看 |
通用最佳实践 | ☐ | |
| 3.2.4 | MinIO 备份策略确定 | mc mirror到独立存储/文件系统快照 | 备份方案文档化 | MinIO文档§8 | ☐ | |
| 3.2.5 | MinIO 备份脚本测试 | mc mirror全量+增量执行成功 | 检查目标端bucket文件完整 | MinIO文档§8.2 | ☐ | |
| 3.2.6 | 配置文件备份 | .env/docker-compose.yaml/values.yaml纳入版本管理或备份 | Git仓库或加密备份 | 升级指南§1.1 | ☐ | |
| 3.2.7 | Docker volume 备份(冷备) | 重要命名卷定期快照(mysql-data/minio-data/wukongim-data) | 测试 tar 备份脚本 | MinIO文档§8.3 | ☐ | |
| 3.2.8 | 备份存储位置 | 备份文件存放在部署服务器以外的位置 | 确认备份目标路径/存储 | 升级指南§1.1 | ☐ | |
| 3.2.9 | 备份恢复演练 | 在测试环境执行一次完整恢复验证 | 恢复MySQL+MinIO,数据完整可用 | 通用最佳实践 | ☐ | 建议上线前完成 |
| 3.2.10 | OpenSearch 索引备份(如启用search) | 配置OS snapshot repository | 查询snapshot状态 | 通用最佳实践 | ☐ | N/A ☐ |
3.3 监控告警配置
参考:《监控与日志配置指南-v1.0》§3-§5
| # | 检查项 | 期望结果 | 验证方式 | 参考文档 | 实际结果 | 备注 |
|---|---|---|---|---|---|---|
| 3.3.1 | Docker 日志轮转已配置 | json-file max-size=100m max-file=5 | cat /etc/docker/daemon.json |
监控指南§1.1 | ☐ | |
| 3.3.2 | Docker 日志轮转已生效 | 重启docker并重建容器后日志文件自动轮转 | systemctl reload docker + 重建容器 |
监控指南§1.1 | ☐ | |
| 3.3.3 | 容器运行状态监控 | 核心服务异常自动重启+告警 | docker restart policy=always + 监控脚本 | 监控指南§3 | ☐ | |
| 3.3.4 | 主机资源监控 | CPU/内存/磁盘/带宽监控接入客户现有监控系统 | node_exporter/cadvisor或客户监控Agent | 监控指南§3 | ☐ | |
| 3.3.5 | MinIO磁盘使用率告警 | 使用率>70%告警 | 监控脚本或客户告警系统 | 生产资源§8.1 | ☐ | |
| 3.3.6 | MySQL慢查询/连接数监控 | 慢查询>10/min或连接数>80%告警 | 监控MySQL metrics | 生产资源§8.2 | ☐ | |
| 3.3.7 | 服务健康检查告警 | 任一核心服务health=unhealthy持续2min告警 | 监控docker health状态 | 监控指南§3 | ☐ | |
| 3.3.8 | Nginx 5xx错误率监控 | 5xx率>1%持续1min告警 | 监控nginx access log | 生产资源§8.1 | ☐ | |
| 3.3.9 | 磁盘空间告警 | 所有挂载点使用率>80%告警 | 主机磁盘监控 | 生产资源§8.1 | ☐ | |
| 3.3.10 | 日志可查询 | docker compose logs 可正常查看各服务日志 | 验证几个核心服务日志可正常输出 | 监控指南§1 | ☐ | |
| 3.3.11 | 告警通知渠道 | 告警可送达客户运维(邮件/钉钉/企微/飞书) | 发送测试告警验证 | 客户信息表1.6.13 | ☐ | |
| 3.3.12 | WuKongIM连接数监控 | 在线连接数异常告警(如突降为0) | 监控wk metrics | 生产资源§8.2 | ☐ |
3.4 客户培训要点
| # | 培训项 | 培训对象 | 内容要点 | 完成确认 | 备注 |
|---|---|---|---|---|---|
| 3.4.1 | 系统架构概览 | 管理员+运维 | OCTO组件构成、数据流向、端口架构 | ☐ | |
| 3.4.2 | 日常运维操作 | 运维 | 启停命令(docker compose up/down/start/stop/restart)、日志查看、服务状态检查 | ☐ | 参考单机SOP§十二 |
| 3.4.3 | 用户管理 | 管理员 | 创建/禁用用户、Space成员管理、角色权限(注:Q10已确认无独立组织架构模块,成员管理以Space为边界) | ☐ | |
| 3.4.4 | 基础功能使用 | 全员/关键用户 | 聊天/群聊/文件传输/语音/搜索/AI助手等核心功能 | ☐ | |
| 3.4.5 | 模块功能使用 | 对应用户 | 文档协同/网盘/Bot技能等启用模块的专项培训 | ☐ | 按启用模块安排 |
| 3.4.6 | 常见问题处理 | 运维/管理员 | 常见报错处理:preflight/密码问题/证书/端口冲突/磁盘满等Top10问题 | ☐ | 参考单机SOP§十一 |
| 3.4.7 | 备份恢复流程 | 运维 | 备份脚本使用、恢复操作步骤、备份验证方法 | ☐ | |
| 3.4.8 | 紧急联系人 | 管理员/运维 | OCTO技术支持联系方式、升级/故障申报流程 | ☐ |
3.5 交付文档清单
| # | 文档名称 | 格式 | 交付方式 | 实际交付 | 备注 |
|---|---|---|---|---|---|
| 3.5.1 | 部署文档(单机SOP或K8s SOP) | PDF/Markdown | 交付U盘/邮件/知识库 | ☐ | |
| 3.5.2 | 本私有化部署Checklist(已填写) | PDF/打印件 | 双方签字 | ☐ | |
| 3.5.3 | 管理员手册 | 交付 | ☐ | ||
| 3.5.4 | 用户使用手册/快速指南 | 交付 | ☐ | ||
| 3.5.5 | API文档(如需集成) | 在线/PDF | 交付 | ☐ | N/A ☐ |
| 3.5.6 | 账号密码清单(加密交付) | 加密文件/纸质密封 | 仅交付客户指定负责人 | ☐ | 包含:管理员账号/DB密码/MinIO密码/各Token等 |
| 3.5.7 | 环境信息表 | PDF/Excel | 交付 | ☐ | 服务器IP/域名/端口/版本/模块清单 |
| 3.5.8 | .env 配置文件备份 | 加密文件 | 交付客户运维存档 | ☐ | |
| 3.5.9 | 备份恢复操作手册 | 交付 | ☐ | ||
| 3.5.10 | 常见问题FAQ | 交付 | ☐ |
3.6 验收签字项
| # | 验收类别 | 验收项 | 验收标准 | 客户确认 | 备注 |
|---|---|---|---|---|---|
| 3.6.1 | 功能验收 | 用户登录认证 | 可正常登录、修改密码、退出 | ☐ | |
| 3.6.2 | 功能验收 | 即时消息(C2C+群聊) | 文本/图片/文件消息实时收发,离线消息可达 | ☐ | |
| 3.6.3 | 功能验收 | 文件上传下载 | 图片/文件/头像上传下载正常(≤1000MB) | ☐ | |
| 3.6.4 | 功能验收 | 管理后台 | 用户/组织/配置管理可用 | ☐ | |
| 3.6.5 | 功能验收 | 启用模块功能 | 所有已启用模块(summary/speech/docs/drive/search/fleet)功能正常 | ☐ | |
| 3.6.6 | 功能验收 | AI功能(如启用) | AI助手/智能摘要/语音转写正常响应 | ☐ | N/A ☐ |
| 3.6.7 | 性能验收 | 并发用户 | 满足约定规模并发用户在线(如__人同时在线消息收发正常) | ☐ | 按档位约定 |
| 3.6.8 | 性能验收 | 响应时间 | 消息发送到接收延迟<1s(内网);页面加载<3s | ☐ | |
| 3.6.9 | 性能验收 | 文件传输 | 10MB文件上传<10s(内网) | ☐ | |
| 3.6.10 | 安全验收 | 端口安全 | 仅约定端口对外,其余端口不可达 | ☐ | |
| 3.6.11 | 安全验收 | HTTPS/证书 | 公网访问启用有效TLS证书 | ☐ | N/A(纯内网) ☐ |
| 3.6.12 | 安全验收 | 密码策略 | 所有默认密码已修改 | ☐ | |
| 3.6.13 | 交付物验收 | 文档完整 | 3.5节所有文档已交付 | ☐ | |
| 3.6.14 | 交付物验收 | 培训完成 | 管理员和用户培训已完成 | ☐ |
3.7 升级预案
参考:《升级与版本迁移指南-v1.0》
| # | 检查项 | 期望结果 | 验证方式 | 参考文档 | 实际结果 | 备注 | |
|---|---|---|---|---|---|---|---|
| 3.7.1 | 升级流程文档已交付 | 客户了解升级SOP:备份→读Changelog→pull新镜像→启动→验证→回滚预案 | 升级指南文档化 | 升级指南§1-2 | ☐ | ||
| 3.7.2 | 回滚方案明确 | 升级失败可通过备份恢复到原版本 | 回滚步骤文档化 | 升级指南§5 | ☐ | ||
| 3.7.3 | 版本记录已建立 | 记录当前部署版本号(octo-server版本/镜像digest) | `docker images | grep octo` 或 helm list | 通用最佳实践 | ☐ | |
| 3.7.4 | Changelog 订阅 | 客户知晓如何获取版本更新通知(GitHub Releases/交付群通知) | 提供订阅方式 | 升级指南§1.2 | ☐ | ||
| 3.7.5 | 测试环境(建议) | L档以上建议客户维持一套测试环境用于升级验证 | 与客户确认 | 升级指南§1.3 | ☐ | ||
| 3.7.6 | COMPOSE_PROJECT_NAME 记录 | 多套部署需不同项目名,避免 down -v 误删 | 记录当前 project name | 环境变量§19.7 | ☐ | ||
| 3.7.7 | 数据库迁移机制了解 | 升级可能触发自动migration,需在维护窗口执行 | 与客户运维说明 | 升级指南§4 | ☐ | ||
| 3.7.8 | Kafka Cluster ID 不可变提示 | search模块的OCTO_SEARCH_KAFKA_CLUSTER_ID首次安装后不可修改 | 记录在交付文档中 | 环境变量§19.8 | ☐ | N/A ☐ |
附录 A:快速命令参考
启停管理
cd octo-deployment/docker
docker compose up -d # 启动所有服务
docker compose up -d --wait # 启动并等待健康
docker compose stop # 停止(保留容器)
docker compose start # 启动已停止的容器
docker compose restart # 重启所有服务
docker compose restart octo-server # 重启单个服务
docker compose down # 停止并删除容器(保留数据卷)
# ⚠️ docker compose down -v # 会删除所有数据卷!生产环境慎用
日志查看
docker compose logs -f octo-server # 实时查看octo-server日志
docker compose logs --tail=100 nginx # 查看nginx最近100行
docker compose logs mysql 2>&1 | grep -i error # 查看MySQL错误
一键健康检查
#!/bin/bash
echo "=== OCTO Health Check ==="
curl -s http://localhost:28080/_nginx_up && echo " ✅ nginx" || echo " ❌ nginx"
curl -s http://localhost:28080/api/v1/ping && echo " ✅ octo-server" || echo " ❌ octo-server"
curl -s http://localhost:28080/minio/health/live >/dev/null && echo " ✅ minio" || echo " ❌ minio"
docker compose exec redis redis-cli ping | grep -q PONG && echo " ✅ redis" || echo " ❌ redis"
docker compose exec mysql mysqladmin ping -h 127.0.0.1 -u root -p"$MYSQL_ROOT_PASSWORD" --silent | grep -q alive && echo " ✅ mysql" || echo " ❌ mysql"
docker compose ps --format "table {{.Names}}\t{{.Status}}"
SSH 隧道访问内部管理界面
# MinIO Console (:29001)
ssh -L 9001:127.0.0.1:29001 user@host # 浏览器 http://localhost:9001
# WuKongIM Manager (:25001)
ssh -L 5001:127.0.0.1:25001 user@host # 浏览器 http://localhost:5001/
# Speech Admin (:28088)
ssh -L 28088:127.0.0.1:28088 user@host # 浏览器 http://localhost:28088
附录 B:参考文档索引
| 文档 | 路径 | 用途 |
|---|---|---|
| 单机Docker部署SOP | 03-deployment-ops/单机Docker部署SOP-v1.0.md | Docker Compose 完整部署步骤 |
| Kubernetes-Helm部署SOP | 03-deployment-ops/Kubernetes-Helm部署SOP-v1.0.md | K8s Helm 部署步骤 |
| 网络端口与防火墙清单 | 03-deployment-ops/网络端口与防火墙清单-v1.0.md | 端口规划和防火墙规则 |
| 环境变量配置参考 | 03-deployment-ops/环境变量配置参考-v1.0.md | 所有环境变量说明 |
| 生产资源规格建议 | 03-deployment-ops/生产资源规格建议-v1.0.md | 服务器资源规划 |
| Nginx反向代理配置清单 | 03-deployment-ops/Nginx反向代理配置清单-v1.0.md | Nginx配置详情 |
| MinIO Bucket与数据管理 | 03-deployment-ops/MinIO-Bucket与数据管理-v1.0.md | 对象存储和备份 |
| DockerCompose离线部署指南 | 03-deployment-ops/DockerCompose离线部署指南-v1.0.md | 离线镜像准备和导入 |
| 升级与版本迁移指南 | 03-deployment-ops/升级与版本迁移指南-v1.0.md | 升级和回滚流程 |
| 监控与日志配置指南 | 03-deployment-ops/监控与日志配置指南-v1.0.md | 监控告警和日志 |
| 内部模块Profile开启指南 | 03-deployment-ops/内部模块Profile开启指南-v1.0.md | 各模块启用详情 |