Edge 部署
nexiot-edge 内置 Node-RED 和 Edge Agent。现在默认支持零参数启动:先把容器跑起来,再到 Node-RED 的 NexIoT 面板配置云端地址、部署码、远程管理和 MQTT。
默认值
| 配置 | 默认值 |
|---|---|
| 服务端口 | 18880 |
| 监听地址 | 0.0.0.0 |
| 数据目录 | /app/data |
| Node-RED 编辑器 | /red |
| Node-RED HTTP 节点入口 | /api/nodered |
| Edge ID | edge-{hostname} |
警告
生产环境建议挂载 /app/data,否则删除容器后 Node-RED 流程、Edge Token、manifest 缓存都会丢失。
Docker Run
bash
mkdir -p /opt/nexiot-edge/data
docker run -d \
--name nexiot-edge \
--restart unless-stopped \
-v /opt/nexiot-edge/data:/app/data \
-p 18880:18880 \
nexiot-edge:latest访问:
text
http://设备IP:18880/red健康检查:
bash
curl http://127.0.0.1:18880/api/healthDocker Compose
docker-compose.yml:
yaml
services:
nexiot-edge:
image: nexiot-edge:latest
container_name: nexiot-edge
restart: unless-stopped
ports:
- "18880:18880"
volumes:
- ./data:/app/data启动:
bash
mkdir -p ./data
docker compose up -d
docker compose logs -f停止:
bash
docker compose down首次配置
打开 http://设备IP:18880/red,进入右侧 NexIoT 面板。
按顺序配置:
- 设置本地管理员账号密码。
- 填写 Edge 名称。
- 填写云端地址,例如
http://iot.example.com/api。 - 填写部署码,或直接填写 Edge Token。
- 选择远程管理模式。
- 保存并应用。
保存后,Edge 会尝试使用部署码 claim 云端。成功后会把长期 token、MQTT 参数等保存到:
text
/app/data/config.json后续重启不需要再填写部署码。
提示
如果云端 WebSocket 不是默认路径,在面板里单独填写 WebSocket URL。常见值是 ws://域名/ws/node-red/edge 或 ws://域名/api/ws/node-red/edge,以实际 Nginx 配置为准。
可选启动参数
零参数可以启动。只有需要固定身份或限制访问范围时,再加环境变量。
固定 Edge ID:
bash
docker run -d \
--name nexiot-edge \
--restart unless-stopped \
-e EDGE_ID=edge-site-001 \
-v /opt/nexiot-edge/data:/app/data \
-p 18880:18880 \
nexiot-edge:latest只允许本机访问:
bash
docker run -d \
--name nexiot-edge \
--restart unless-stopped \
-v /opt/nexiot-edge/data:/app/data \
-p 127.0.0.1:18880:18880 \
nexiot-edge:latest验证
查看容器:
bash
docker ps查看日志:
bash
docker logs -f nexiot-edge查看健康状态:
bash
curl http://127.0.0.1:18880/api/health检查 token 是否已保存:
bash
docker exec nexiot-edge node -e "const c=require('/app/data/config.json'); console.log({edgeId:c.edgeId, hasToken:!!(c.cloud&&c.cloud.token)})"常见问题
访问不到 Node-RED
确认端口映射:
bash
docker psNode-RED 地址是:
text
http://设备IP:18880/red不是 1880。
重启后配置丢失
原因通常是没有挂载数据目录。必须保留:
bash
-v /opt/nexiot-edge/data:/app/data云端没有看到 Edge
检查:
- 云端地址是否正确,通常要包含
/api。 - 部署码是否有效。
/app/data/config.json里是否已有 token。curl http://127.0.0.1:18880/api/health的lastError。
手动设置 Edge ID 时不要用中文
EDGE_ID 会进入 HTTP Header,只使用英文、数字、短横线、下划线或点。
正确示例:
text
edge-site-001
edge_warehouse_01
edge.shanghai.01中文名称放在 Edge 名称里,不要放在 Edge ID 里。
最小检查清单
- 容器
Up。 /app/data已挂载。http://设备IP:18880/red能打开。NexIoT面板已保存云端地址和部署码。- 健康接口
status=running。 config.json已保存 token。