@nocobase/plugin-ai 2.1.0-beta.43 → 2.1.0-beta.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/ai/docs/nocobase/ai/install-upgrade-migration.mdx +127 -132
  2. package/dist/ai/docs/nocobase/ai-dev/capabilities.md +1 -1
  3. package/dist/ai/docs/nocobase/ai-dev/index.md +1 -1
  4. package/dist/ai/docs/nocobase/ai-dev/watermark-plugin.md +1 -1
  5. package/dist/ai/docs/nocobase/api/cli/app/autostart/disable.md +44 -0
  6. package/dist/ai/docs/nocobase/api/cli/app/autostart/enable.md +44 -0
  7. package/dist/ai/docs/nocobase/api/cli/app/autostart/index.md +63 -0
  8. package/dist/ai/docs/nocobase/api/cli/app/autostart/list.md +41 -0
  9. package/dist/ai/docs/nocobase/api/cli/app/autostart/run.md +50 -0
  10. package/dist/ai/docs/nocobase/api/cli/app/index.md +18 -15
  11. package/dist/ai/docs/nocobase/api/cli/app/restart.md +3 -11
  12. package/dist/ai/docs/nocobase/api/cli/app/start.md +3 -11
  13. package/dist/ai/docs/nocobase/api/cli/app/stop.md +22 -12
  14. package/dist/ai/docs/nocobase/api/cli/app/upgrade.md +6 -6
  15. package/dist/ai/docs/nocobase/api/cli/backup/create.md +49 -0
  16. package/dist/ai/docs/nocobase/api/cli/backup/index.md +46 -0
  17. package/dist/ai/docs/nocobase/api/cli/backup/restore.md +46 -0
  18. package/dist/ai/docs/nocobase/api/cli/config/delete.md +11 -9
  19. package/dist/ai/docs/nocobase/api/cli/config/get.md +11 -8
  20. package/dist/ai/docs/nocobase/api/cli/config/index.md +28 -24
  21. package/dist/ai/docs/nocobase/api/cli/config/set.md +14 -12
  22. package/dist/ai/docs/nocobase/api/cli/db/stop.md +10 -11
  23. package/dist/ai/docs/nocobase/api/cli/env/index.md +25 -23
  24. package/dist/ai/docs/nocobase/api/cli/env/info.md +12 -10
  25. package/dist/ai/docs/nocobase/api/cli/env/proxy/caddy.md +108 -0
  26. package/dist/ai/docs/nocobase/api/cli/env/proxy/index.md +54 -0
  27. package/dist/ai/docs/nocobase/api/cli/env/proxy/nginx.md +104 -0
  28. package/dist/ai/docs/nocobase/api/cli/env/remove.md +18 -14
  29. package/dist/ai/docs/nocobase/api/cli/env/update.md +115 -14
  30. package/dist/ai/docs/nocobase/api/cli/index.md +66 -52
  31. package/dist/ai/docs/nocobase/api/cli/init.md +244 -62
  32. package/dist/ai/docs/nocobase/api/cli/license/activate.md +13 -12
  33. package/dist/ai/docs/nocobase/api/cli/license/index.md +2 -2
  34. package/dist/ai/docs/nocobase/api/cli/plugin/import.md +74 -0
  35. package/dist/ai/docs/nocobase/api/cli/plugin/index.md +4 -2
  36. package/dist/ai/docs/nocobase/get-started/deployment/how-to-deploy-nocobase-faster.mdx +384 -0
  37. package/dist/ai/docs/nocobase/get-started/install-upgrade-plugins.mdx +16 -10
  38. package/dist/ai/docs/nocobase/get-started/upgrading/docker.md +1 -1
  39. package/dist/ai/docs/nocobase/index.md +3 -3
  40. package/dist/ai/docs/nocobase/multi-app/multi-app/app-block-and-switcher.md +68 -0
  41. package/dist/ai/docs/nocobase/multi-app/multi-app/app-sso.md +71 -0
  42. package/dist/ai/docs/nocobase/multi-app/multi-app/index.md +9 -1
  43. package/dist/ai/docs/nocobase/multi-app/multi-app/sub-app-api.md +112 -0
  44. package/dist/ai/docs/nocobase/plugin-development/client/appendix/faq.md +3 -3
  45. package/dist/ai/docs/nocobase/plugin-development/client/component/index.md +1 -1
  46. package/dist/ai/docs/nocobase/plugin-development/client/ctx/common-capabilities.md +2 -2
  47. package/dist/ai/docs/nocobase/plugin-development/client/ctx/index.md +1 -1
  48. package/dist/ai/docs/nocobase/plugin-development/client/router.md +11 -11
  49. package/dist/ai/docs/nocobase/quickstart/index.md +27 -0
  50. package/dist/ai/docs/nocobase/quickstart/installation/airgap.md +67 -0
  51. package/dist/ai/docs/nocobase/quickstart/installation/cli.md +205 -0
  52. package/dist/ai/docs/nocobase/quickstart/installation/docker-compose.md +123 -0
  53. package/dist/ai/docs/nocobase/quickstart/installation/env.md +101 -0
  54. package/dist/ai/docs/nocobase/quickstart/installation/migration.md +50 -0
  55. package/dist/ai/docs/nocobase/quickstart/operations/backup-restore.md +94 -0
  56. package/dist/ai/docs/nocobase/quickstart/operations/manage-app.md +166 -0
  57. package/dist/ai/docs/nocobase/quickstart/operations/multi-environment.md +171 -0
  58. package/dist/ai/docs/nocobase/quickstart/plugins/third-party.md +86 -0
  59. package/dist/ai/docs/nocobase/quickstart/production/index.md +163 -0
  60. package/dist/ai/docs/nocobase/quickstart/production/reverse-proxy/caddy.md +158 -0
  61. package/dist/ai/docs/nocobase/quickstart/production/reverse-proxy/index.md +100 -0
  62. package/dist/ai/docs/nocobase/quickstart/production/reverse-proxy/nginx.md +166 -0
  63. package/dist/ai/docs/nocobase/quickstart/release-management.md +1 -0
  64. package/dist/ai/docs/nocobase/solution/all-in-one/installation.md +181 -0
  65. package/dist/ai/docs/nocobase/solution/crm/changelog.md +0 -3
  66. package/dist/ai/docs/nocobase/solution/crm/installation.md +6 -76
  67. package/dist/ai/docs/nocobase/solution/crm/v1.md +6 -35
  68. package/dist/ai/docs/nocobase/solution/ticket-system/changelog.md +0 -2
  69. package/dist/ai/docs/nocobase/solution/ticket-system/installation.md +6 -69
  70. package/dist/ai/docs/nocobase/workflow/advanced/options.md +45 -1
  71. package/dist/client/{406.15c09d98faa2ccf1.js → 406.9a530334eae8cede.js} +1 -1
  72. package/dist/client/{428.e9f38da3b0d8b498.js → 428.431a00d29107058e.js} +1 -1
  73. package/dist/client/index.js +2 -2
  74. package/dist/client-v2/index.js +1 -1
  75. package/dist/externalVersion.js +18 -18
  76. package/dist/locale/de-DE.json +1 -0
  77. package/dist/locale/en-US.json +2 -1
  78. package/dist/locale/es-ES.json +1 -0
  79. package/dist/locale/fr-FR.json +1 -0
  80. package/dist/locale/hu-HU.json +1 -0
  81. package/dist/locale/id-ID.json +1 -0
  82. package/dist/locale/it-IT.json +1 -0
  83. package/dist/locale/ja-JP.json +1 -0
  84. package/dist/locale/ko-KR.json +1 -0
  85. package/dist/locale/nl-NL.json +1 -0
  86. package/dist/locale/pt-BR.json +1 -0
  87. package/dist/locale/ru-RU.json +1 -0
  88. package/dist/locale/tr-TR.json +1 -0
  89. package/dist/locale/uk-UA.json +1 -0
  90. package/dist/locale/vi-VN.json +1 -0
  91. package/dist/locale/zh-CN.json +2 -1
  92. package/dist/locale/zh-TW.json +1 -0
  93. package/dist/node_modules/@langchain/xai/package.json +1 -1
  94. package/dist/node_modules/fs-extra/package.json +1 -1
  95. package/dist/node_modules/jsonrepair/package.json +1 -1
  96. package/dist/node_modules/just-bash/package.json +1 -1
  97. package/dist/node_modules/nodejs-snowflake/package.json +1 -1
  98. package/dist/node_modules/openai/package.json +1 -1
  99. package/dist/node_modules/zod/package.json +1 -1
  100. package/dist/server/llm-providers/anthropic.js +17 -23
  101. package/dist/server/llm-providers/dashscope.js +3 -3
  102. package/dist/server/llm-providers/deepseek.js +2 -2
  103. package/dist/server/llm-providers/google-genai.js +17 -22
  104. package/dist/server/llm-providers/kimi/provider.js +4 -4
  105. package/dist/server/llm-providers/mimo.js +2 -2
  106. package/dist/server/llm-providers/ollama.js +14 -21
  107. package/dist/server/llm-providers/openai/completions.js +2 -2
  108. package/dist/server/llm-providers/openai/embedding.js +1 -1
  109. package/dist/server/llm-providers/openai/responses.js +2 -2
  110. package/dist/server/llm-providers/provider.d.ts +3 -1
  111. package/dist/server/llm-providers/provider.js +55 -22
  112. package/dist/server/llm-providers/xai.js +2 -2
  113. package/dist/server/resource/ai.js +11 -9
  114. package/dist/server/workflow/nodes/employee/index.js +2 -4
  115. package/dist/server/workflow/nodes/employee/types.d.ts +2 -2
  116. package/package.json +2 -2
  117. package/dist/ai/docs/nocobase/api/cli/app/down.md +0 -41
@@ -0,0 +1,101 @@
1
+ # 应用环境变量
2
+
3
+ 大部分场景只需要先看这几类环境变量:`APP_KEY`、`TZ`、`APP_PORT`,以及数据库相关的 `DB_*`。如果你只是想把应用先跑起来,通常来说先把这几项确认好就够了。
4
+
5
+ ## 怎么设置环境变量
6
+
7
+ ### `create-nocobase-app` 或 Git 源码方式
8
+
9
+ 在项目根目录的 `.env` 文件里设置环境变量。修改完成后,重新启动应用。
10
+
11
+ ```bash
12
+ APP_KEY=your-app-key
13
+ TZ=Asia/Shanghai
14
+ APP_PORT=13000
15
+ DB_DIALECT=postgres
16
+ DB_HOST=127.0.0.1
17
+ DB_PORT=5432
18
+ DB_DATABASE=nocobase
19
+ DB_USER=nocobase
20
+ DB_PASSWORD=nocobase
21
+ ```
22
+
23
+ ### Docker Compose 方式
24
+
25
+ 可以直接在 `docker-compose.yml` 的 `environment` 里设置:
26
+
27
+ ```yml
28
+ services:
29
+ app:
30
+ image: nocobase/nocobase:latest
31
+ environment:
32
+ - APP_ENV=production
33
+ - APP_KEY=your-app-key
34
+ - TZ=Asia/Shanghai
35
+ ```
36
+
37
+ 也可以用 `env_file` 引入单独的 `.env` 文件:
38
+
39
+ ```yml
40
+ services:
41
+ app:
42
+ image: nocobase/nocobase:latest
43
+ env_file: .env
44
+ ```
45
+
46
+ 修改完成后,重新创建应用容器:
47
+
48
+ ```bash
49
+ docker compose up -d app
50
+ ```
51
+
52
+ ## 先确认哪些变量
53
+
54
+ ### `APP_KEY`
55
+
56
+ 应用密钥,用于生成 token 等敏感数据。部署到正式环境前,记得改成你自己的值,并妥善保管。
57
+
58
+ :::warning 注意
59
+
60
+ 如果 `APP_KEY` 改了,旧的 token 也会随之失效。
61
+
62
+ :::
63
+
64
+ ### `TZ`
65
+
66
+ 应用时区。和时间相关的处理都会受它影响。
67
+
68
+ ```bash
69
+ TZ=Asia/Shanghai
70
+ ```
71
+
72
+ ### `APP_PORT`
73
+
74
+ 应用端口,默认值通常是 `13000`。
75
+
76
+ ```bash
77
+ APP_PORT=13000
78
+ ```
79
+
80
+ ### `DB_*`
81
+
82
+ 如果你使用外部数据库,至少要确认这些变量:
83
+
84
+ ```bash
85
+ DB_DIALECT=postgres
86
+ DB_HOST=127.0.0.1
87
+ DB_PORT=5432
88
+ DB_DATABASE=nocobase
89
+ DB_USER=nocobase
90
+ DB_PASSWORD=nocobase
91
+ ```
92
+
93
+ 如果你使用 MySQL 或 MariaDB,并且数据库配置了 `lower_case_table_names=1`,还需要确认:
94
+
95
+ ```bash
96
+ DB_UNDERSCORED=true
97
+ ```
98
+
99
+ ## 完整变量列表
100
+
101
+ 如果你需要查看全部环境变量说明,比如 `CLUSTER_MODE`、`CACHE_*`、`FILE_STORAGE`、插件相关变量等,继续看 [全局环境变量](/api/app/env)。
@@ -0,0 +1,50 @@
1
+ # 从旧方式迁移到 CLI
2
+
3
+ 如果你现在还是按旧文档使用 Docker、`create-nocobase-app` 或 Git 源码方式安装和维护 NocoBase,可以逐步切换到基于 CLI 的安装和管理方式。
4
+
5
+ 默认先迁移测试环境就够了。只有当你已经确认备份、环境变量和数据库配置都没问题时,再迁移生产环境。
6
+
7
+ ## 迁移前先确认
8
+
9
+ 1. 已备份数据库。
10
+ 2. 已备份 `storage` 目录。
11
+ 3. 已记录旧应用的关键环境变量,比如 `APP_KEY`、`TZ`、`DB_*`、`DB_UNDERSCORED`。
12
+
13
+ ## 方式一:连接已有应用
14
+
15
+ 如果你的旧应用已经稳定运行,默认先用这个方式。风险最低,CLI 只保存连接信息,不会直接接管旧应用的启动、停止和升级流程。
16
+
17
+ ```bash
18
+ # 默认使用 OAuth 认证
19
+ nb init --yes --env app1 \
20
+ --api-base-url=http://your-app-host/api
21
+
22
+ # 使用 token 认证
23
+ nb init --yes --env app1 \
24
+ --api-base-url=http://your-app-host/api \
25
+ --auth-type=token \
26
+ --access-token=<token>
27
+ ```
28
+
29
+ 如果后续需要重新认证,可以执行:
30
+
31
+ ```bash
32
+ nb env auth app1
33
+ ```
34
+
35
+ ## 方式二:新建 CLI env 后迁移
36
+
37
+ 如果你希望后续统一用 `nb app`、`nb env`、`nb source` 管理本地应用,可以新建一个 CLI env,再把旧应用的数据和配置迁过去。
38
+
39
+ 先创建新的 CLI env:
40
+
41
+ ```bash
42
+ nb init --yes --env app1
43
+ ```
44
+
45
+ 创建完成后,再根据你的旧安装方式迁移数据库、`storage` 和环境变量配置。
46
+
47
+ ## 下一步去哪里看
48
+
49
+ - 如果你只是想开始用新的 CLI 方式安装和维护应用,继续看 [使用 CLI 安装(推荐)](./cli.md)
50
+ - 如果你需要完整的迁移步骤,继续看 [安装与升级迁移指南:使用 NocoBase CLI](/ai/install-upgrade-migration#从旧方式迁移到-cli)
@@ -0,0 +1,94 @@
1
+ # 备份还原
2
+
3
+ 如果你已经把一个 NocoBase 应用保存成 CLI env,日常备份和恢复基本都在 `nb backup` 这一组命令里完成。`nb backup create` 用来在目标 env 创建备份并下载到本地,`nb backup restore` 用来把本地备份文件恢复到目标 env。
4
+
5
+ 大多数时候,先记住一个默认建议就够了:升级、迁移、批量改数据前先备份;只有当你明确知道自己要覆盖当前数据时,再执行恢复。
6
+
7
+ ## 快速索引
8
+
9
+ | 我想要…… | 用哪个命令 |
10
+ | --- | --- |
11
+ | 先把当前 env 备份到本地 | [`nb backup create`](../../api/cli/backup/create.md) |
12
+ | 把备份保存到指定目录 | [`nb backup create --output ./backups`](../../api/cli/backup/create.md) |
13
+ | 让脚本继续消费备份结果 | [`nb backup create --json-output`](../../api/cli/backup/create.md) |
14
+ | 把本地备份恢复到当前 env | [`nb backup restore --file ./backups/xxx.nbdata --force`](../../api/cli/backup/restore.md) |
15
+ | 把本地备份恢复到另一个 env | [`nb backup restore --env app1 --file ./backups/xxx.nbdata --yes --force`](../../api/cli/backup/restore.md) |
16
+
17
+ :::tip 先确认当前 env
18
+
19
+ `nb backup` 命令默认作用在当前 env 上。如果你同时维护多个环境,默认推荐先看一眼当前 env,再执行备份或恢复。
20
+
21
+ ```bash
22
+ nb env current
23
+ nb env use app1
24
+ ```
25
+
26
+ 如果你显式传入了不同的 `--env`,CLI 通常会要求确认。脚本或非交互场景里,可以加 `--yes` 跳过这一步。
27
+
28
+ :::
29
+
30
+ ## 创建备份
31
+
32
+ 最简单的用法就是直接创建一个备份:
33
+
34
+ ```bash
35
+ nb backup create
36
+ ```
37
+
38
+ 命令成功返回后,备份文件已经下载到本地。省略 `--output` 时,CLI 会把文件保存到当前工作目录,并沿用远端返回的文件名——通常是 `backup_*.nbdata`。
39
+
40
+ 如果你想把备份统一放到一个目录里,可以这样用:
41
+
42
+ ```bash
43
+ nb backup create --output ./backups
44
+ ```
45
+
46
+ 如果 `./backups` 已经存在,而且它是一个目录,CLI 会自动把远端备份文件名拼到这个目录后面。只有当路径不存在时,CLI 才会把它当成目标文件路径。
47
+
48
+ 如果你要在脚本、CI 或 agent 链路里继续消费备份结果,可以加 `--json-output`:
49
+
50
+ ```bash
51
+ nb backup create --env app1 --yes --json-output
52
+ ```
53
+
54
+ 这个模式下,CLI 不再输出进度文本,而是直接返回最终 JSON,里面通常会包含 `env`、`name` 和 `output` 三个字段。
55
+
56
+ ## 恢复备份
57
+
58
+ 恢复命令会把本地备份文件上传到目标 env,并覆盖当前应用数据:
59
+
60
+ ```bash
61
+ nb backup restore --file ./backups/backup_20260520_190408_8397.nbdata --force
62
+ ```
63
+
64
+ 如果你要恢复到的不是当前 env,通常来说这样写更稳妥:
65
+
66
+ ```bash
67
+ nb backup restore --env app1 --file ./backups/backup_20260520_190408_8397.nbdata --yes --force
68
+ ```
69
+
70
+ :::warning 注意
71
+
72
+ 恢复是全量覆盖操作。默认推荐在恢复前,先对当前目标 env 再做一份备份。
73
+
74
+ ```bash
75
+ nb backup create --env app1 --yes --output ./backups
76
+ nb backup restore --env app1 --file ./backups/backup_20260520_190408_8397.nbdata --yes --force
77
+ ```
78
+
79
+ :::
80
+
81
+ `nb backup restore` 会先检查 `--file` 指向的路径是否存在,并确认它是一个普通文件。上传成功后,CLI 还会继续等待应用重新通过健康检查,所以命令成功返回时,应用通常已经恢复到可访问状态。
82
+
83
+ 如果没有传入 `--force`,交互终端会再要求你确认一次。在非交互终端、脚本和 AI agent 会话里,`--force` 是必需的。
84
+
85
+ ## 常见情况
86
+
87
+ 如果你更习惯在界面里操作,或者需要定时备份、云存储同步这类能力,可以直接看 [备份管理](../../ops-management/backup-manager/index.mdx)。这类场景下,Web UI 往往更合适。
88
+
89
+ ## 相关链接
90
+
91
+ - [`nb backup` 命令参考](../../api/cli/backup/index.md)
92
+ - [`nb env` 命令参考](../../api/cli/env/index.md)
93
+ - [多环境管理](./multi-environment.md)
94
+ - [备份管理](../../ops-management/backup-manager/index.mdx)
@@ -0,0 +1,166 @@
1
+ # 管理应用
2
+
3
+ 如果你已经把一个 NocoBase 应用保存成 CLI env,日常管理基本都在 `nb app` 这一组命令里完成:启动、停止、重启、查看日志、升级,以及清理本地运行资源。
4
+
5
+ 大多数时候,你不需要记住所有参数。先分清楚自己要做的是“把应用跑起来”“看日志排查问题”,还是“彻底清理这个 env”,再选对应命令就行。
6
+
7
+ ## 快速索引
8
+
9
+ | 我想要…… | 用哪个命令 |
10
+ | --- | --- |
11
+ | 启动或恢复应用运行 | [`nb app start`](../../api/cli/app/start.md) |
12
+ | 临时停止应用 | [`nb app stop`](../../api/cli/app/stop.md) |
13
+ | 连同 CLI 托管的内置数据库一起停掉 | [`nb app stop --with-db`](../../api/cli/app/stop.md) |
14
+ | 修改配置后重新拉起应用 | [`nb app restart`](../../api/cli/app/restart.md) |
15
+ | 实时查看应用日志 | [`nb app logs`](../../api/cli/app/logs.md) |
16
+ | 升级到新的源码或镜像版本 | [`nb app upgrade`](../../api/cli/app/upgrade.md) |
17
+ | 移除 env 配置,但保留 storage 和本地 app 文件 | [`nb env remove`](../../api/cli/env/remove.md) |
18
+ | 连同本机托管资源一起彻底清理 | [`nb env remove --purge`](../../api/cli/env/remove.md) |
19
+
20
+ :::tip 先确认当前 env
21
+
22
+ `nb app` 命令默认作用在当前 env 上。如果你同时维护多个环境,默认推荐先切到目标 env,再执行启动、升级或清理操作。
23
+
24
+ ```bash
25
+ nb env current
26
+ nb env use app1
27
+ ```
28
+
29
+ 如果你显式传入了不同的 `--env`,CLI 通常会要求确认。脚本或非交互场景里,可以加 `--yes` 跳过这一步。
30
+
31
+ :::
32
+
33
+ ## 启动应用
34
+
35
+ 把应用拉起来,默认用 `nb app start` 就行:
36
+
37
+ ```bash
38
+ nb app start
39
+ ```
40
+
41
+ 如果你要操作的不是当前 env,可以显式指定:
42
+
43
+ ```bash
44
+ nb app start --env app1 --yes
45
+ ```
46
+
47
+ 另外几个比较常用的启动参数:
48
+
49
+ ```bash
50
+ nb app start --no-daemon
51
+ ```
52
+
53
+ - `nb app start` 默认会先自动完成必要的安装或升级准备,再把服务拉起来
54
+ - `--no-daemon` 只在本地 env 下有明显意义——应用会以前台模式运行,方便你直接看控制台输出
55
+
56
+ 本地 npm/Git env 会启动本地应用进程,Docker env 会按已保存配置重建应用容器。详细参数见 [`nb app start`](../../api/cli/app/start.md)。
57
+
58
+ ## 停止和重启
59
+
60
+ 只想临时把应用停掉,用 `nb app stop`:
61
+
62
+ ```bash
63
+ nb app stop
64
+ ```
65
+
66
+ 如果你刚改完配置、依赖或代码,通常来说直接 `nb app restart` 更省事:
67
+
68
+ ```bash
69
+ nb app restart
70
+ nb app restart --env app1 --yes
71
+ ```
72
+
73
+ `nb app restart` 会先执行停止,再按 `start` 的方式重新启动,所以它也支持 `--no-daemon` 这类启动参数。详细用法见 [`nb app stop`](../../api/cli/app/stop.md) 和 [`nb app restart`](../../api/cli/app/restart.md)。
74
+
75
+ ## 查看日志
76
+
77
+ 排查问题时,通常先看日志:
78
+
79
+ ```bash
80
+ nb app logs
81
+ ```
82
+
83
+ 如果你只想多看一点最近输出,或者不想持续跟随日志,可以这样用:
84
+
85
+ ```bash
86
+ nb app logs --tail 200
87
+ nb app logs --no-follow
88
+ nb app logs --env app1 --yes
89
+ ```
90
+
91
+ 本地 npm/Git env 读取的是 pm2 日志,Docker env 读取的是容器日志。默认情况下,`nb app logs` 会持续跟随新日志输出。详细参数见 [`nb app logs`](../../api/cli/app/logs.md)。
92
+
93
+ ## 升级应用
94
+
95
+ 升级命令是 `nb app upgrade`:
96
+
97
+ ```bash
98
+ nb app upgrade
99
+ ```
100
+
101
+ 这个命令做的不只是“下载新版本”。默认流程通常包括:
102
+
103
+ 1. 停止当前应用
104
+ 2. 下载并替换已保存的源码或镜像
105
+ 3. 同步商业插件
106
+ 4. 升级并启动应用
107
+ 5. 刷新 env runtime 信息
108
+
109
+ 如果你已经提前更新好了源码或镜像,只想基于当前内容继续执行升级并启动应用,可以加 `--skip-download`:
110
+
111
+ ```bash
112
+ nb app upgrade --skip-download
113
+ ```
114
+
115
+ 如果你想显式指定目标版本,也可以加 `--version`:
116
+
117
+ ```bash
118
+ nb app upgrade --version beta
119
+ ```
120
+
121
+ :::warning 注意
122
+
123
+ `nb app upgrade` 在真正开始前通常还会要求你确认一次。脚本、CI 或其他非交互场景里,需要显式传入 `--force`。如果同时还是跨 env 操作,通常要一起带上 `--yes`。
124
+
125
+ ```bash
126
+ nb app upgrade --env app1 --yes --force
127
+ ```
128
+
129
+ :::
130
+
131
+ 更完整的参数说明见 [`nb app upgrade`](../../api/cli/app/upgrade.md)。
132
+
133
+ ## 清理运行资源和销毁 env
134
+
135
+ 这几种场景最容易混淆。可以先记住一个默认建议:
136
+
137
+ - 只是想把应用停掉,用 `nb app stop`
138
+ - 也想把当前机器上的内置数据库运行时一起停掉,用 `nb app stop --with-db`
139
+ - 确定这个 env 不再需要了,但想先保留 storage 和本地 app 文件,用 `nb env remove`
140
+ - 连本机托管资源也一起清理掉,再用 `nb env remove --purge`
141
+
142
+ 如果你只是想停掉应用和 CLI 托管的内置数据库,直接这样写就行:
143
+
144
+ ```bash
145
+ nb app stop --env app1 --with-db
146
+ ```
147
+
148
+ 如果你要移除这个 env,但还想保留 storage 和本地 app 文件:
149
+
150
+ ```bash
151
+ nb env remove app1 --force
152
+ ```
153
+
154
+ 如果你确实要把这个 env 的本机托管内容也一起清理掉,那么加上 `--purge`:
155
+
156
+ ```bash
157
+ nb env remove app1 --purge --force
158
+ ```
159
+
160
+ 对于 CLI 下载管理的本地 npm/Git env,`--purge` 还会删除 CLI 托管的本地应用文件。对于 HTTP 或 SSH env,它只会删除 CLI 里保存的 env 配置,不会去删除外部服务本身。
161
+
162
+ ## 相关链接
163
+
164
+ - [多环境管理](./multi-environment.md)
165
+ - [`nb app` 命令参考](../../api/cli/app/index.md)
166
+ - [`nb env` 命令参考](../../api/cli/env/index.md)
@@ -0,0 +1,171 @@
1
+ # 多环境管理
2
+
3
+ 如果你同时维护 `dev`、`test`、`staging`、`prod` 等多个 NocoBase 应用,可以把它们分别保存成 CLI env。之后大多数 `nb` 命令都会默认作用在当前 env 上,所以在执行 `nb app`、`nb api`、`nb db` 这类命令前,先确认自己正在用哪个 env 很重要。
4
+
5
+ CLI 从这一版开始把概念拆成了 `current env` 和 `last env`。你通常只需要关心 `current env`——也就是当前 shell 或 agent runtime 正在使用的环境。只有在没有开启 session mode 时,CLI 才会回退到全局 `last env`。
6
+
7
+ ## 快速索引
8
+
9
+ | 我想要…… | 用哪个命令 |
10
+ | --- | --- |
11
+ | 新建一个本地 env,并顺手完成初始化 | [`nb init`](../../api/cli/init.md) |
12
+ | 把一个已有应用登记成 CLI env | [`nb env add`](../../api/cli/env/add.md) |
13
+ | 看本地保存了哪些 env | [`nb env list`](../../api/cli/env/list.md) |
14
+ | 检查所有 env 的连通性和认证状态 | [`nb env status --all`](../../api/cli/env/status.md) |
15
+ | 切换后续命令要使用的 env | [`nb env use`](../../api/cli/env/use.md) |
16
+ | 确认当前命令会落到哪个 env | [`nb env current`](../../api/cli/env/current.md) 和 [`nb env status`](../../api/cli/env/status.md) |
17
+ | 查看某个 env 保存了哪些详细配置 | [`nb env info`](../../api/cli/env/info.md) |
18
+ | 更新已保存的 env 配置,必要时让 CLI 重新同步当前状态 | [`nb env update`](../../api/cli/env/update.md) |
19
+ | 登录态过期后重新认证,或者改用新的认证方式 | [`nb env auth`](../../api/cli/env/auth.md) |
20
+ | 删除不用的 env 配置,必要时连本机托管资源一起清理 | [`nb env remove`](../../api/cli/env/remove.md) |
21
+
22
+ :::tip 建议先开启 session mode
23
+
24
+ 默认推荐先执行一次 [`nb session setup`](../../api/cli/session/setup.md)。这样不同终端、不同 shell,或者不同 agent runtime 可以各自维护自己的 `current env`,并行操作时不容易互相影响。
25
+
26
+ 如果没有开启 session mode,那么 `nb env use` 会回退到更新全局 `last env`。这种情况下,一个终端切走环境,另一个终端也可能跟着受影响。
27
+
28
+ ```bash
29
+ nb session setup
30
+ ```
31
+
32
+ :::
33
+
34
+ ## 创建多个环境
35
+
36
+ 如果你要新建或恢复一个本地应用,用 `nb init` 就行。它会完成初始化,并把结果保存成一个新的 CLI env。
37
+
38
+ ```bash
39
+ nb init --env dev
40
+ nb init --env test
41
+ ```
42
+
43
+ 如果应用已经存在,只是想把它接入 CLI,通常来说用 `nb env add` 更直接:
44
+
45
+ ```bash
46
+ nb env add staging --api-base-url http://staging.example.com/api --auth-type oauth
47
+ nb env add prod --api-base-url https://api.example.com/api --auth-type token --access-token <token>
48
+ ```
49
+
50
+ 前者偏“初始化一个环境”,后者偏“登记一个已有环境”。如果你只是连接已有应用,默认用 `nb env add` 就行。
51
+
52
+ ## 查看已经配置的环境
53
+
54
+ 先用 `nb env list` 看看本地已经保存了哪些 env:
55
+
56
+ ```bash
57
+ nb env list
58
+ ```
59
+
60
+ 这个命令只展示配置本身,不主动检查应用状态。想同时看连通性和认证状态时,用 `nb env status --all`:
61
+
62
+ ```bash
63
+ nb env status --all
64
+ ```
65
+
66
+ 你通常会看到 `ok`、`auth failed`、`unreachable` 这类状态值。
67
+
68
+ ## 切换当前环境
69
+
70
+ 切换环境用 `nb env use`:
71
+
72
+ ```bash
73
+ nb env use dev
74
+ ```
75
+
76
+ 切换完成后,后续省略 `--env` 的命令都会默认使用这个 env。
77
+
78
+ ## 查看当前环境
79
+
80
+ 如果你不确定当前命令会落到哪个环境上,先执行这两个命令:
81
+
82
+ ```bash
83
+ nb env current
84
+ nb env status
85
+ ```
86
+
87
+ `nb env current` 用来看名称,`nb env status` 用来看当前 env 是否可访问、认证是否正常。
88
+
89
+ ## 查看单个 env 的详细信息
90
+
91
+ 想看某个 env 保存了哪些配置,用 `nb env info`:
92
+
93
+ ```bash
94
+ nb env info dev
95
+ nb env info dev --json
96
+ nb env info dev --field app.url
97
+ nb env info dev --show-secrets
98
+ ```
99
+
100
+ 其中,`--field` 适合在脚本里只取一个值。`--show-secrets` 会明文显示 token、密码这类敏感信息,只有在你明确需要排查时再用。
101
+
102
+ ## 更新 env 配置
103
+
104
+ `nb env update` 用来调整一个已保存 env 的配置。比如 API 地址、认证方式、源码来源、应用端口和数据库参数。更新完成后,CLI 会根据变更自动处理后续事宜。
105
+
106
+ 如果你只是想让 CLI 按当前 env 的最新状态重新同步,直接这样写就行:
107
+
108
+ ```bash
109
+ nb env update
110
+ nb env update prod
111
+ ```
112
+
113
+ 如果你要修改这个 env 保存的连接信息或本地配置,可以显式带上参数:
114
+
115
+ ```bash
116
+ nb env update prod --api-base-url https://api.example.com/api
117
+ nb env update prod --access-token <token>
118
+ nb env update dev --app-port 13080 --timezone Asia/Shanghai
119
+ ```
120
+
121
+ 这里可以先记住一个默认判断:
122
+
123
+ - 要修改 env 保存的连接信息或本地配置,用 `nb env update`
124
+ - 应用接口、插件或 CLI 可用能力刚发生变化,也可以再执行一次 `nb env update`
125
+ - 登录态过期了,或者要重新走一遍认证流程,用 `nb env auth`
126
+ - 只是想看当前保存了什么,用 `nb env info`
127
+
128
+ 如果你改的是 `app-port`、`timezone`、`db-*` 这类本地运行配置,`update` 只会改保存值,不会自动重启应用。通常来说后续还要再执行 `nb app restart --env <name>`;如果变更涉及 CLI 托管的内置数据库,则用 `nb app restart --env <name> --with-db`。
129
+
130
+ ## 重新认证
131
+
132
+ 如果 env 已经保存,只是登录态过期了,或者你想切换认证方式,可以重新认证:
133
+
134
+ ```bash
135
+ nb env auth
136
+ nb env auth prod
137
+ nb env auth prod --auth-type oauth
138
+ nb env auth prod --auth-type basic --username admin --password secret
139
+ nb env auth prod --auth-type token --access-token <api-key>
140
+ ```
141
+
142
+ 省略环境名时,CLI 会使用当前 env。认证完成后,CLI 会自动处理后续同步。
143
+
144
+ ## 移除环境
145
+
146
+ 如果你只想移除保存的 env 配置:
147
+
148
+ ```bash
149
+ nb env remove staging
150
+ ```
151
+
152
+ 如果是本地或 Docker 托管的 env,并且你还想一起清理本机上的运行资源和 storage 数据,可以加上 `--purge`:
153
+
154
+ ```bash
155
+ nb env remove test --purge
156
+ ```
157
+
158
+ 在非交互模式下,`nb env remove` 需要显式传入 `--force`:
159
+
160
+ ```bash
161
+ nb env remove test --purge --force
162
+ ```
163
+
164
+ `--purge` 只会清理当前机器上的 CLI 托管资源。对于远程 API env,它不会去删除远端服务本身。
165
+
166
+ ## 相关链接
167
+
168
+ - [`nb env` 命令参考](../../api/cli/env/index.md)
169
+ - [`nb env update`](../../api/cli/env/update.md)
170
+ - [`nb session` 命令参考](../../api/cli/session/index.md)
171
+ - [管理应用](./manage-app.md)
@@ -0,0 +1,86 @@
1
+ # 第三方插件安装与升级
2
+
3
+ 如果你拿到的是第三方插件包,通常来说先把它导入目标应用的 `storage/plugins`,然后先重启应用,再继续启用或验证插件是否生效。
4
+
5
+ ## 快速索引
6
+
7
+ | 我想要…… | 去哪里看 |
8
+ | --- | --- |
9
+ | 先切到目标 env,再开始导入或重启插件 | [先确认目标环境](#先确认目标环境) |
10
+ | 从远程压缩包、本地压缩包或 npm 导入第三方插件 | [用 `nb plugin import` 导入插件包](#用-nb-plugin-import-导入插件包) |
11
+ | 导入完成后让应用重新加载插件目录 | [`nb app restart`](../../api/cli/app/restart.md) |
12
+ | 第一次安装后正式启用插件 | [`nb plugin enable`](../../api/cli/plugin/enable.md) |
13
+ | 想确认插件是否已经出现在当前应用里 | [`nb plugin list`](../../api/cli/plugin/list.md) |
14
+ | 目标机器不能直接联网,只能手动上传 `.tgz` 再导入 | [不能直接联网时](#不能直接联网时) |
15
+
16
+ ## 先确认目标环境
17
+
18
+ 如果你本地管理了多个应用,先切到目标 env 再操作:
19
+
20
+ ```bash
21
+ nb env use app1
22
+ ```
23
+
24
+ ## 用 `nb plugin import` 导入插件包
25
+
26
+ `nb plugin import` 支持三类来源:远程压缩包、本地压缩包、npm 包名。这个命令只负责把插件导入 `storage/plugins`,不会自动启用插件。
27
+
28
+ 如果你已经拿到了插件包下载地址、本地文件路径,或者插件已经发布到 npm,可以执行:
29
+
30
+ ```bash
31
+ # 远程压缩包
32
+ nb plugin import https://github.com/nocobase/plugin-auth-cas/releases/download/v1.4.0/plugin-auth-cas-1.4.0.tgz
33
+
34
+ # 本地压缩包
35
+ nb plugin import /your/path/plugin-auth-cas-1.4.0.tgz
36
+
37
+ # npm 包名或 tag
38
+ nb plugin import @my-scope/plugin-auth-cas@beta
39
+ ```
40
+
41
+ 如果你用的是私有 npm 源,通常来说先登录,再指定 registry:
42
+
43
+ ```bash
44
+ npm login --registry=https://registry.example.com
45
+ nb plugin import @my-scope/plugin-auth-cas@beta --npm-registry=https://registry.example.com
46
+ ```
47
+
48
+ ## 导入之后先重启
49
+
50
+ 导入完成后,先重启目标应用:
51
+
52
+ ```bash
53
+ nb app restart
54
+ ```
55
+
56
+ 如果你没有先切换当前 env,也可以在命令里显式传入 `-e <env>`。
57
+
58
+ ## 重启之后再启用或验证
59
+
60
+ 如果这是第一次安装,重启后再启用插件:
61
+
62
+ ```bash
63
+ nb plugin enable @nocobase/plugin-auth-cas
64
+ ```
65
+
66
+ 第一次启用时会自动完成安装。
67
+
68
+ 如果插件已经启用,而你这次只是更新压缩包或重新导入一个新版本,通常来说重启完成后就可以继续验证插件是否正常工作,不需要再用 `upgrade` 的做法。
69
+
70
+
71
+ ## 不能直接联网时
72
+
73
+ 如果目标机器不能直接访问插件下载地址,可以先把 `.tgz` 文件上传到目标机器的任意目录,再在目标机器执行本地导入。
74
+
75
+ 比如:
76
+
77
+ ```bash
78
+ nb plugin import /your/path/plugin-auth-cas-1.4.0.tgz
79
+ nb app restart
80
+ ```
81
+
82
+ :::warning 注意
83
+
84
+ 这里不需要手动解压到 `storage/plugins`。`nb plugin import` 会自动把插件放到正确目录。
85
+
86
+ :::