# CRM Demo 部署指南

为了让您能够快速、顺畅地将此 Demo 部署到您自己的 NocoBase 环境中，我们提供了两种还原方式。请根据您的用户版本和技术背景选择最适合您的一种。

在开始之前，请确保

- 您已经有了一个基础的 NocoBase 运行环境。关于主系统的安装，请参考更详细的[官方安装文档](https://docs-cn.nocobase.com/welcome/getting-started/installation)。
- 您已经下载了我们 CRM Demo 的相应文件(中文版)：
  - **备份文件**（约21.2MB）：[nocobase_crm_demo_cn.nbdata](https://static-docs.nocobase.com/nocobase_crm_demo_cn.nbdata) - 适用于方法一
  - **SQL文件**（压缩后约9MB）：[nocobase_crm_demo_cn.zip](https://static-docs.nocobase.com/nocobase_crm_demo_cn.zip) - 适用于方法二

**重要说明**：本 Demo 基于 **PostgreSQL** 数据库制作，请确保您的环境使用 PostgreSQL 数据库。

---

### 方法一：使用备份管理器还原（推荐专业/企业版用户）

这种方式通过 NocoBase 内置的“[备份管理器](https://docs-cn.nocobase.com/handbook/backups)”（专业/企业版）插件进行一键还原，操作最简单。但它对环境和用户版本有一定要求。

#### 核心特点

* **优点**：
  1. **操作便捷**：在 UI 界面即可完成，可以完整地还原包括插件在内的所有配置。
  2. **完整还原**：**能够还原所有系统文件**，包括模板打印文件、表中文件字段上传的文件等，确保 Demo 功能完整性。
* **局限**：
  1. **专业/企业版限定**：“备份管理器”是企业级插件，仅专业/企业版用户可用。
  2. **环境要求严格**：要求您的数据库环境（版本、大小写敏感设置等）与我们制作备份时的环境高度兼容。
  3. **插件依赖**：如果 Demo 中包含了您本地环境中没有的商业插件，还原会失败。

#### 操作步骤

**第 1 步：【强烈建议】使用 `full` 镜像启动应用**

为了避免因缺少数据库客户端而导致的还原失败，我们强烈建议您使用 `full` 版本的 Docker 镜像。它内置了所有必需的配套程序，让您无需进行额外配置。（注意：我们镜像由1.9.0-alpha.1制作，请留意版本兼容性）

拉取镜像的指令示例：

```bash
docker pull nocobase/nocobase:1.9.0-alpha.3-full
```

然后使用此镜像启动您的 NocoBase 服务。

> **注**：若不使用 `full` 镜像，您可能需要在容器内手动安装 `pg_dump` 数据库客户端，过程繁琐且不稳定。

**第 2 步：开启“备份管理器”插件**

1. 登录您的 NocoBase 系统。
2. 进入 **`插件管理`** 。
3. 找到并启用 **`备份管理器`** 插件。

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

**第 3 步：从本地备份文件还原**

1. 启用插件后，刷新页面。
2. 进入左侧菜单的 **`系统管理`** -\> **`备份管理器`**。
3. 点击右上角的 **`从本地备份还原`** 按钮。
   ![20250711014216](https://static-docs.nocobase.com/20250711014216.png)
4. 将我们提供给您的 Demo 备份文件（通常是 `.zip` 格式）拖拽到上传区域。
5. 点击 **`提交`**，耐心等待系统完成还原即可，这个过程可能需要几十秒到几分钟不等。
   ![20250711014250](https://static-docs.nocobase.com/20250711014250.png)

#### ⚠️ 注意事项

* **数据库兼容性**：这是此方法最关键的一点。您的 PostgreSQL 数据库**版本、字符集、大小写敏感设置**必须与 Demo 备份源文件匹配。特别是 `schema` 名称必须一致。
* **商业插件匹配**：请确保您已拥有并开启了 Demo 所需的所有商业插件，否则还原会中断。

---

### 方法二：直接导入 SQL 文件（通用，更适合社区版）

这种方式通过直接操作数据库来还原数据，绕过了“备份管理器”插件，因此没有专业/企业版插件的限制。

#### 核心特点

* **优点**：
  1. **无版本限制**：适用于所有 NocoBase 用户，包括社区版。
  2. **高兼容性**：不依赖应用内的 `dump` 工具，只要能连接数据库即可操作。
  3. **高容错性**：如果 Demo 包含您没有的商业插件（如 ECharts 图表），相关功能将不会被启用，但不会影响其他功能的正常使用，应用可成功启动。
* **局限**：
  1. **需要数据库操作能力**：需要用户具备基础的数据库操作能力，例如如何执行一个 `.sql` 文件。
  2. **⚠️ 系统文件丢失**：**此方法会丢失所有系统文件**，包括模板打印文件、表中文件字段上传的文件等。这意味着：
     - 打印模板功能可能无法正常使用
     - 已上传的图片、文档等文件将丢失
     - 涉及文件字段的功能将受到影响

#### 操作步骤

**第 1 步：准备一个干净的数据库**

为您即将导入的 Demo 数据准备一个全新的、空的数据库。

**第 2 步：将 `.sql` 文件导入数据库**

获取我们提供的 Demo 数据库文件（通常是 `.sql` 格式），并将其内容导入到您上一步准备好的数据库中。执行方式有多种，取决于您的环境：

* **选项 A：通过服务器命令行（以 Docker 为例）**
  如果您使用 Docker 安装 NocoBase 和数据库，可以将 `.sql` 文件上传到服务器，然后使用 `docker exec` 命令来执行导入。假设您的 PostgreSQL 容器名为 `my-nocobase-db`，文件名为 `crm_demo.sql`：

  ```bash
  # 将 sql 文件复制到容器内
  docker cp crm_demo.sql my-nocobase-db:/tmp/
  # 进入容器执行导入指令
  docker exec -it my-nocobase-db psql -U your_username -d your_database_name -f /tmp/crm_demo.sql
  ```
* **选项 B：通过远程数据库客户端**
  如果您的数据库暴露了端口，可以使用任何图形化数据库客户端（如 DBeaver, Navicat, pgAdmin 等）连接到数据库，新建一个查询窗口，将 `.sql` 文件的全部内容粘贴进去，然后执行即可。

**第 3 步：连接数据库并启动应用**

配置您的 NocoBase 启动参数（如环境变量 `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USER`, `DB_PASSWORD` 等），使其指向您刚刚导入了数据的数据库。然后，正常启动 NocoBase 服务。

![img_v3_02o3_eb637bd2-88c3-400b-8421-1ac2057d1aag](https://static-docs.nocobase.com/img_v3_02o3_eb637bd2-88c3-400b-8421-1ac2057d1aag.png)

#### ⚠️ 注意事项

* **数据库权限**：此方法要求您拥有可以直接操作数据库的账号和密码。
* **插件状态**：导入成功后，系统中包含的商业插件数据虽然存在，但如果您本地未安装并启用对应插件，相关功能（如Echarts图表、特定字段等）将无法显示和使用，但这不会导致应用崩溃。

---

### 总结与对比


| 特性            | 方法一：备份管理器                                               | 方法二：直接导入 SQL                                                                                   |
| :-------------- | :--------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- |
| **适用用户**    | **专业/企业版**用户                                              | **所有用户**（包括社区版）                                                                             |
| **操作简易度**  | ⭐⭐⭐⭐⭐ (非常简单，UI 操作)                                   | ⭐⭐⭐ (需要基础数据库知识)                                                                            |
| **环境要求**    | **严格**，数据库、系统版本等需高度兼容                           | **一般**，需要数据库兼容                                                                               |
| **插件依赖**    | **强依赖**，还原时会校验插件，缺少任何插件都会导致**还原失败**。 | **功能强依赖于插件**。数据可独立导入，系统具备基础功能。但若缺少对应插件，相关功能将**彻底无法使用**。 |
| **系统文件**    | **✅ 完整保留**（打印模板、上传文件等）                          | **❌ 会丢失**（打印模板、上传文件等）                                                                  |
| **推荐场景**   | 企业用户，且环境可控、一致，需要完整功能演示                     | 缺少部分插件，追求高兼容、灵活性，非专业/企业版用户，可接受文件功能缺失                                |

希望本教程能帮助您顺利部署 CRM Demo。如果您在操作过程中遇到任何问题，欢迎随时与我们联系！
