@nocobase/plugin-ai 2.1.0-alpha.46 → 2.1.0-alpha.47
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.
- package/dist/ai/docs/nocobase/ai/install-upgrade-migration.mdx +127 -132
- package/dist/ai/docs/nocobase/api/cli/app/autostart/disable.md +44 -0
- package/dist/ai/docs/nocobase/api/cli/app/autostart/enable.md +44 -0
- package/dist/ai/docs/nocobase/api/cli/app/autostart/index.md +63 -0
- package/dist/ai/docs/nocobase/api/cli/app/autostart/list.md +41 -0
- package/dist/ai/docs/nocobase/api/cli/app/autostart/run.md +50 -0
- package/dist/ai/docs/nocobase/api/cli/app/index.md +18 -15
- package/dist/ai/docs/nocobase/api/cli/app/restart.md +3 -11
- package/dist/ai/docs/nocobase/api/cli/app/start.md +3 -11
- package/dist/ai/docs/nocobase/api/cli/app/stop.md +22 -12
- package/dist/ai/docs/nocobase/api/cli/app/upgrade.md +6 -6
- package/dist/ai/docs/nocobase/api/cli/backup/create.md +49 -0
- package/dist/ai/docs/nocobase/api/cli/backup/index.md +46 -0
- package/dist/ai/docs/nocobase/api/cli/backup/restore.md +46 -0
- package/dist/ai/docs/nocobase/api/cli/config/delete.md +11 -9
- package/dist/ai/docs/nocobase/api/cli/config/get.md +11 -8
- package/dist/ai/docs/nocobase/api/cli/config/index.md +28 -24
- package/dist/ai/docs/nocobase/api/cli/config/set.md +14 -12
- package/dist/ai/docs/nocobase/api/cli/db/stop.md +10 -11
- package/dist/ai/docs/nocobase/api/cli/env/index.md +25 -23
- package/dist/ai/docs/nocobase/api/cli/env/info.md +12 -10
- package/dist/ai/docs/nocobase/api/cli/env/proxy/caddy.md +108 -0
- package/dist/ai/docs/nocobase/api/cli/env/proxy/index.md +54 -0
- package/dist/ai/docs/nocobase/api/cli/env/proxy/nginx.md +104 -0
- package/dist/ai/docs/nocobase/api/cli/env/remove.md +18 -14
- package/dist/ai/docs/nocobase/api/cli/env/update.md +115 -14
- package/dist/ai/docs/nocobase/api/cli/index.md +66 -52
- package/dist/ai/docs/nocobase/api/cli/init.md +244 -62
- package/dist/ai/docs/nocobase/api/cli/license/activate.md +13 -12
- package/dist/ai/docs/nocobase/api/cli/license/index.md +2 -2
- package/dist/ai/docs/nocobase/api/cli/plugin/import.md +74 -0
- package/dist/ai/docs/nocobase/api/cli/plugin/index.md +4 -2
- package/dist/ai/docs/nocobase/get-started/install-upgrade-plugins.mdx +16 -10
- package/dist/ai/docs/nocobase/index.md +3 -3
- package/dist/ai/docs/nocobase/quickstart/index.md +27 -0
- package/dist/ai/docs/nocobase/quickstart/installation/airgap.md +67 -0
- package/dist/ai/docs/nocobase/quickstart/installation/cli.md +205 -0
- package/dist/ai/docs/nocobase/quickstart/installation/docker-compose.md +123 -0
- package/dist/ai/docs/nocobase/quickstart/installation/env.md +101 -0
- package/dist/ai/docs/nocobase/quickstart/installation/migration.md +50 -0
- package/dist/ai/docs/nocobase/quickstart/operations/backup-restore.md +94 -0
- package/dist/ai/docs/nocobase/quickstart/operations/manage-app.md +166 -0
- package/dist/ai/docs/nocobase/quickstart/operations/multi-environment.md +171 -0
- package/dist/ai/docs/nocobase/quickstart/plugins/third-party.md +86 -0
- package/dist/ai/docs/nocobase/quickstart/production/index.md +163 -0
- package/dist/ai/docs/nocobase/quickstart/production/reverse-proxy/caddy.md +158 -0
- package/dist/ai/docs/nocobase/quickstart/production/reverse-proxy/index.md +100 -0
- package/dist/ai/docs/nocobase/quickstart/production/reverse-proxy/nginx.md +166 -0
- package/dist/ai/docs/nocobase/quickstart/release-management.md +1 -0
- package/dist/ai/docs/nocobase/workflow/advanced/options.md +45 -1
- package/dist/externalVersion.js +16 -16
- package/dist/node_modules/@langchain/xai/package.json +1 -1
- package/dist/node_modules/fs-extra/package.json +1 -1
- package/dist/node_modules/jsonrepair/package.json +1 -1
- package/dist/node_modules/just-bash/package.json +1 -1
- package/dist/node_modules/nodejs-snowflake/package.json +1 -1
- package/dist/node_modules/openai/package.json +1 -1
- package/dist/node_modules/zod/package.json +1 -1
- package/dist/server/workflow/nodes/employee/index.js +2 -4
- package/package.json +2 -2
- package/dist/ai/docs/nocobase/api/cli/app/down.md +0 -41
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# 快速开始
|
|
2
|
+
|
|
3
|
+
NocoBase 的快速开始主要解决三件事:先把应用装起来,再把插件装起来,最后把应用稳定地跑起来。你不需要一次把所有文档都看完,按你当前所在的阶段往下走就够了。
|
|
4
|
+
|
|
5
|
+
如果你还没决定用哪种方式安装,默认先看 [使用 CLI 安装(推荐)](./installation/cli.md)。如果你更习惯直接在服务器上用容器跑起来,继续看 [通过 Docker Compose 安装](./installation/docker-compose.md)。
|
|
6
|
+
|
|
7
|
+
## 快速索引
|
|
8
|
+
|
|
9
|
+
| 我想要…… | 去哪里看 |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| 直接安装一个新的 NocoBase 应用 | [使用 CLI 安装(推荐)](./installation/cli.md) |
|
|
12
|
+
| 把旧的安装方式逐步迁移到 CLI | [从旧方式迁移到 CLI](./installation/migration.md) |
|
|
13
|
+
| 用 Docker Compose 在服务器上部署 | [通过 Docker Compose 安装](./installation/docker-compose.md) |
|
|
14
|
+
| 在无法访问公网的环境里安装 | [内网安装](./installation/airgap.md) |
|
|
15
|
+
| 先确认应用运行需要的关键环境变量 | [应用环境变量](./installation/env.md) |
|
|
16
|
+
| 激活商业插件或安装第三方插件 | [商业插件激活与升级](../api/cli/license/index.md) / [第三方插件安装与升级](./plugins/third-party.md) |
|
|
17
|
+
| 给生产环境加上反向代理 | [Nginx](./production/reverse-proxy/nginx.md) / [Caddy](./production/reverse-proxy/caddy.md) |
|
|
18
|
+
| 查看应用、切换环境、备份还原 | [管理应用](./operations/manage-app.md) / [多环境管理](./operations/multi-environment.md) / [备份还原](./operations/backup-restore.md) |
|
|
19
|
+
|
|
20
|
+
## 默认路径
|
|
21
|
+
|
|
22
|
+
如果你不确定该怎么选,通常来说按下面这条路径走最省心:
|
|
23
|
+
|
|
24
|
+
1. 先看 [使用 CLI 安装(推荐)](./installation/cli.md)。
|
|
25
|
+
2. 应用跑起来后,再确认 [应用环境变量](./installation/env.md)。
|
|
26
|
+
3. 如果要正式上线,再补上 [Nginx](./production/reverse-proxy/nginx.md) 或 [Caddy](./production/reverse-proxy/caddy.md)。
|
|
27
|
+
4. 后续日常维护时,再看 [管理应用](./operations/manage-app.md) 和 [备份还原](./operations/backup-restore.md)。
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# 内网安装
|
|
2
|
+
|
|
3
|
+
如果你的服务器无法访问公网,安装方式就要提前准备好离线所需的镜像、依赖和插件包。默认推荐先用 Docker 方式,路径最短,也最容易复现。
|
|
4
|
+
|
|
5
|
+
## 默认推荐:离线准备 Docker 镜像
|
|
6
|
+
|
|
7
|
+
在一台可以访问公网的机器上,先把应用镜像和数据库镜像拉下来:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
docker pull registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:latest-full
|
|
11
|
+
docker pull registry.cn-shanghai.aliyuncs.com/nocobase/postgres:16
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
然后导出为离线文件:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
docker save -o nocobase-app.tar \
|
|
18
|
+
registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:latest-full
|
|
19
|
+
|
|
20
|
+
docker save -o nocobase-postgres.tar \
|
|
21
|
+
registry.cn-shanghai.aliyuncs.com/nocobase/postgres:16
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
如果你还需要商业插件,也建议在外网环境先准备好插件包,再一起带入内网。
|
|
25
|
+
|
|
26
|
+
## 把文件拷贝到内网服务器
|
|
27
|
+
|
|
28
|
+
至少准备这些文件:
|
|
29
|
+
|
|
30
|
+
- `nocobase-app.tar`
|
|
31
|
+
- `nocobase-postgres.tar`
|
|
32
|
+
- `docker-compose.yml`
|
|
33
|
+
- `.env` 或你自己的部署说明
|
|
34
|
+
|
|
35
|
+
## 在内网服务器导入镜像
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
docker load -i nocobase-app.tar
|
|
39
|
+
docker load -i nocobase-postgres.tar
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 启动应用
|
|
43
|
+
|
|
44
|
+
准备好 `docker-compose.yml` 后,直接启动:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
docker compose up -d
|
|
48
|
+
docker compose logs -f app
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
如果你还没写 compose 文件,先看 [通过 Docker Compose 安装](./docker-compose.md),把里面的示例保存到本地即可。
|
|
52
|
+
|
|
53
|
+
## 不能使用 Docker 怎么办
|
|
54
|
+
|
|
55
|
+
如果你的内网环境不能使用 Docker,也可以在外网环境先用 `create-nocobase-app` 创建完整项目、安装依赖并打包,再把整个项目拷贝到内网服务器。
|
|
56
|
+
|
|
57
|
+
这条路径会更长,不过在没有容器能力的环境里更实用。整体流程通常是:
|
|
58
|
+
|
|
59
|
+
1. 在外网环境创建项目并安装依赖。
|
|
60
|
+
2. 把项目目录打包。
|
|
61
|
+
3. 拷贝到内网服务器。
|
|
62
|
+
4. 在内网解压、补齐 `.env` 后启动应用。
|
|
63
|
+
|
|
64
|
+
## 下一步去哪里看
|
|
65
|
+
|
|
66
|
+
- 如果你还没确认应用配置,继续看 [应用环境变量](./env.md)
|
|
67
|
+
- 如果你准备把应用正式开放给业务用户,继续看 [Nginx](../production/reverse-proxy/nginx.md) 或 [Caddy](../production/reverse-proxy/caddy.md)
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# 使用 CLI 安装(推荐)
|
|
2
|
+
|
|
3
|
+
NocoBase 2.1.0 之后,官方提供了基于 CLI 的安装和管理方式。你可以用它完成安装、连接、升级和日常维护,也可以顺手给 AI Agent 准备一个可连接、可操作的环境。
|
|
4
|
+
|
|
5
|
+
## 安装 NocoBase CLI
|
|
6
|
+
|
|
7
|
+
仅在第一次安装 CLI 时执行。
|
|
8
|
+
|
|
9
|
+
先全局安装 CLI:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g @nocobase/cli@beta
|
|
13
|
+
nb --version
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
:::tip 建议先开启 session mode
|
|
17
|
+
|
|
18
|
+
如果你会同时开多个终端、多个 shell,或者要让 AI Agent 和你自己并行操作,默认推荐先执行一次 [`nb session setup`](../../api/cli/session/setup.md)。这样每个会话都能维护自己的 `current env`,不容易互相影响。
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
nb session setup
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
:::
|
|
25
|
+
|
|
26
|
+
如果你打算长期用中文界面,通常来说先把 locale 设好就够了:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
nb config set locale zh-CN
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
CLI 默认会检查自更新。你可以按自己的习惯调整更新策略:
|
|
33
|
+
|
|
34
|
+
- `prompt`:发现新版本时提示
|
|
35
|
+
- `auto`:自动更新
|
|
36
|
+
- `off`:关闭自动更新
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
nb config set update.policy prompt
|
|
40
|
+
nb config set update.policy auto
|
|
41
|
+
nb config set update.policy off
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
如果你准备把 NocoBase 部署到服务器上,并且希望从远程浏览器打开 `nb init --ui` 向导,建议先把 CLI 的默认 host 改成当前服务器 IP:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
nb config set default-ui-host <server-ip>
|
|
48
|
+
nb config set default-api-host <server-ip>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
将 `<server-ip>` 替换为当前服务器对你可访问的实际 IP。
|
|
52
|
+
|
|
53
|
+
`nb config` 是 CLI 的全局配置。通常只需要设置一次,后续再次运行 `nb init --ui` 时会自动沿用这些默认值,不需要每次重复配置。
|
|
54
|
+
|
|
55
|
+
通常来说:
|
|
56
|
+
|
|
57
|
+
- `default-ui-host` 用于 `nb init --ui` 启动向导页面时的默认监听地址
|
|
58
|
+
- `default-api-host` 用于新安装时默认生成的 API 地址
|
|
59
|
+
|
|
60
|
+
如果是在服务器上部署,这两个值通常都应该改成当前服务器可访问的 IP,而不是继续使用默认的本机地址。
|
|
61
|
+
|
|
62
|
+
:::warning 这只是安装向导或临时访问方式,不是生产环境推荐入口
|
|
63
|
+
|
|
64
|
+
把 `default-ui-host` / `default-api-host` 设成服务器 IP,主要是为了让你能从远程浏览器打开 `nb init --ui`,或者在安装完成后临时验证服务是否可访问。
|
|
65
|
+
|
|
66
|
+
这不代表生产环境应该长期使用 `IP + port` 对外提供服务。正式部署时,仍然推荐使用域名,并通过 Nginx 或 Caddy 这类反向代理统一接入,再启用 HTTPS。
|
|
67
|
+
|
|
68
|
+
:::
|
|
69
|
+
|
|
70
|
+
## 安装 NocoBase
|
|
71
|
+
|
|
72
|
+
### 方式一:通过 UI 向导安装
|
|
73
|
+
|
|
74
|
+
这是默认推荐的入口。你只需要运行:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
nb init --ui
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
如果你想给向导页面指定一个固定端口,可以直接加上 `--ui-port`,例如:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
nb init --ui --ui-port 3000
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+

|
|
87
|
+
|
|
88
|
+
向导会根据当前场景,带你一步一步完成安装或连接所需的配置。
|
|
89
|
+
|
|
90
|
+
### 方式二:通过终端交互
|
|
91
|
+
|
|
92
|
+
如果你更习惯在终端里一步一步输入,可以直接运行:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
nb init
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+

|
|
99
|
+
|
|
100
|
+
### 方式三:通过非交互命令
|
|
101
|
+
|
|
102
|
+
如果你在脚本、CI/CD 或其他非交互环境里运行,直接用 `--yes` 就行。这个模式下必须显式传 `--env`,没有显式指定的参数会按默认值处理。
|
|
103
|
+
|
|
104
|
+
最短的默认写法是:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
nb init --yes --env app1
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
具体到不同安装来源、版本选择、`basic` 认证、CI/CD 连接已有应用,以及数据库命名这类常见组合,直接看 [`nb init` 命令参考的示例](../../api/cli/init.md#示例) 就行。
|
|
111
|
+
|
|
112
|
+
## 安装完成后先确认什么
|
|
113
|
+
|
|
114
|
+
`--env` 是 CLI 里的环境名。通常来说,安装完成后你接下来做的事都围绕这个 env 展开。
|
|
115
|
+
|
|
116
|
+
通常建议先确认这 3 件事:
|
|
117
|
+
|
|
118
|
+
1. env 是否已经创建并保存成功
|
|
119
|
+
2. 应用是否可以正常启动、日志是否正常
|
|
120
|
+
3. 如果准备正式对外开放,是否已经规划好生产环境入口,而不是继续直接使用 `IP + port`
|
|
121
|
+
|
|
122
|
+
### 安装目录
|
|
123
|
+
|
|
124
|
+
如果你刚用 `nb init --env app1` 新装了一个本地应用,可以通过 `nb env info app1 --field app.appPath` 查看完整路径。
|
|
125
|
+
|
|
126
|
+
默认情况下,CLI 会在 `app-path` 下按下面这套约定组织本地文件:
|
|
127
|
+
|
|
128
|
+
```text
|
|
129
|
+
<app-path>/
|
|
130
|
+
├── source/ # 应用源码或下载内容对应的默认目录
|
|
131
|
+
├── storage/ # 运行时数据目录
|
|
132
|
+
└── .env # 可选的应用环境变量文件
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
通常来说:
|
|
136
|
+
|
|
137
|
+
- `source/` 主要对应 npm / Git env 的本地应用目录。对于 Docker env,CLI 也会保留这套默认路径推导,不过大多数时候你不需要手动关心它
|
|
138
|
+
- `storage/` 用来放运行时数据,比如内置数据库数据、插件、日志等内容
|
|
139
|
+
- `.env` 是可选的应用环境变量文件。只有当你需要自定义环境变量时,才需要在 `<app-path>/.env` 里添加它;如果这个文件存在,Docker、npm 和 Git 这几种安装来源默认都会读取它
|
|
140
|
+
|
|
141
|
+
更完整的说明见 [`nb init` 命令参考](../../api/cli/init.md)。
|
|
142
|
+
|
|
143
|
+
### 生产环境部署提醒
|
|
144
|
+
|
|
145
|
+
如果你现在只是刚装完,想先验证安装结果,那么用 `IP + port` 打开页面通常没有问题。
|
|
146
|
+
|
|
147
|
+
但如果这个 env 接下来要正式对外提供服务,需要特别注意:
|
|
148
|
+
|
|
149
|
+
- `nb init --ui` 本身只是安装向导的临时页面,用来完成安装或初始化,不是应用正式对外服务入口
|
|
150
|
+
- 通过 `nb init` 安装完成后,应用当前暴露出来的 `IP + port` 更适合调试阶段、验证阶段或内网临时访问
|
|
151
|
+
- 生产环境不建议直接把 NocoBase 应用端口暴露给公网长期使用
|
|
152
|
+
- 正式对外访问时,推荐使用域名,并通过 Nginx 或 Caddy 反向代理到 NocoBase
|
|
153
|
+
- 生产环境应优先启用 HTTPS,而不是长期使用裸露的 `http://IP:port`
|
|
154
|
+
|
|
155
|
+
也就是说,`default-ui-host` 和 `default-api-host` 只是为了让安装向导和默认地址生成更方便,并不代表最终生产环境的访问入口。
|
|
156
|
+
|
|
157
|
+
如果这个 env 准备正式上线,建议把“接入反向代理并启用 HTTPS”视为安装完成后的下一步,而不是可选优化项。
|
|
158
|
+
|
|
159
|
+
如果你现在就准备继续做正式部署,建议先从 [生产环境部署](../production/index.md) 开始,再按需要继续看 [Nginx](../production/reverse-proxy/nginx.md) 或 [Caddy](../production/reverse-proxy/caddy.md) 的反向代理配置。
|
|
160
|
+
|
|
161
|
+
### 日常操作
|
|
162
|
+
|
|
163
|
+
你可以先确认这个 env 是否已经保存成功:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
nb env current
|
|
167
|
+
nb env list
|
|
168
|
+
nb env status
|
|
169
|
+
nb env info app1
|
|
170
|
+
nb env info app1 --json
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
如果你想继续做安装后的后续操作,可以按下面这个索引往下看:
|
|
174
|
+
|
|
175
|
+
| 我想要…… | 去哪里看 |
|
|
176
|
+
| --- | --- |
|
|
177
|
+
| 如果你准备把这个 env 正式对外开放,给它接上生产环境反向代理,并使用域名和 HTTPS 暴露服务。 | [Nginx](../production/reverse-proxy/nginx.md) / [Caddy](../production/reverse-proxy/caddy.md)。 |
|
|
178
|
+
| 确认 env 是否保存成功、查看当前用了哪个 env、在多个 env 之间切换。 | [`nb env`](../../api/cli/env/index.md)、[多环境管理](../operations/multi-environment.md)。 |
|
|
179
|
+
| 启动、停止、重启应用,查看日志,或者继续升级应用。 | [`nb app`](../../api/cli/app/index.md)、[管理应用](../operations/manage-app.md)。 |
|
|
180
|
+
| 检查数据库连接、查看内置数据库状态,或者排查数据库容器问题。 | [`nb db`](../../api/cli/db/index.md)。 |
|
|
181
|
+
| 查看已安装插件,启用或停用插件。 | [`nb plugin`](../../api/cli/plugin/index.md)。 |
|
|
182
|
+
| 激活商业授权、查看授权状态、同步商业插件。 | [`nb license`](../../api/cli/license/index.md)。 |
|
|
183
|
+
| 管理本地源码工程,比如下载源码、启动开发模式、构建或测试。这个通常用于 npm / Git env。 | [`nb source`](../../api/cli/source/index.md)。 |
|
|
184
|
+
|
|
185
|
+
如果你刚装完一个本地应用,通常可以先跑这几条命令:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
nb env use app1
|
|
189
|
+
nb app start
|
|
190
|
+
nb app logs
|
|
191
|
+
nb plugin list
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
如果你同时维护多个 env,后续切换和查看状态的方式见 [多环境管理](../operations/multi-environment.md)。
|
|
195
|
+
|
|
196
|
+
如果你后续要升级应用,直接看 [管理应用](../operations/manage-app.md) 和 [`nb app upgrade` 命令参考](../../api/cli/app/upgrade.md) 就行。
|
|
197
|
+
|
|
198
|
+
## 相关链接
|
|
199
|
+
|
|
200
|
+
- [`nb init` 命令参考](../../api/cli/init.md)
|
|
201
|
+
- [`nb env info` 命令参考](../../api/cli/env/info.md)
|
|
202
|
+
- [生产环境反向代理:Nginx](../production/reverse-proxy/nginx.md) / [Caddy](../production/reverse-proxy/caddy.md)
|
|
203
|
+
- [从旧方式迁移到 CLI](./migration.md)
|
|
204
|
+
- [多环境管理](../operations/multi-environment.md)
|
|
205
|
+
- [管理应用](../operations/manage-app.md)
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# 通过 Docker Compose 安装
|
|
2
|
+
|
|
3
|
+
如果你希望直接在服务器上把 NocoBase 跑起来,`docker compose` 仍然是最直接的方式。大部分场景用一份 `docker-compose.yml` 就够了。
|
|
4
|
+
|
|
5
|
+
不过生产环境里,建议固定具体版本号,不要长期直接使用 `latest`。这样升级时更可控。
|
|
6
|
+
|
|
7
|
+
## 前提条件
|
|
8
|
+
|
|
9
|
+
- 已安装 Docker 和 Docker Compose
|
|
10
|
+
- 确保 Docker 服务已经启动
|
|
11
|
+
- 已准备好一个要对外开放的端口,比如 `13000`
|
|
12
|
+
|
|
13
|
+
## 第一步:创建项目目录
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
mkdir my-nocobase-app
|
|
17
|
+
cd my-nocobase-app
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 第二步:创建 `docker-compose.yml`
|
|
21
|
+
|
|
22
|
+
下面这个示例使用 PostgreSQL,也是默认最省心的一种组合:
|
|
23
|
+
|
|
24
|
+
```yml
|
|
25
|
+
networks:
|
|
26
|
+
nocobase:
|
|
27
|
+
driver: bridge
|
|
28
|
+
|
|
29
|
+
services:
|
|
30
|
+
app:
|
|
31
|
+
image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:latest-full
|
|
32
|
+
restart: always
|
|
33
|
+
networks:
|
|
34
|
+
- nocobase
|
|
35
|
+
depends_on:
|
|
36
|
+
- postgres
|
|
37
|
+
environment:
|
|
38
|
+
- APP_KEY=replace-with-your-secret-key
|
|
39
|
+
- DB_DIALECT=postgres
|
|
40
|
+
- DB_HOST=postgres
|
|
41
|
+
- DB_PORT=5432
|
|
42
|
+
- DB_DATABASE=nocobase
|
|
43
|
+
- DB_USER=nocobase
|
|
44
|
+
- DB_PASSWORD=nocobase
|
|
45
|
+
- TZ=Asia/Shanghai
|
|
46
|
+
volumes:
|
|
47
|
+
- ./storage:/app/nocobase/storage
|
|
48
|
+
ports:
|
|
49
|
+
- '13000:80'
|
|
50
|
+
|
|
51
|
+
postgres:
|
|
52
|
+
image: registry.cn-shanghai.aliyuncs.com/nocobase/postgres:16
|
|
53
|
+
restart: always
|
|
54
|
+
command: postgres -c wal_level=logical
|
|
55
|
+
environment:
|
|
56
|
+
POSTGRES_USER: nocobase
|
|
57
|
+
POSTGRES_DB: nocobase
|
|
58
|
+
POSTGRES_PASSWORD: nocobase
|
|
59
|
+
volumes:
|
|
60
|
+
- ./storage/db/postgres:/var/lib/postgresql/data
|
|
61
|
+
networks:
|
|
62
|
+
- nocobase
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
其中:
|
|
66
|
+
|
|
67
|
+
- `APP_KEY` 记得改成你自己的随机字符串
|
|
68
|
+
- `13000:80` 代表把主机的 `13000` 端口映射到容器的 `80` 端口
|
|
69
|
+
- 如果你已经有数据库服务,可以删掉 `postgres` 这一段,并把 `DB_HOST` 改成现有数据库地址
|
|
70
|
+
|
|
71
|
+
如果你使用 MySQL 或 MariaDB,记得把 `DB_DIALECT` 改成对应类型,并补上:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
DB_UNDERSCORED=true
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 第三步:启动应用
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
docker compose up -d
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
查看日志:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
docker compose logs -f app
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 第四步:访问应用
|
|
90
|
+
|
|
91
|
+
应用启动完成后,打开:
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
http://<服务器IP>:13000
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
如果是第一次启动,按页面提示初始化管理员账号即可。
|
|
98
|
+
|
|
99
|
+
## 常用命令
|
|
100
|
+
|
|
101
|
+
启动或更新容器:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
docker compose up -d
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
停止应用:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
docker compose down
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
查看日志:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
docker compose logs -f app
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## 下一步去哪里看
|
|
120
|
+
|
|
121
|
+
- 如果你要调整密钥、端口、数据库等配置,继续看 [应用环境变量](./env.md)
|
|
122
|
+
- 如果你准备正式上线,继续看 [Nginx](../production/reverse-proxy/nginx.md) 或 [Caddy](../production/reverse-proxy/caddy.md)
|
|
123
|
+
- 如果你后续要备份数据,继续看 [备份还原](../operations/backup-restore.md)
|
|
@@ -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)
|