logo
0
0
WeChat Login

IoT Flow

面向物联网设备接入、视频流处理、数据采集与可视化的本地一体化环境。通过 Docker Compose 一键启动后端、前端、数据库、对象存储、MQTT Broker、流媒体与网关代理,便于快速搭建原型与联调。

项目意义与快速上手

项目核心目标:为 IoT 采集、消息分发与视频流的整合提供一套可复用的本地开发环境,降低跨组件联调成本。

快速上手:

  1. 准备 .env.example 中所需的环境变量(可复制为 .env 并修改密码等敏感项)。
  2. 启动服务:
    docker compose up -d --build
  3. 访问入口:
    • Web 前端:http://localhost:3000
    • Nginx 统一入口:http://localhost:21006

主要构成与容器说明

以下内容基于 docker-compose.yml 与当前目录结构整理。

  • backend:后端服务(FastAPI),负责 API、业务逻辑、设备数据处理与对象存储交互。
    • 端口:8000(容器内部使用,由 Nginx 反代)
    • 目录:./backend
  • frontend:前端(Next.js),负责数据可视化与管理界面。
    • 端口:3000(开发访问)
    • 目录:./frontend
  • db:TimescaleDB(PostgreSQL),用于时序数据与业务数据存储。
    • 端口:5432(仅本地或容器间访问)
    • 数据卷:postgres_data
  • mosquitto:MQTT Broker,IoT 设备上报与控制指令通道。
    • 端口:
      • 11883:1883(MQTT 明文)
      • 19001:9001(MQTT over WebSocket)
    • 目录:./mosquitto
  • minio:对象存储,文件/视频/图片等非结构化数据存储。
    • 端口:
      • 9000(API)
      • 9001(控制台)
    • 数据卷:minio_data
  • zlmediakit:流媒体服务,承载 GB28181/HTTP-FLV 等流协议转换。
    • 端口:
      • 8080:80(HTTP API & HTTP-FLV)
      • 10000:10000/udp(GB28181 RTP 端口范围)
    • 目录:./zlmediakit
  • nginx:统一入口反向代理,聚合前端、后端与对象存储入口。
    • 端口:21006:80
    • 配置:./nginx.conf

端口开放目的说明

  • 3000:前端开发访问入口。
  • 8000:后端 API 端口(建议通过 Nginx 入口访问)。
  • 5432:数据库访问端口(仅本地/容器内管理或调试)。
  • 11883:MQTT 明文端口(联调与本地测试)。
  • 19001:MQTT over WebSocket,供 Web 端连接。
  • 9000:MinIO API,用于对象存储读写。
  • 9001:MinIO 控制台管理。
  • 8080:ZLMediaKit HTTP API 与 HTTP-FLV 入口(调试或内网使用)。
  • 10000/udp:GB28181 RTP 端口范围。
  • 21006:Nginx 统一入口(对外聚合前端、后端与对象存储)。

免责声明与证书说明

  • 当前 minio 镜像使用默认证书与默认凭据,仅用于本地开发测试。
  • 如需在生产环境部署对象存储,将来会替换为 Apache 2.0 许可的 RustFS 等其他合规对象存储服务。
  • MQTT、数据库、流媒体等组件也应根据生产环境安全要求配置 TLS、鉴权与网络隔离策略。

About

RustSaber的物联网数字孪生开源解决方案

Language
TypeScript85.4%
Python14.1%
JavaScript0.1%
CSS0.1%
Others0.3%