@nocobase/plugin-ai 2.1.0-beta.46 → 2.1.0-beta.48

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 (82) hide show
  1. package/dist/ai/docs/nocobase/api/cli/app/restart.md +1 -3
  2. package/dist/ai/docs/nocobase/api/cli/app/start.md +1 -7
  3. package/dist/ai/docs/nocobase/api/cli/config/delete.md +7 -5
  4. package/dist/ai/docs/nocobase/api/cli/config/get.md +7 -5
  5. package/dist/ai/docs/nocobase/api/cli/config/index.md +38 -18
  6. package/dist/ai/docs/nocobase/api/cli/config/set.md +9 -7
  7. package/dist/ai/docs/nocobase/api/cli/env/index.md +19 -20
  8. package/dist/ai/docs/nocobase/api/cli/env/update.md +72 -72
  9. package/dist/ai/docs/nocobase/api/cli/index.md +0 -1
  10. package/dist/ai/docs/nocobase/api/cli/init.md +30 -0
  11. package/dist/ai/docs/nocobase/api/cli/proxy/caddy/current.md +33 -0
  12. package/dist/ai/docs/nocobase/api/cli/proxy/caddy/generate.md +54 -0
  13. package/dist/ai/docs/nocobase/api/cli/proxy/caddy/index.md +60 -0
  14. package/dist/ai/docs/nocobase/api/cli/proxy/caddy/info.md +42 -0
  15. package/dist/ai/docs/nocobase/api/cli/proxy/caddy/reload.md +32 -0
  16. package/dist/ai/docs/nocobase/api/cli/proxy/caddy/restart.md +32 -0
  17. package/dist/ai/docs/nocobase/api/cli/proxy/caddy/start.md +32 -0
  18. package/dist/ai/docs/nocobase/api/cli/proxy/caddy/status.md +36 -0
  19. package/dist/ai/docs/nocobase/api/cli/proxy/caddy/stop.md +32 -0
  20. package/dist/ai/docs/nocobase/api/cli/proxy/caddy/use.md +38 -0
  21. package/dist/ai/docs/nocobase/api/cli/proxy/index.md +124 -0
  22. package/dist/ai/docs/nocobase/api/cli/proxy/nginx/current.md +33 -0
  23. package/dist/ai/docs/nocobase/api/cli/proxy/nginx/generate.md +62 -0
  24. package/dist/ai/docs/nocobase/api/cli/proxy/nginx/index.md +60 -0
  25. package/dist/ai/docs/nocobase/api/cli/proxy/nginx/info.md +43 -0
  26. package/dist/ai/docs/nocobase/api/cli/proxy/nginx/reload.md +32 -0
  27. package/dist/ai/docs/nocobase/api/cli/proxy/nginx/restart.md +32 -0
  28. package/dist/ai/docs/nocobase/api/cli/proxy/nginx/start.md +32 -0
  29. package/dist/ai/docs/nocobase/api/cli/proxy/nginx/status.md +36 -0
  30. package/dist/ai/docs/nocobase/api/cli/proxy/nginx/stop.md +32 -0
  31. package/dist/ai/docs/nocobase/api/cli/proxy/nginx/use.md +38 -0
  32. package/dist/ai/docs/nocobase/data-sources/data-source-external-nocobase/index.md +157 -0
  33. package/dist/ai/docs/nocobase/data-sources/data-source-manager/index.md +5 -0
  34. package/dist/ai/docs/nocobase/ops-management/version-control/index.md +79 -0
  35. package/dist/ai/docs/nocobase/plugins/@nocobase/plugin-version-control/index.md +14 -0
  36. package/dist/ai/docs/nocobase/quickstart/production/index.md +75 -69
  37. package/dist/ai/docs/nocobase/quickstart/production/reverse-proxy/caddy.md +211 -80
  38. package/dist/ai/docs/nocobase/quickstart/production/reverse-proxy/index.md +72 -53
  39. package/dist/ai/docs/nocobase/quickstart/production/reverse-proxy/nginx.md +186 -89
  40. package/dist/client/{290.0888139e33c9b7cb.js → 290.0f7f441d8a94f03c.js} +1 -1
  41. package/dist/client/{428.431a00d29107058e.js → 428.fdd0cc3cfd1632ef.js} +1 -1
  42. package/dist/client/ai-employees/chatbox/hooks/useChat.d.ts +14 -14
  43. package/dist/client/ai-employees/chatbox/stores/chat-box.d.ts +1 -105
  44. package/dist/client/ai-employees/chatbox/stores/chat-conversations.d.ts +1 -37
  45. package/dist/client/ai-employees/chatbox/stores/chat-messages.d.ts +1 -109
  46. package/dist/client/index.js +3 -3
  47. package/dist/client-v2/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +17 -0
  48. package/dist/client-v2/ai-employees/chatbox/stores/chat-box.d.ts +113 -0
  49. package/dist/client-v2/ai-employees/chatbox/stores/chat-conversations.d.ts +45 -0
  50. package/dist/client-v2/ai-employees/chatbox/stores/chat-messages.d.ts +118 -0
  51. package/dist/client-v2/ai-employees/chatbox/stores/create-selectors.d.ts +18 -0
  52. package/dist/client-v2/ai-employees/chatbox/stores/global-store.d.ts +9 -0
  53. package/dist/client-v2/ai-employees/types.d.ts +151 -0
  54. package/dist/client-v2/index.d.ts +8 -1
  55. package/dist/client-v2/index.js +1 -1
  56. package/dist/client-v2/repositories/AIConfigRepository.d.ts +81 -0
  57. package/dist/client-v2/repositories/hooks/useAIConfigRepository.d.ts +10 -0
  58. package/dist/collections/ai-context-datasource.js +1 -0
  59. package/dist/externalVersion.js +16 -16
  60. package/dist/node_modules/@langchain/xai/package.json +1 -1
  61. package/dist/node_modules/fs-extra/package.json +1 -1
  62. package/dist/node_modules/jsonrepair/package.json +1 -1
  63. package/dist/node_modules/just-bash/package.json +1 -1
  64. package/dist/node_modules/nodejs-snowflake/package.json +1 -1
  65. package/dist/node_modules/openai/package.json +1 -1
  66. package/dist/node_modules/zod/package.json +1 -1
  67. package/dist/server/collections/ai-conversations.js +1 -0
  68. package/dist/server/collections/ai-employees.js +1 -0
  69. package/dist/server/collections/ai-files.js +1 -0
  70. package/dist/server/collections/ai-messages.js +1 -0
  71. package/dist/server/collections/ai-settings.js +1 -0
  72. package/dist/server/collections/ai-tool-messages.js +1 -0
  73. package/dist/server/collections/lc-checkpoint-blobs.js +1 -0
  74. package/dist/server/collections/lc-checkpoint-writes.js +1 -0
  75. package/dist/server/collections/lc-checkpoints.js +1 -0
  76. package/dist/server/collections/llm-services.js +1 -0
  77. package/dist/server/collections/users-ai-employees.js +1 -0
  78. package/package.json +2 -2
  79. package/dist/ai/docs/nocobase/ai/install-upgrade-migration.mdx +0 -402
  80. package/dist/ai/docs/nocobase/api/cli/env/proxy/caddy.md +0 -108
  81. package/dist/ai/docs/nocobase/api/cli/env/proxy/index.md +0 -54
  82. package/dist/ai/docs/nocobase/api/cli/env/proxy/nginx.md +0 -104
@@ -1,69 +1,94 @@
1
1
  ---
2
- title: 'Reverse Proxy for Production'
3
- description: 'Use nb env proxy nginx and nb env proxy caddy to generate reverse-proxy configs for CLI-managed NocoBase envs.'
4
- keywords: 'NocoBase,nb env proxy nginx,nb env proxy caddy,reverse proxy,Nginx,Caddy,production'
2
+ title: "Reverse Proxy in Production"
3
+ description: "Use nb proxy nginx and nb proxy caddy to generate and manage reverse-proxy configuration for CLI-managed NocoBase envs."
4
+ keywords: "NocoBase,nb proxy nginx,nb proxy caddy,reverse proxy,Nginx,Caddy,production"
5
5
  ---
6
6
 
7
- # Reverse Proxy for Production
7
+ # Reverse Proxy in Production
8
8
 
9
- In NocoBase CLI, there are two recommended entry points for putting a reverse proxy in front of a production app:
9
+ In NocoBase CLI, the recommended production reverse-proxy entrypoints are:
10
10
 
11
- - `nb env proxy nginx`
12
- - `nb env proxy caddy`
11
+ - `nb proxy nginx`
12
+ - `nb proxy caddy`
13
13
 
14
- As long as your app has already been saved as a CLI env and the env type is `local` or `docker`, letting the CLI generate the config is usually enough. That way, the CLI keeps tricky details such as WebSocket handling, subpaths, SPA fallback pages, and later updates in sync. You only need to decide whether the entry layer should keep using Nginx or move to Caddy.
14
+ Where:
15
+
16
+ - `proxy` manages the entry layer
17
+ - `nginx` and `caddy` are the provider implementations
18
+ - `docker` and `local` are the runtime drivers
19
+ - `--env <name>` selects which CLI env to generate config for
20
+
21
+ As long as your app has been saved as a CLI-managed env and the env is `local` or `docker`, letting the CLI generate and manage the reverse-proxy config is usually enough. That approach keeps WebSocket handling, subpaths, SPA fallback pages, and later updates aligned in one place.
15
22
 
16
- If your app is not managed by the CLI, or if you explicitly want to handwrite the full proxy config, go straight to the handwritten-config section in the provider pages.
23
+ If the app is not CLI-managed, or you intentionally want to maintain the entire proxy configuration by hand, move on to the handwritten-config sections in the provider-specific pages.
17
24
 
18
- ## Check whether this path fits your setup
25
+ ## Before you start
19
26
 
20
- - Your app is already reachable through an internal address such as `http://127.0.0.1:13000`
21
- - The app has already been saved as a CLI env, and the env type is `local` or `docker`
22
- - The env already has `appPort` saved
27
+ Make sure that:
23
28
 
24
- If the command says the env is missing `appPort`, run [`nb env update`](../../../api/cli/env/update.md) first and save it.
29
+ - the app can already be reached internally, such as `http://127.0.0.1:13000`
30
+ - the app has already been saved as a CLI env, and that env is `local` or `docker`
31
+ - the env already has `appPort` saved
25
32
 
26
- If you later change settings such as `app-port` or `app-public-path` that affect proxy output, remember to rerun the matching proxy subcommand.
33
+ If the command says the env is missing `appPort`, update it first with [`nb env update`](../../../api/cli/env/update.md).
27
34
 
28
- ## Default path: let the CLI generate the config first
35
+ If you later change settings such as `app-port` or `app-public-path` that affect proxy behavior, rerun the matching `generate` command.
29
36
 
30
- If you already know which entry provider you want to keep using, go straight to that subcommand:
37
+ ## Default workflow
38
+
39
+ For Nginx:
31
40
 
32
41
  ```bash
33
- nb env proxy nginx --env demo --host demo.example.com
34
- nb env proxy caddy --env demo --host demo.example.com
42
+ nb proxy nginx use docker
43
+ nb proxy nginx generate --env test2 --host c.local.nocobase.com
44
+ nb proxy nginx start
35
45
  ```
36
46
 
37
- If you have already switched to the current env, you can also omit `--env`:
47
+ For Caddy:
38
48
 
39
49
  ```bash
40
- nb env proxy nginx --host demo.example.com
50
+ nb proxy caddy use local
51
+ nb proxy caddy generate --env test2 --host c.local.nocobase.com
52
+ nb proxy caddy start
41
53
  ```
42
54
 
43
- Where:
55
+ The roles are:
44
56
 
45
- - If you already use Nginx to manage sites, caching, access control, or certificates, start with [`nb env proxy nginx`](../../../api/cli/env/proxy/nginx.md)
46
- - If you want HTTPS running quickly and do not want to maintain many TLS details yourself, start with [`nb env proxy caddy`](../../../api/cli/env/proxy/caddy.md)
47
- - `--port` is the proxy entry port, not the app `appPort`
57
+ - `use docker|local`: choose the runtime driver for the current provider
58
+ - `generate --env <name> --host <domain>`: generate reverse-proxy config for one env
59
+ - `start`: start the local process or Docker container for the current provider
48
60
 
49
- If you want the CLI to also connect the shared config to the provider main config and reload it after validation, add:
61
+ If you update the config later, `reload` is usually the first choice. Use `restart` when you need a full restart of the entry layer.
50
62
 
51
- ```bash
52
- nb env proxy nginx --env demo --host demo.example.com --install --reload
53
- ```
63
+ ## How the command group is split
64
+
65
+ Using Nginx as the example:
66
+
67
+ | Command | Purpose |
68
+ | --- | --- |
69
+ | `nb proxy nginx use docker` | Switch the Nginx runtime to Docker |
70
+ | `nb proxy nginx use local` | Switch the Nginx runtime to a local process |
71
+ | `nb proxy nginx current` | Show the current runtime driver |
72
+ | `nb proxy nginx generate --env <name> --host <domain>` | Generate Nginx config for one env |
73
+ | `nb proxy nginx start` | Start Nginx |
74
+ | `nb proxy nginx reload` | Reload the Nginx config |
75
+ | `nb proxy nginx restart` | Restart Nginx |
76
+ | `nb proxy nginx stop` | Stop Nginx |
77
+ | `nb proxy nginx status` | Show Nginx status |
78
+ | `nb proxy nginx info` | Show the current config, paths, and runtime details |
54
79
 
55
- For the full command reference, see [`nb env proxy`](../../../api/cli/env/proxy/index.md).
80
+ Caddy uses the same action set, but with a different provider implementation.
56
81
 
57
- ## What the CLI keeps in sync for you
82
+ ## What the CLI maintains
58
83
 
59
- The CLI does more than generate one proxy snippet. It also maintains provider-specific helper files. The output shape differs between the two providers:
84
+ The CLI does more than produce one proxy fragment. It also keeps the helper files and site entry structure aligned with the provider:
60
85
 
61
- - Nginx keeps `app.conf`, `public/index-v1.html`, `public/index-v2.html`, the shared `nocobase.conf`, and the shared `snippets/`
62
- - Caddy keeps `generated.caddy`, `app.caddy`, and the shared `nocobase.caddy`
86
+ - Nginx maintains shared `snippets`, `app.conf`, `public/index-v1.html`, and `public/index-v2.html`
87
+ - Caddy maintains `nocobase.caddy`, `app.caddy`, `public/index-v1.html`, and `public/index-v2.html`, where `app.caddy` is the full site config for one env
63
88
 
64
89
  :::warning Note
65
90
 
66
- If you need to add site-level configuration, edit `app.conf` or `app.caddy`. Do not manually edit CLI-managed helper files, because they will be overwritten the next time you run the command.
91
+ If you need to add site-level configuration, you usually edit `app.conf` for Nginx and use `app.caddy` as the base for Caddy. Do not edit the CLI-managed helper files directly. Also note that `app.caddy` is overwritten as a whole when you run `generate` again, while `nocobase.caddy` mainly serves as the provider-level entry file.
67
92
 
68
93
  :::
69
94
 
@@ -71,30 +96,24 @@ If you need to add site-level configuration, edit `app.conf` or `app.caddy`. Do
71
96
 
72
97
  | I want to... | Go here |
73
98
  | --- | --- |
74
- | Keep using Nginx to manage sites, certificates, caching, or access control | [Nginx](./nginx.md) |
75
- | Get HTTPS running quickly and maintain fewer certificate and TLS details | [Caddy](./caddy.md) |
76
- | Review the command tree and choose a provider first | [`nb env proxy`](../../../api/cli/env/proxy/index.md) |
77
- | See the Nginx subcommand options, output files, and examples first | [`nb env proxy nginx`](../../../api/cli/env/proxy/nginx.md) |
78
- | See the Caddy subcommand options, output files, and examples first | [`nb env proxy caddy`](../../../api/cli/env/proxy/caddy.md) |
79
- | Adjust env settings that may affect proxy output, such as `app-port` or `app-public-path` | [`nb env update`](../../../api/cli/env/update.md) |
80
- | Install the app as a CLI-managed env first | [Install with CLI (Recommended)](../../installation/cli.md) |
99
+ | Keep using Nginx for sites, certificates, caching, or access control | [Nginx](./nginx.md) |
100
+ | Get HTTPS running quickly with fewer TLS details to maintain | [Caddy](./caddy.md) |
101
+ | Adjust env settings that may affect proxy behavior, such as `app-port` or `app-public-path` | [`nb env update`](../../../api/cli/env/update.md) |
102
+ | Install the app as a CLI-managed env first | [Install with the CLI](../../installation/cli.md) |
81
103
 
82
- ## When the CLI-generated path is not the best fit
104
+ ## When the CLI path is not the right fit
83
105
 
84
- These cases are usually better served by the handwritten-config section in the provider pages:
106
+ In these cases, the handwritten-config sections in the provider-specific pages are usually a better fit:
85
107
 
86
- - Your app is not managed by the CLI
87
- - The env only has a remote API connection, or it is an SSH env
88
- - You explicitly want to maintain the full Nginx config or full `Caddyfile` yourself
108
+ - the app is not CLI-managed
109
+ - the env is only a remote API connection or an SSH env
110
+ - you intentionally want to maintain the entire Nginx config or `Caddyfile` yourself
89
111
 
90
- As long as the app has already been saved as a CLI env and the current machine can reach its runtime, the default recommendation is still to start with these commands. It makes later domain changes, site-level adjustments, and regeneration much easier to manage.
112
+ As long as the app has been saved as a CLI env and its runtime is reachable from the current machine, using this command group is still the recommended default. It is usually much easier to maintain later when you need to change the domain, add site-level config, switch drivers, or regenerate the entry files.
91
113
 
92
114
  ## Related links
93
115
 
94
- - [`nb env proxy`](../../../api/cli/env/proxy/index.md)
95
- - [`nb env proxy nginx`](../../../api/cli/env/proxy/nginx.md)
96
- - [`nb env proxy caddy`](../../../api/cli/env/proxy/caddy.md)
97
116
  - [Nginx](./nginx.md)
98
117
  - [Caddy](./caddy.md)
99
- - [App Environment Variables](../../installation/env.md)
100
- - [Install with CLI (Recommended)](../../installation/cli.md)
118
+ - [Environment variables](../../installation/env.md)
119
+ - [Install with the CLI](../../installation/cli.md)
@@ -1,166 +1,263 @@
1
+ ---
2
+ title: "Nginx"
3
+ description: "Use nb proxy nginx to generate and manage Nginx reverse-proxy configuration for CLI-managed NocoBase envs."
4
+ keywords: "NocoBase,nb proxy nginx,reverse proxy,Nginx,production"
5
+ ---
6
+
1
7
  # Nginx
2
8
 
3
- If you already use Nginx on the server to manage sites, or you still want to manage certificates, caching, or access control yourself, staying with Nginx is the most direct path. For CLI-managed NocoBase envs, this is also the default recommendation.
9
+ If you already use Nginx on the server to manage sites, or you still want to manage certificates, caching, and access control yourself, `nb proxy nginx` is the recommended path.
10
+
11
+ If your goal is simply to get HTTPS working as quickly as possible and you do not want to maintain many proxy details yourself, [Caddy](./caddy.md) is usually the simpler option. But if Nginx is already part of your server setup, this page is the default path.
4
12
 
5
- If you mainly want to get HTTPS running quickly and do not want to maintain many proxy details yourself, [Caddy](./caddy.md) is the easier path. But if Nginx is already part of your stack, this page is the default place to start.
13
+ ## When Nginx is the better fit
6
14
 
7
- ## Confirm these two things first
15
+ In practice, Nginx is usually the better choice when:
8
16
 
9
- - NocoBase is already reachable through an internal address such as `http://127.0.0.1:13000`
10
- - You know whether this deployment is a CLI-managed env or a fully handwritten setup
17
+ - you already use Nginx to manage multiple sites on the same server
18
+ - you still need to maintain certificates, caching, access control, or more custom rules yourself
19
+ - you want the entry layer to stay aligned with your existing Nginx operations workflow
11
20
 
12
- Once those two things are clear, the next step is usually straightforward:
21
+ If the only goal is to get HTTPS online quickly with less TLS work, [Caddy](./caddy.md) is usually the simpler route.
13
22
 
14
- - If the app has already been saved as a CLI env and the env type is `local` or `docker`, use `nb env proxy nginx`
15
- - If the app is not managed by the CLI, or you explicitly want to maintain the full Nginx config yourself, handwrite the `server` block
23
+ ## Recommended order: choose a driver, generate config, then start
16
24
 
17
- ## Default path: let the CLI generate the Nginx config
25
+ For a CLI-managed env of type `local` or `docker`, the default order is:
18
26
 
19
- If your app was installed, adopted, or saved through NocoBase CLI as a `local` or `docker` env, the default recommendation is to run `nb env proxy nginx`. The CLI maintains the editable entry file, SPA fallback pages, shared main config, and shared snippets together, which makes it much less likely to miss WebSocket handling, subpaths, or later updates.
27
+ ```bash
28
+ nb proxy nginx use docker
29
+ nb proxy nginx generate --env test2 --host c.local.nocobase.com
30
+ nb proxy nginx start
31
+ ```
20
32
 
21
- Start by generating a config for a specific env:
33
+ Or with a local process:
22
34
 
23
35
  ```bash
24
- nb env proxy nginx --env demo
36
+ nb proxy nginx use local
37
+ nb proxy nginx generate --env test2 --host c.local.nocobase.com
38
+ nb proxy nginx start
25
39
  ```
26
40
 
27
- If you have already switched to the current env, you can also omit `--env`:
41
+ Common follow-up commands are:
28
42
 
29
43
  ```bash
30
- nb env proxy nginx
44
+ nb proxy nginx current
45
+ nb proxy nginx status
46
+ nb proxy nginx info
47
+ nb proxy nginx reload
48
+ nb proxy nginx restart
49
+ nb proxy nginx stop
31
50
  ```
32
51
 
33
- If you already know the public domain or entry port, you can write them at generation time:
52
+ In most cases:
53
+
54
+ - `current` is the quickest way to confirm the active runtime driver
55
+ - `status` shows whether Nginx is currently running normally
56
+ - `info` shows the current config path, runtime root, and related runtime details
57
+ - after regenerating config, `reload` is usually the first command to use
58
+ - use `restart` when you need a full restart
59
+
60
+ ## What `generate` needs as input
61
+
62
+ The most common form is:
34
63
 
35
64
  ```bash
36
- nb env proxy nginx --env demo --host demo.example.com
37
- nb env proxy nginx --env demo --host demo.example.com --port 8080
65
+ nb proxy nginx generate --env test2 --host c.local.nocobase.com
38
66
  ```
39
67
 
40
- Here, `--port` is the proxy entry port, not the port the NocoBase app itself listens on. The upstream app port comes from the saved env `appPort`.
68
+ If you also want to specify the entry port:
41
69
 
42
- ### Which files the CLI generates
70
+ ```bash
71
+ nb proxy nginx generate --env test2 --host c.local.nocobase.com --port 8080
72
+ ```
73
+
74
+ Where:
75
+
76
+ - `--env`: which CLI env to generate config for
77
+ - `--host`: the public domain name
78
+ - `--port`: the proxy entry port, not the app's own `appPort`
43
79
 
44
- The Nginx provider keeps these files under `~/.nocobase/proxy/nginx/`:
80
+ The upstream application port comes from the saved `appPort` of that env. If the command says the env is missing `appPort`, save it first with:
81
+
82
+ ```bash
83
+ nb env update test2 --app-port 56575
84
+ ```
45
85
 
46
- | File | Purpose |
86
+ If you later change settings such as `app-port` or `app-public-path` that affect proxy behavior, rerun `generate`.
87
+
88
+ ## Files maintained by the CLI
89
+
90
+ Using `test2` as an example, the Nginx workflow usually maintains:
91
+
92
+ | Path | Purpose |
47
93
  | --- | --- |
48
- | `~/.nocobase/proxy/nginx/<env>/app.conf` | Editable site entry file. The CLI refreshes the managed block inside it, and you can add site-level config around that block |
49
- | `~/.nocobase/proxy/nginx/<env>/public/index-v1.html` | v1 SPA fallback page generated from the current active client's `index.html` |
50
- | `~/.nocobase/proxy/nginx/<env>/public/index-v2.html` | v2 SPA fallback page generated from the current active client's `v/index.html` |
51
- | `~/.nocobase/proxy/nginx/nocobase.conf` | Shared main config that includes every env `app.conf` |
52
- | `~/.nocobase/proxy/nginx/snippets/` | Shared snippets directory copied from built-in templates |
94
+ | `NB_CLI_ROOT/.nocobase/proxy/nginx/snippets` | Shared Nginx snippets directory |
95
+ | `NB_CLI_ROOT/.nocobase/proxy/nginx/test2/app.conf` | Editable site entry config |
96
+ | `NB_CLI_ROOT/.nocobase/proxy/nginx/test2/public/index-v1.html` | v1 SPA fallback page |
97
+ | `NB_CLI_ROOT/.nocobase/proxy/nginx/test2/public/index-v2.html` | v2 SPA fallback page |
98
+ | `NB_CLI_ROOT/test2/storage/dist-client` | Frontend build output for the current app |
99
+ | `NB_CLI_ROOT/test2/storage/uploads` | Uploads directory for the current app |
53
100
 
54
101
  Where:
55
102
 
56
- - `app.conf` is editable, but you should keep the managed block between `# BEGIN NocoBase managed config` and `# END NocoBase managed config`
57
- - `index-v1.html` and `index-v2.html` automatically rewrite asset URLs according to the current env subpath, active client version, and `CDN_BASE_URL`
58
- - `nocobase.conf` is mainly used by `--install`
59
- - Files under `snippets/` and `public/` are usually not meant to be edited manually and will be resynced the next time you run the command
103
+ - files under `NB_CLI_ROOT/.nocobase/proxy/nginx/...` are CLI-managed proxy helper files
104
+ - files under `NB_CLI_ROOT/test2/storage/...` belong to the application itself
105
+ - `app.conf` can be edited, but the NocoBase-managed block must stay intact
106
+ - `index-v1.html` and `index-v2.html` are rewritten according to the current env's subpath, active client version, and `CDN_BASE_URL`
60
107
 
61
108
  :::warning Note
62
109
 
63
- If you need to add site-level Nginx config such as rate limits, extra headers, or access control, edit `app.conf`. Managed files under `public/` and `snippets/` will be overwritten the next time you run `nb env proxy nginx`.
110
+ If you need site-level Nginx config such as rate limiting, extra headers, or access control, edit `app.conf`. The CLI-managed helper files are updated again when you regenerate the config.
64
111
 
65
112
  :::
66
113
 
67
- ### Install the shared config into Nginx and reload it
114
+ ## Handwritten config: when you are not using the CLI
68
115
 
69
- If you want the CLI to connect the shared config to the Nginx main config and immediately validate and reload Nginx, run:
116
+ If the app is not CLI-managed, or you intentionally want to maintain the complete Nginx config yourself, you can still write it by hand.
70
117
 
71
- ```bash
72
- nb env proxy nginx --env demo --host demo.example.com --install --reload
73
- ```
118
+ For NocoBase, though, a production reverse proxy is usually more than a single `proxy_pass`. In addition to forwarding API requests to the backend app, a complete config usually needs to handle uploads, frontend assets, WebSocket, `.well-known` routes, and SPA fallback pages together.
74
119
 
75
- These flags are split like this:
120
+ Using `test2` as the example, these are the key Nginx-related files and directories:
76
121
 
77
- - `--install` connects `~/.nocobase/proxy/nginx/nocobase.conf` to the Nginx main config
78
- - `--reload` validates the config first and then reloads Nginx
122
+ - Nginx snippets: `NB_CLI_ROOT/.nocobase/proxy/nginx/snippets`
123
+ - Editable entry config: `NB_CLI_ROOT/.nocobase/proxy/nginx/test2/app.conf`
124
+ - SPA fallback page for v1: `NB_CLI_ROOT/.nocobase/proxy/nginx/test2/public/index-v1.html`
125
+ - SPA fallback page for v2: `NB_CLI_ROOT/.nocobase/proxy/nginx/test2/public/index-v2.html`
126
+ - Frontend build output: `NB_CLI_ROOT/test2/storage/dist-client`
127
+ - Uploads directory: `NB_CLI_ROOT/test2/storage/uploads`
79
128
 
80
- If your Nginx executable is not on the default path, set the CLI config first:
129
+ In other words, a handwritten config usually needs to cover at least these entry areas:
81
130
 
82
- ```bash
83
- nb config set bin.nginx /usr/sbin/nginx
131
+ - `uploads`
132
+ - `dist`
133
+ - `well-known`
134
+ - `api`
135
+ - `ws`
136
+ - `spa`
137
+
138
+ So a complete Nginx config is usually more than a generic reverse proxy such as:
139
+
140
+ ```nginx
141
+ location / {
142
+ proxy_pass http://127.0.0.1:13000;
143
+ }
84
144
  ```
85
145
 
86
- ### When should you change `proxy.nb-cli-root`
146
+ For a CLI-managed app such as `test2`, a more realistic deployment structure usually looks closer to this:
87
147
 
88
- Most setups do not need to change `proxy.nb-cli-root`. You usually need it only when Nginx runs in another container, mount root, or path view and cannot see the current user's `~/.nocobase` path.
148
+ ```nginx
149
+ server {
150
+ listen 80;
151
+ server_name c.local.nocobase.com;
89
152
 
90
- For example, if Nginx sees that path as `/workspace/.nocobase/...` inside a container, set:
153
+ # Add custom directives or locations above the managed block as needed.
91
154
 
92
- ```bash
93
- nb config set proxy.nb-cli-root /workspace
94
- nb env proxy nginx --env demo --install --reload
95
- ```
155
+ client_max_body_size 0;
96
156
 
97
- If you only want to preview the rendered `app.conf`, you can also use:
157
+ include NB_CLI_ROOT/.nocobase/proxy/nginx/snippets/mime-types.conf;
158
+ include NB_CLI_ROOT/.nocobase/proxy/nginx/snippets/gzip.conf;
98
159
 
99
- ```bash
100
- nb env proxy nginx --env demo --print
101
- ```
160
+ location /storage/uploads/ {
161
+ alias NB_CLI_ROOT/test2/storage/uploads/;
162
+ include NB_CLI_ROOT/.nocobase/proxy/nginx/snippets/uploads-location.conf;
163
+ }
102
164
 
103
- The Nginx provider does not support `--output`. For the full parameter reference, see [`nb env proxy nginx`](../../../api/cli/env/proxy/nginx.md).
165
+ location ^~ /dist/ {
166
+ alias NB_CLI_ROOT/test2/storage/dist-client/;
167
+ include NB_CLI_ROOT/.nocobase/proxy/nginx/snippets/dist-location.conf;
168
+ }
104
169
 
105
- ## Handwritten config: what to do without the CLI
170
+ location ~ ^/\\.well-known/(?<well_known>oauth-authorization-server|openid-configuration)/(?<resource_path>.+)$ {
171
+ rewrite ^ /$resource_path/.well-known/$well_known break;
172
+ proxy_pass http://127.0.0.1:56575;
173
+ include NB_CLI_ROOT/.nocobase/proxy/nginx/snippets/proxy-location.conf;
174
+ }
106
175
 
107
- If your app is not managed by the CLI, or you explicitly want to maintain the full Nginx config yourself, start with this minimal version. In most cases, one `server` block is enough.
176
+ location ^~ /api/ {
177
+ proxy_pass http://127.0.0.1:56575;
178
+ include NB_CLI_ROOT/.nocobase/proxy/nginx/snippets/proxy-location.conf;
179
+ }
108
180
 
109
- Create a config file on the server, for example `/etc/nginx/conf.d/nocobase.conf`:
181
+ location = /ws {
182
+ proxy_pass http://127.0.0.1:56575;
183
+ include NB_CLI_ROOT/.nocobase/proxy/nginx/snippets/proxy-location.conf;
184
+ }
110
185
 
111
- ```nginx
112
- server {
113
- listen 80;
114
- server_name your-domain.com;
115
-
116
- client_max_body_size 100m;
117
-
118
- location / {
119
- proxy_pass http://127.0.0.1:13000;
120
- proxy_http_version 1.1;
121
- proxy_set_header Host $host;
122
- proxy_set_header X-Real-IP $remote_addr;
123
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
124
- proxy_set_header X-Forwarded-Proto $scheme;
125
- proxy_set_header Upgrade $http_upgrade;
126
- proxy_set_header Connection "upgrade";
186
+ location = /v {
187
+ return 302 /v/$is_args$args;
188
+ }
189
+
190
+ location ^~ /v/ {
191
+ alias NB_CLI_ROOT/.nocobase/proxy/nginx/test2/public/;
192
+ try_files $uri /index-v2.html =404;
193
+ include NB_CLI_ROOT/.nocobase/proxy/nginx/snippets/spa-location.conf;
194
+ }
195
+
196
+ location ^~ / {
197
+ alias NB_CLI_ROOT/.nocobase/proxy/nginx/test2/public/;
198
+ try_files $uri /index-v1.html =404;
199
+ include NB_CLI_ROOT/.nocobase/proxy/nginx/snippets/spa-location.conf;
127
200
  }
201
+
202
+ # Add custom directives or locations below the managed block as needed.
128
203
  }
129
204
  ```
130
205
 
131
- Where:
206
+ Two details matter here:
207
+
208
+ - files under `NB_CLI_ROOT/.nocobase/proxy/nginx/...` are CLI-managed proxy helper files
209
+ - files under `NB_CLI_ROOT/test2/storage/...` belong to the application's own build output and uploads
210
+
211
+ If the app uses subpath deployment, or if frontend assets, uploads, and the reverse proxy do not share the same path view, handwritten config becomes easier to get wrong. In those cases, it is usually safer to generate the config first with:
212
+
213
+ ```bash
214
+ nb proxy nginx generate --env test2 --host c.local.nocobase.com
215
+ ```
132
216
 
133
- - Replace `server_name` with your domain
134
- - Replace `127.0.0.1:13000` with the real address your NocoBase app listens on
135
- - Adjust `client_max_body_size` to match your upload needs
217
+ Then use the generated result as the baseline for manual adjustments.
136
218
 
137
- If your app is not mounted at `/` but under a subpath such as `/app/`, handwritten configs also need you to confirm application variables such as `APP_PUBLIC_PATH` and `WS_PATH`. In that case, it is usually easier to go back to `nb env proxy nginx` and let the CLI handle the routing details.
219
+ The safer workflow is usually:
220
+
221
+ 1. let the CLI generate the Nginx config first
222
+ 2. use the generated output to confirm the routing structure and real filesystem paths
223
+ 3. then adjust it for your own domain, runtime driver, and mount layout
224
+
225
+ That is usually less error-prone than writing the full config from scratch.
138
226
 
139
227
  ## Validate and reload the config
140
228
 
229
+ If you write or adjust Nginx config manually, validate it first and then reload:
230
+
141
231
  ```bash
142
232
  nginx -t
143
233
  systemctl reload nginx
144
234
  ```
145
235
 
146
- If you do not manage Nginx with `systemd`, use your own reload workflow.
236
+ If you are not using `systemd` to manage Nginx, replace that with your own reload workflow.
237
+
238
+ If you manage the entry layer through `nb proxy nginx`, the usual first choice is:
239
+
240
+ ```bash
241
+ nb proxy nginx reload
242
+ ```
147
243
 
148
244
  ## How to handle HTTPS
149
245
 
150
- If you have already decided to stay with Nginx, you can keep handling HTTPS there as well. A common next step is to expand `listen 80` into dual `80/443` entry points and add your certificate paths and TLS config.
246
+ If you have already decided to keep using Nginx, you can keep HTTPS there as well. A common pattern is to extend `listen 80` into a `80/443` setup and then add certificate paths and TLS settings.
151
247
 
152
- But if you mainly want working HTTPS as quickly as possible and do not want to deal with certificate issuance and renewal yourself, switching to [Caddy](./caddy.md) is usually easier.
248
+ If the goal is simply to get usable HTTPS quickly without managing certificate issuance and renewal yourself, switching to [Caddy](./caddy.md) is usually simpler.
153
249
 
154
- ## Notes
250
+ ## Common notes
155
251
 
156
- - `nb env proxy nginx` only works for CLI-managed envs whose runtime is reachable from the current machine, which means `local` or `docker`
157
- - If the command says the env is missing `appPort`, run `nb env update <name> --app-port <port>` first
158
- - `nb env proxy nginx` does not support `--output`. If you only want to preview the entry file, use `--print`
159
- - If you already have a large custom Nginx main config, the CLI-generated config usually fits best as a site fragment that you include, not as a replacement for the whole main config
252
+ - `nb proxy nginx generate` only works for CLI-managed envs whose runtime is reachable from the current machine, which means `local` or `docker`
253
+ - if the command says the env is missing `appPort`, run `nb env update <name> --app-port <port>` first
254
+ - if you already have a large top-level Nginx config, the CLI-generated config is usually better used as a site fragment than as a replacement for the entire main config
255
+ - if you later change settings such as `app-port` or `app-public-path` that affect proxy behavior, rerun `generate`
160
256
 
161
257
  ## Related links
162
258
 
163
- - [`nb env proxy nginx`](../../../api/cli/env/proxy/nginx.md)
164
- - [Install with CLI (Recommended)](../../installation/cli.md)
259
+ - [Reverse Proxy in Production](./index.md)
260
+ - [Caddy](./caddy.md)
261
+ - [Install with the CLI](../../installation/cli.md)
165
262
  - [Install with Docker Compose](../../installation/docker-compose.md)
166
- - [App Environment Variables](../../installation/env.md)
263
+ - [Environment variables](../../installation/env.md)