排障

本页汇总部署和访问阶段的常见故障。先按故障阶段定位日志,再对照现象表处理。

定位日志

故障阶段日志位置
服务无法启动docker compose logs --tail=100 crm、journalctl -u nocobase-crm -n 100 或 pm2 logs nocobase-crm
Hub 上的部署失败Hub 中该次部署记录的日志
应用启动后报错应用运行日志;Hub 托管的应用位于 APP_STORAGE_DIR 下的 apps/volumes/<appId>/storage/logs/
域名、HTTPS 或转发异常反向代理日志,再结合服务日志定位

通过 app-installer 安装的应用,pm2 收集的日志也保存在安装目录的 logs/app.out.log 和 logs/app.err.log。Hub 自身的日志位于 APP_STORAGE_DIR 下的 hub/logs/,部署日志按应用和部署 ID 分文件保存在 hub/logs/deployments/。

启动与数据

现象检查与处理
原生模块加载失败,日志包含 ERR_DLOPEN_FAILED 或 NODE_MODULE_VERSION构建目标与运行环境不一致。核对服务器或 Hub 容器的架构、libc 和 Node 大版本,使用正确的 --target 和 --node-version 重新构建
启动后原有数据不可见停止应用,核对数据库连接、SQLite 路径和持久目录挂载,确认是否连接到了新建的空数据库
数据库文件、上传文件或日志无法写入检查运行账号对持久目录的写权限;Docker 中注意 node 用户的 UID 为 1000
启动时报密钥错误secrets.keys 缺失、为模板占位值或不足 32 字节,或 auth.secret、session.secret 仍为模板占位值;config check 会指出字段
回滚后仍无法启动旧版本与当前数据库不兼容,需要恢复升级前的配套备份后再启动

访问

现象检查与处理
首页正常,刷新子页面或加载资源时返回 404APP_BASE_PATH 与反向代理转发的路径不一致,或反向代理未保留路径前缀
页面可打开但无法登录NODE_ENV=production 下 Cookie 仅通过 HTTPS 或 localhost 发送;检查 APP_PUBLIC_ORIGIN 和转发头
WebSocket 连接失败反向代理未转发 Upgrade 和 Connection 头
访问 Hub 域名根路径返回 404Hub 位于 /hub/,而非域名根路径
Hub 可访问,业务应用返回 502 或 503检查该应用和 Host 的状态与日志,应用可能仍在启动或启动失败;设置为首次访问时启动的应用需要访问后才会启动

发布到 Hub

现象检查与处理
不存在 hub deploy 命令项目未依赖 @nocobase/hub-cli,执行 pnpm add -D @nocobase/hub-cli;该命令仅在源码项目中可用
CLI 报告 NO_REMOTE尚未配置远程,通过 hub remote add <名称> <Hub 地址>/apps/<应用 ID> 添加,并提交 .nocobase/hub.json
CLI 报告 NOT_LOGGED_IN本机未保存该远程的密钥,执行 hub auth login;在 CI 中将密钥变量通过管道传给 hub auth login --with-token
CLI 报告 BUILD_FAILED错误之前输出的构建日志说明了原因,在项目中修复后重新部署
CLI 报告 BUILD_TARGET_MISMATCH通过 --no-build 或 --file 指定的部署包是为其他平台构建的;去掉这两个参数,由 hub deploy 针对 Hub 构建
CLI 报告 BUILD_TARGET_UNAVAILABLEHub 的 App Host 未响应,Hub 无法报告其平台;在 Hub 中检查 Host 状态,或按管理界面部署的方式针对 Hub 环境构建,再通过 --file 部署该部署包
CLI 找不到部署包只有 --no-build 和 --file 读取已有部署包;去掉这两个参数由 hub deploy 构建,或通过 --file 指定正确路径
上传返回 413反向代理的请求大小限制,在 Nginx 中增加 client_max_body_size 260m;:管理界面上传整个归档(最大 256 MiB),CLI 按 8 MiB 分段上传(归档最大 2 GiB)
返回 401 或 403API Key 无效、未绑定该应用、缺少上传或部署权限,或创建者已失去相应权限;通过 hub auth status 检查,再用 hub auth login 保存正确的密钥
返回 409同一幂等键提交了不同的请求;原样重试原请求,或为新请求使用新的 --idempotency-key
CLI 退出码为 3结果未确认。先查看 Hub 的部署记录,再使用相同的 --idempotency-key 重试
部署成功但应用无法启动通常为通过管理界面上传的部署包构建目标不匹配,见上文原生模块一行
提交 --config 后原有字段丢失--config 整份替换配置,需要提交完整配置