面向物联网设备接入、视频流处理、数据采集与可视化的本地一体化环境。通过 Docker Compose 一键启动后端、前端、数据库、对象存储、MQTT Broker、流媒体与网关代理,便于快速搭建原型与联调。
项目核心目标:为 IoT 采集、消息分发与视频流的整合提供一套可复用的本地开发环境,降低跨组件联调成本。
快速上手:
.env.example 中所需的环境变量(可复制为 .env 并修改密码等敏感项)。docker compose up -d --build
http://localhost:3000http://localhost:21006以下内容基于 docker-compose.yml 与当前目录结构整理。
backend:后端服务(FastAPI),负责 API、业务逻辑、设备数据处理与对象存储交互。
8000(容器内部使用,由 Nginx 反代)./backendfrontend:前端(Next.js),负责数据可视化与管理界面。
3000(开发访问)./frontenddb:TimescaleDB(PostgreSQL),用于时序数据与业务数据存储。
5432(仅本地或容器间访问)postgres_datamosquitto:MQTT Broker,IoT 设备上报与控制指令通道。
11883:1883(MQTT 明文)19001:9001(MQTT over WebSocket)./mosquittominio:对象存储,文件/视频/图片等非结构化数据存储。
9000(API)9001(控制台)minio_datazlmediakit:流媒体服务,承载 GB28181/HTTP-FLV 等流协议转换。
8080:80(HTTP API & HTTP-FLV)10000:10000/udp(GB28181 RTP 端口范围)./zlmediakitnginx:统一入口反向代理,聚合前端、后端与对象存储入口。
21006:80./nginx.conf3000:前端开发访问入口。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 镜像使用默认证书与默认凭据,仅用于本地开发测试。