7.4 KiB
商业化首装演练记录 2026-06-01
本文记录本轮在本机飞牛 fnOS 虚拟机上的客户首装验收情况。只沉淀环境事实、验证结果和后续坑位,不记录 SSH 密码、许可证密钥、对象存储密钥或其它敏感信息。
1. 演练结论
- 飞牛 fnOS 虚拟机可以作为当前商业化首装/验收测试环境。
- 当前已有一套
flnxi-fnos-smoke环境运行正常,未覆盖、未删除。 - 新增的 NAS / Linux 首装验收脚本
scripts/customer-install.sh和scripts/smoke-install.sh已在飞牛 VM 上通过只读验收。 - 客户首装的真实主入口仍是
docker-compose.prod.yml + .env;脚本只是预检、启动和验收包装。
2. 环境现场
- 虚拟机地址:
192.168.116.128 - 系统:Linux / fnOS,内核
6.18.18-trim - Docker Server:
28.5.2 - 可用磁盘:
/vol1约35G - 飞牛 Web 管理端:
5666 - 当前测试部署目录:
/vol1/flnxi-customer-smoke
当前运行中的 FLNXI 容器:
flnxi-fnos-smoke-appflnxi-fnos-smoke-postgresflnxi-fnos-smoke-minio
当前测试端口:
- 应用:
4320 -> 3000 - MinIO API:
39200 -> 9000 - MinIO Console:
39201 -> 9001
3. 已验证内容
3.1 远端健康检查
远端本机访问:
curl http://127.0.0.1:4320/api/health
结果:返回 status: ok,启动检查执行成功。
登录页:
curl -I http://127.0.0.1:4320/login
结果:返回 HTTP/1.1 200 OK。
3.2 NAS / Linux 首装向导
已把本轮新增脚本复制到测试部署目录:
/vol1/flnxi-customer-smoke/scripts/customer-install.sh
/vol1/flnxi-customer-smoke/scripts/smoke-install.sh
/vol1/flnxi-customer-smoke/scripts/backup-restore.sh
/vol1/flnxi-customer-smoke/scripts/customer-acceptance-smoke.mjs
只看步骤:
bash /vol1/flnxi-customer-smoke/scripts/customer-install.sh \
--project-dir /vol1/flnxi-customer-smoke \
--plan-only
结果:通过,能按 4 步展示预检、启动方式、验收和结果说明。
安装前检查:
sudo bash /vol1/flnxi-customer-smoke/scripts/smoke-install.sh \
--project-dir /vol1/flnxi-customer-smoke \
--preflight-only
结果:通过。
只读验收:
sudo bash /vol1/flnxi-customer-smoke/scripts/smoke-install.sh \
--project-dir /vol1/flnxi-customer-smoke \
--health-timeout-seconds 60
结果:通过。
脚本已验证:
- Compose 配置有效
- 三个容器运行正常
- 应用镜像为
flnxi-material:customer-smoke-20260530 - 镜像内
VERSION.txt为1.0.0 /api/health正常- Prisma 迁移状态为最新
- MinIO bucket 存在
3.3 NAS / Linux 备份验收
备份前健康验收:
sudo bash /vol1/flnxi-customer-smoke/scripts/backup-restore.sh \
--project-dir /vol1/flnxi-customer-smoke \
--action verify \
--health-timeout-seconds 60
结果:通过。
实际备份:
sudo bash /vol1/flnxi-customer-smoke/scripts/backup-restore.sh \
--project-dir /vol1/flnxi-customer-smoke \
--action backup \
--health-timeout-seconds 60
结果:备份成功,生成目录:
/vol1/flnxi-customer-smoke/backups/flnxi-backup-20260601-150351
备份内容包括:
.envdocker-compose.prod.ymlcompose-config.txtcompose-ps.txtdocker-images.txtpostgres.sqlminio-data.tar.gzdata.tar.gzuploads.tar.gzmanifest.jsonREADME-SENSITIVE.txt
补充修正脚本后再次备份,生成目录:
/vol1/flnxi-customer-smoke/backups/flnxi-backup-20260601-150543
这次脚本在备份结束后自动等待健康检查,/api/health 再次返回 status: ok。
3.4 客户业务 smoke
本轮新增:
npm run smoke:customer -- --base-url http://<SERVER_IP>:4320
该脚本用于补足“容器活着但业务不一定可用”的空白:
- 只读模式检查
/api/health、/api/system/init、/login和未登录后台拦截。 - 提供临时验收账号后,检查登录、上传模板、内置模板、默认密码检查和后台用户接口。
- 加
--write后,执行一次真实小素材上传,验证数据库和 MinIO/S3 写入。
本轮在飞牛 VM 上已验证:
- 只读模式通过。
- 使用临时 smoke 管理员登录后,模板接口、默认密码检查和后台用户接口通过。
--write上传被许可证拦截,返回:当前许可证最多支持 0 个素材,当前已有 0 个素材。请联系管理员处理授权。这说明当前 VM 的许可证状态不允许素材写入;脚本能正确把这类业务验收失败暴露出来。后续要验证真实上传,需要先给测试环境配置允许上传的许可证或换到已授权环境。- 临时 smoke 管理员已在验证结束后删除,未作为长期账号保留。
4. 已发现和处理的坑
4.1 不能只提供 PowerShell 首装脚本
目标客户环境是 NAS / Linux,不能默认现场有 PowerShell。已新增:
scripts/customer-install.shscripts/smoke-install.shscripts/backup-restore.shscripts/customer-acceptance-smoke.mjs
文档已同步说明:NAS / Linux 优先 .sh,Windows 实施机或已安装 PowerShell 的现场可用 .ps1。
4.2 只换目录不够,必须换容器名/卷名/端口
飞牛 VM 上已经有一套 flnxi-fnos-smoke。后续如果做全新目录演练,必须在 .env 里同时修改:
COMPOSE_PROJECT_NAMEAPP_CONTAINER_NAMEPOSTGRES_CONTAINER_NAMEMINIO_CONTAINER_NAMEMINIO_INIT_CONTAINER_NAMEPOSTGRES_VOLUME_NAMEMINIO_VOLUME_NAMEAPP_NETWORK_NAMEAPP_PORTMINIO_API_PORTMINIO_CONSOLE_PORT
否则可能撞旧容器、旧卷、旧网络或端口。
4.3 fnOS 上 Docker 需要 sudo
当前 admin 用户不能直接访问 Docker daemon,脚本需要用 sudo bash ... 执行,或把实施账号加入合适的 Docker 权限组。
4.4 admin 家目录提示不阻断
SSH 登录会提示:
Could not chdir to home directory /home/admin: No such file or directory
这不影响命令执行,但如果后续做长期自动化,建议在飞牛系统里补齐该用户家目录或换成更标准的实施账号。
4.5 备份后必须等待应用健康
第一次跑 backup-restore.sh --action backup 时,备份本身成功,脚本也重新启动了 app,但外部立刻请求 /api/health 会遇到应用刚启动的短暂窗口期。已修正脚本:如果备份前停止过 app,备份结束后会自动执行健康验收,避免实施人员误以为恢复启动失败。
4.6 业务 smoke 能暴露许可证限制
当前飞牛 VM 的许可证允许素材数为 0,所以真实上传 smoke 会失败。这不是脚本失败,而是业务前置条件没有满足。第一版商业化验收时,必须把“许可证是否允许上传”放进验收清单,否则系统容器正常也可能无法交付使用。
5. 下一步建议
- 新建独立目录做一次真正“空目录首装”,不要覆盖
/vol1/flnxi-customer-smoke。 - 目录建议:
/vol1/flnxi-commercial-rehearsal-20260601。 - 新
.env必须使用独立容器名、卷名、网络名和端口,例如应用端口可用4322。 - 首装通过后,再做上传、模板、备份、升级和回滚演练。
- 当前 Linux 版已覆盖首装、容器验收、备份和客户业务 smoke;真实上传验收还需要一份允许上传的测试许可证;恢复演练需要在单独演练环境执行,不能覆盖已有 smoke 环境。