## 页面导读

- **适用场景**: 适合快速体验、演示环境、小规模部署，以及商业版交付前的基础环境验证。
- **前置条件**: 准备一台 Linux 服务器，确保 Docker、Docker Compose、网络访问和业务端口可用。
- **产出结果**: 完成 FastBee 后端、前端、MySQL、Redis、EMQX 等服务启动，并可登录平台。
- **验收点**: 平台页面可访问，默认账号可登录，容器状态正常，MQTT 与 EMQX 控制台端口可连通。

## 部署入口与最小流程

<div class="doc-path">
  <ol>
    <li>先确认服务器系统、Docker、Docker Compose、端口开放、授权证书和安装包。</li>
    <li>快速体验优先使用一键脚本；交付或二次开发环境建议使用 docker-compose 方式，便于替换后端 jar 和前端静态文件。</li>
    <li>服务启动后按容器、后端日志、数据库、缓存、MQTT、Web 页面和授权页面顺序验收。</li>
    <li>最终使用 MQTTX 跑通产品、设备、上报和下发链路，确认部署环境能支撑真实业务。</li>
  </ol>
</div>

<div class="doc-checklist">
  <strong>部署前检查</strong>
  <ul>
    <li>服务器已开放 80、1883、8083、5061、30000-30100/tcp/udp 等业务端口。</li>
    <li>商业版本部署前已准备授权证书、安装密码，并确认部署完成后需要配置授权信息。</li>
    <li>二次开发重新部署时，先确认 <code>/var/data</code> 下的后端 jar 包和前端 <code>vue</code> 目录是否为最新版本。</li>
  </ul>
</div>

::: tip

* 商业版本部署完成后，登录系统，进入首页需要先[配置授权信息](https://www.fastbee.cn/doc/business/v2/install/license.html)才能正常使用
* 二次开发后重新部署，只需替换 `/var/data` 目录下对应fastbee-admin.jar包和vue目录下内容
  :::

## 一、快速部署脚本

一键部署脚本基于docker制作，需要安装好docker和docker-compose。实际操作流程类似下面的docker-compose部署方式，整合为一个脚本，执行一个命令完成部署。
命令如下：
::: important sudo wget -c https://hub.fastbee.cn/resource/install.sh && bash ./install.sh
:::

**注意事项：**

* 脚本包含开源和商业版本，商业版本仅针对已授权用户，安装需要密码和证书（联系客服获取）
* 部署中下载文件相对耗时，安装中推荐使用docker官方镜像，脚本自动配置镜像加速，速度会比较快
* 服务器开放对应端口（例如：80、1883、8083、5061、30000-30100/tcp/udp等）

## 二、docker-compose快速部署

::: important 使用docker-compose部署，需要服务器先安装docker和docker-compose
:::

docker-compose把项目依赖的应用和环境一起安装到服务器或本地，执行以下步骤完成安装部署:

### 1.上传文件

先把 <a href="https://gitee.com/beecue/fastbee" target="_blank" rel="nofollow">FastBee 仓库</a>中的 docker/data/ 文件夹上传到服务器或本地的 `/var/` 目录下，商业版本需要重新打包后端和前端，后端上传到 `/var/data/java/` 目录下，替换jar文件；前端上传到 `/var/data/nginx/vue/` 目录下替换里面内容。

### 2.开始部署

进入服务器或本地的 `/var/data/` 目录执行：`docker-compose up -d  ` 等待执行后完成部署

### 3.访问系统

* 部署完成后，通过服务器地址访问FastBee物联网平台，默认账号 `admin admin123`
* 部署中使用了emqx，可以通过18083端口，访问EMQX控制台，默认账号密码 `admin admin123`

::: tip

* 以后重新部署项目，只需替换 `fastbee-admin.jar` 文件和 `vue` 目录下内容
* mysql容器初始化需要时间，如果后端报错，可以 `docker restart java` 重启下后端
* 快速部署默认账号：
  * **系统管理员**：admin admin123
  * **mysql**：root fastbee
  * **redis**：fastbee
  * **emqx控制台**：admin admin123
  * **TDengine**：root taosdata
  * **SIP**：12345678
  * **数据源监控**：fastbee fastbee
    :::

### 4. 部署中常用命令参考

```shell
# 可先拉取服务中镜像，时间取决于网络情况，可配置docker采用国内镜像源
docker-compose pull
# 构建并启动服务中容器
docker-compose up -d  
# 停止并删除服务中容器
docker-compose down   
# 创建data文件夹
mkdir /var/data
# 文件夹分配读写可执行权限
sudo chmod 777 /var/data
```

### 5. docker镜像加速配置

按照以下步骤执行命令，完成镜像加速配置。docker镜像源加速地址收集自网络，可以根据情况增加或者删除

```shell
# 1. 关闭Docker服务
sudo systemctl stop docker

# 2. 如果文件不存在，则新建
sudo mkdir -p /etc/docker

# 3. 修改 Docker 的配置文件
sudo tee /etc/docker/daemon.json <<-EOF
{
    "registry-mirrors": [
        "https://mirrors.ustc.edu.cn",
        "https://docker.chenby.cn",
        "http://mirror.azure.cn",
        "https://dockerpull.org",
        "https://dockerhub.icu",
        "https://hub.rat.dev",
        "https://dockerproxy.com",
        "https://mirror.baidubce.com",
        "https://docker.m.daocloud.io",
        "https://docker.nju.edu.cn",
        "https://docker.mirrors.sjtug.sjtu.edu.cn",
        "https://docker.rainbond.cc",
        "https://mirror.ccs.tencentyun.com",
        "https://registry.docker-cn.com",
        "https://hub-mirror.c.163.com",
        "https://docker.1ms.run", 
        "https://doublezonline.cloud", 
        "https://dislabaiot.xyz", 
        "https://docker.fxxk.dedyn.io", 
        "https://docker.unsee.tech", 
        "https://docker.1panel.live", 
        "https://docker.nastool.de", 
        "https://docker.zhai.cm", 
        "https://docker.5z5f.com", 
        "https://a.ussh.net", 
        "https://docker.udayun.com", 
        "https://hub.geekery.cn",
        "https://noohub.ru", 
        "https://huecker.io",
        "https://dockerhub.timeweb.cloud",
        "https://0c105db5188026850f80c001def654a0.mirror.swr.myhuaweicloud.com",
        "https://5tqw56kt.mirror.aliyuncs.com",
        "https://docker.ckyl.me/",
        "https://docker.hpcloud.cloud"
    ]
}
EOF

# 5. 重新启动 Docker 服务
sudo systemctl daemon-reload
sudo systemctl start docker
```

## 三、部署结果验证

部署完成后，不建议只看页面是否打开。建议按“容器、后端、数据库、缓存、MQTT、业务页面”的顺序做一次完整验收。

### 1. 容器状态

```shell
cd /var/data
docker-compose ps
docker ps
```

所有核心容器应处于运行状态。若 `java`、`mysql`、`redis`、`emqx` 或 `nginx` 容器反复重启，先查看对应日志。

```shell
docker logs -n 200 java
docker logs -n 200 mysql
docker logs -n 200 redis
docker logs -n 200 emqx
docker logs -n 200 nginx
```

### 2. 后端服务

```shell
docker logs -n 300 java
```

重点确认没有持续出现以下错误：

* 数据库连接失败。
* Redis 认证失败。
* 授权证书读取失败。
* 端口占用。
* SQL 初始化失败。
* 时序数据库连接失败。

如果 MySQL 初始化较慢，后端第一次启动失败后可以等待 1-2 分钟再重启：

```shell
docker restart java
```

### 3. Web 页面

浏览器访问：

```text
http://服务器IP/
```

默认账号：

| 用户 | 密码 |
| --- | --- |
| `admin` | `admin123` |

登录后至少打开以下页面确认接口可用：

| 页面 | 验收点 |
| --- | --- |
| 首页 | 统计卡片和菜单正常加载 |
| 产品管理 | 列表可打开，新增按钮正常 |
| 设备管理 | 列表可打开，设备详情入口正常 |
| 系统管理 | 用户、角色、菜单页面可打开 |
| 授权页面 | 商业版可上传或查看授权信息 |

### 4. MQTT 服务

EMQX 控制台地址：

```text
http://服务器IP:18083/
```

默认账号：

| 用户 | 密码 |
| --- | --- |
| `admin` | `admin123` |

进入控制台后确认监听器正常。随后可以按 [产品到设备的完整闭环](https://www.fastbee.cn/doc/business/v2/start/product-device-flow.html) 使用 MQTTX 建立连接。

### 5. 最小业务验证

部署验收的最终标准不是容器运行，而是平台能完成一条真实业务链路：

1. 新建产品。
2. 定义物模型。
3. 发布产品。
4. 新建设备。
5. MQTTX 连接平台。
6. 上报属性数据。
7. 平台下发指令。

完整步骤请查看 [产品到设备的完整闭环](https://www.fastbee.cn/doc/business/v2/start/product-device-flow.html)。

## 四、docker教程

docker 是一个开源的应用容器引擎，可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的镜像中，然后发布到任何流行的 Linux 或 Windows 操作系统机器上，也可以实现虚拟化。容器是完全使用沙箱机制，相互之间不会有任何接口（类似 iPhone 的 app），更重要的是容器性能开销极低。

### 1.安装docker

::: tip

* docker镜像默认从官方仓库获取，如果下载慢，可以配置为国内的镜像仓库，[参考教程](https://blog.csdn.net/Lyon_Nee/article/details/124169099)
* 安装桌面端，已经包含docker引擎和docker compose。服务器一般单独安装docker engine和docker compose
  :::

#### Linux安装docker

* <a href="https://docs.docker.com/desktop/setup/install/linux/" target="_blank" rel="nofollow">docker桌面端（本地使用）</a>
* <a href="https://docs.docker.com/engine/install/" target="_blank" rel="nofollow">docker引擎（服务器使用）</a>
* <a href="https://docs.docker.com/compose/install/" target="_blank" rel="nofollow">安装docker compose</a>

#### Windows安装docker桌面端

* <a href="https://blog.csdn.net/GCQ19961204/article/details/125665948" target="_blank" rel="nofollow">参考教程</a>（推荐安装WSL子系统和Windows Terminal，然后安装Docker）
* <a href="https://docs.docker.com/desktop/setup/install/windows-install/" target="_blank" rel="nofollow">docker安装教程</a>

#### Mac安装docker桌面端

* <a href="https://docs.docker.com/desktop/setup/install/mac-install/" target="_blank" rel="nofollow">docker安装教程</a>

### 2.docker常用命令

```shell
docker -v                                # 查看docker版本，检查是否安装成功
docker ps                                # 查看运行的容器
docker ps -a                             # 查看所有容器
docker images                            # 查看本地镜像
docker info                              # 查看docker的系统级信息
docker pull [image]                      # 拉取镜像
docker run  [image]                      # 运行容器
docker restart  [container]              # 重启容器
docker stop [container]                  # 停止容器
docker stats [container]                 # 查看容器资源使用情况
docker inspect [container]               # 查看容器元数据
docker logs -n 1000 [container]          # 查看容器的前1000条日志信息
docker exec -it [container] /bin/bash    # 进入运行中的容器内部
docker save nginx:latest > nginx.tar     # 保存单个镜像
docker load -i nginx.tar                 # 从tar文件加载镜像

docker network create -d bridge fastbee-bridge         # 创建一个新的网络,命名为fastbee-bridge
docker network ls                                      # 显示所有网络
docker network connect fastbee-bridge test             # test容器加入到自定义网络
docker inspect fastbee-bridge                          # 查看fastbee-bridge网络里的容器
```

### 3.docker网络模式

docker中有5中网络模式，可以通过--net=\*\*\*指定容器的网络模式。

```shell
bridge模式     # 默认，外界访问容器内的服务时，需要访问宿主机的 IP 以及宿主机的端口 port
host模式       # 容器的IP地址即为宿主机的IP地址
container模式  # 容器会共享其他容器的网络环境
overlay模式    # 跨主机通讯
none模式       # 不为容器构造任何网络环境，容器只能使用127.0.0.1的本机网络
```

### 4.docker网桥

网桥用于各个容器间通讯，如果各个容器是单独运行的，需要使用下面命令创建网桥

```shell
docker network create -d bridge fastbee-bridge
```

### 5.docker-compose常用命令

```shell
docker-compose -v        # 查看docker-compose版本，检查是否安装成功
docker-compose up -d     # 构建并启动服务中容器
docker-compose down      # 停止并删除服务中容器
docker-compose ps        # 列出服务中所有容器
docker-compose start     # 启动服务中的容器
docker-compose stop      # 停止服务中正在运行的容器
docker-compose restart   # 重启服务中的容器
docker-compose logs      # 查看服务中容器的输出
docker-compose pull      # 拉取服务中依赖的镜像
docker-compose config    # 验证并查看compose文件配置
```

## 五、关联文档

* [产品到设备的完整闭环](https://www.fastbee.cn/doc/business/v2/start/product-device-flow.html)
* [运行维护](https://www.fastbee.cn/doc/business/v2/install/operation-maintenance.html)
* [升级指南](https://www.fastbee.cn/doc/business/v2/install/upgrade-guide.html)
* [多数据源支持](https://www.fastbee.cn/doc/business/v2/install/data-source.html)
* [时序数据库](https://www.fastbee.cn/doc/business/v2/install/time-series-database.html)

## 常见问题

### 用 Docker 部署商业版前需要准备什么？

一台 Linux 服务器，并确保 Docker、Docker Compose、网络访问与业务端口可用，同时准备好授权证书和安装密码。

### 部署完成后如何确认成功？

后端、前端、MySQL、Redis、EMQX 等容器正常运行，并按授权配置页完成授权校验后可以登录平台，即视为部署成功。

### 二次开发后怎么更新部署？

替换 /var/data 目录下的后端 jar 包与前端 vue 目录内容后重新启动容器；升级前建议备份数据库与配置。
