---
pkg: '@nocobase/plugin-app-supervisor'
title: "共享内存多应用模式"
description: "共享内存模式：单实例多应用，APP_DISCOVERY_ADAPTER=local、APP_PROCESS_ADAPTER=local，独立数据库/Schema、JWT 密钥、自定义域名，/apps/:appName/admin 访问。"
keywords: "共享内存,local 模式,APP_DISCOVERY_ADAPTER,APP_PROCESS_ADAPTER,子应用,应用监管器,NocoBase"
---
# 共享内存模式

## 介绍

当用户希望对业务进行应用级别的拆分，但又不希望引入复杂的部署和运维架构时，可以使用共享内存的多应用模式。

在这种模式下，一个 NocoBase 实例中可以同时运行多个应用。每个应用是独立的，可以连接独立的数据库，可以单独创建、启动和停止，但它们共享同一个进程和内存空间，用户仍然只需要维护一个 NocoBase 实例。

## 使用手册

### 环境变量配置

在使用多应用功能前，请确保在 NocoBase 启动时设置了以下环境变量：

```bash
APP_DISCOVERY_ADAPTER=local
APP_PROCESS_ADAPTER=local
```

### 应用创建

在系统设置菜单中点击「应用监管器」，进入应用管理页面。

![](https://static-docs.nocobase.com/202512291056215.png)

点击「新增」按钮，创建一个新应用。

![](https://static-docs.nocobase.com/202512291057696.png)

#### 配置项说明

| 配置项         | 说明                                                                                                                                                                                                         |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **应用名称**   | 应用在界面中显示的名称                                                                                                                                                                                       |
| **应用标识**   | 应用标识，全局唯一                                                                                                                                                                                           |
| **启动方式**   | - 首次访问时启动：当用户首次通过 URL 访问该子应用时才启动<br>- 随主应用一同启动：在主应用启动时同时启动子应用（会增加主应用启动时间）                                                                        |
| **环境**       | 在共享内存模式下，只有本地环境可用，即 `local`                                                                                                                                                               |
| **数据库连接** | 用于配置应用的主数据源，支持以下三种方式：<br>- 新数据库：复用当前数据库服务，创建独立数据库<br>- 新的数据连接：连接到其他数据库服务<br>- Schema 模式：当前主数据源为 PostgreSQL 时，为应用创建独立的 Schema |
| **升级**       | 若连接的数据库中存在低版本的 NocoBase 应用数据时，是否允许自动升级到当前应用版本                                                                                                                             |
| **JWT 密钥**   | 为应用自动生成独立的 JWT 密钥，确保应用会话独立于主应用及其他应用                                                                                                                                            |
| **自定义域名** | 为应用配置独立访问域名                                                                                                                                                                                       |

### 应用启动

点击 **启动** 按钮可启动子应用。

> 如果在创建时勾选了 _“首次访问时启动”_，则首次访问时会自动启动。

![](https://static-docs.nocobase.com/202512291121065.png)

### 应用访问

点击 **访问** 按钮，会在新标签页中打开该子应用。

默认使用 `/apps/:appName/admin/` 访问子应用，例如

```bash
http://localhost:13000/apps/a_7zkxoarusnx/admin/
```

同时，也可以为子应用配置独立的域名，需要将域名解析到当前 ip，如果使用了 nginx，也需要在 nginx 配置里添加域名。

### 应用停止

点击 **停止** 按钮可启动子应用。

![](https://static-docs.nocobase.com/202512291122113.png)

### 应用状态

在列表中可以查看每个应用的当前状态。

![](https://static-docs.nocobase.com/202512291122339.png)

### 应用删除

点击 **删除** 按钮可移除应用。

![](https://static-docs.nocobase.com/202512291122178.png)

## 常见问题

### 1. 插件管理

其他应用可以使用的插件和主应用一致（包括版本），但是可以独立配置和使用插件。

### 2. 数据库隔离

其他应用可以配置独立的数据库，如果想应用之间进行数据共享，可通过外部数据源实现。

### 3. 数据备份和迁移

目前在主应用上数据备份不支持包含其他应用的数据（只包含应用基本信息），需手动在其他应用内备份和迁移。

### 4. 部署与更新

在共享内存模式下，其他应用的版本将自动跟随主应用进行升级，自动保证应用版本一致。

### 5. 应用会话

- 若应用使用独立的 JWT 密钥，则应用会话独立于主应用及其他应用。如果通过同一域名的子路径访问不同应用，由于应用 TOKEN 缓存在 LocalStorage 中，在不同应用间切换时需要重新登录。建议为不同应用配置独立的域名，以实现更好的会话隔离。
- 若应用未使用独立的 JWT 密钥，则会共享主应用的会话，在同一浏览器访问其他应用后返回主应用无需重新登录。但存在安全隐患，如果不同应用的用户 ID 重复，可能导致用户越权访问其他应用的数据。
