问题:容器重建换 IP 后,网关与 admin-ui 仍往旧 IP 打,/openapi 与 /api 整片 502,必须手动重启 nginx 容器才恢复(2026-11-03 实机踩到)。 编排 - admin-svr / openapi / admin-ui / docs 增加 healthcheck - admin-ui、gateway、nginx 改 depends_on: condition: service_healthy, 保证 nginx 启动时后端已就绪 - 新增 deploy/compose.memlimit.yml(原来只存在于某台演示机上): 全套上限 8.5G、实测常驻 2G,留给同机其它服务 20G+; MySQL buffer pool 128M→768M、max_connections 151→300 nginx - gateway / admin-ui / iotlcm.conf 示例 统一改 resolver 127.0.0.11 valid=10s + upstream zone/resolve:运行期跟随 IP 变化,不必重启(实测 6s 内自愈)
iotLCM 物联网卡全生命周期管理平台
iotLCM 面向物联网 SIM 卡的全生命周期管理:卡片从运营商渠道入库 → 划拨给代理商 → 激活 / 续费 / 停机 → 流量与状态同步 → 销户。
平台对接中国移动 OneLink、中国电信 5G CMP、中国联通 10646 等运营商接口,支持以共享 Token 模式接入三方渠道商,并提供对外的 OpenAPI 服务。
文档
| 手册 | 内容 | 入口 |
|---|---|---|
| 使用手册 · Web 管理端 | 查卡、智能诊断、业务受理、套餐与定价、库存出入库、通道管理、企业用户与角色、工单、API 凭证、常见问题 | http://open.5iot.com:5051/docs/manual/web/ |
| 使用手册 · 小程序端 | 首页公开查卡、卡片排查、客户管理与划拨、工单、批次执行日志、消息与个人中心 | http://open.5iot.com:5051/docs/manual/mini-program/ |
| 部署手册 | 推荐环境、一键部署、配置说明、离线部署、拆分部署、自建镜像、运维与排错 | http://open.5iot.com:5051/docs/deploy/ |
| OpenAPI 合同 | 鉴权、V3 接口、旧版兼容接口、运营商能力代理 | http://open.5iot.com:5051/docs/openapi/ |
| 共享 Token 接口 | 共享 Token 获取与白名单转发 | http://open.5iot.com:5051/docs/openapi/operator/ |
在线文档站:http://open.5iot.com:5051/docs/。文档源码在本仓 docs/ 目录,随平台一起发布(自建实例访问 http://<平台地址>:8019/docs/)。
快速开始
需要 Docker 20.10+ 与 Docker Compose v2,单机 4 核 / 8 GB 起。预构建镜像已就绪,不需要编译:
git clone <仓库地址> iotlcm
cd iotlcm/deploy
docker compose up -d
首次启动自动完成建库建表、种子数据导入与时序库建表,约 1 分钟。启动完成后访问 http://127.0.0.1:8009。
默认账号口令、端口清单、可选服务(接口挡板 / 飞书通知 / 反向代理)、修改口令与上线检查,见 deploy/README.md 与部署手册。
业务端口默认只绑定
127.0.0.1。需要局域网或公网访问时,用--profile with-nginx起反向代理,或改用--profile with-gateway的单端口入口(默认 5051)。
功能概览
| 域 | 能力 |
|---|---|
| 卡资产 | 卡信息、批量导入、入库 / 库存 / 出库、批量开停复机、续费、变更套餐、达量断网 |
| 通信管理 | 通道与接入模板、运营商能力对接、共享 Token 接入三方渠道、通道缓存转发 |
| 资费 | 套餐与流量池、定价、生效与到期策略 |
| 代理商 | 代理商与分佣、划拨与回收 |
| 数据同步 | 流量 / 状态 / IMEI 全量同步与增量对齐、历史账期时序数据 |
| OpenAPI | V3 接口、旧版兼容接口、运营商能力代理(白名单转发 / 共享 Token) |
| 运营 | 工单、预警、执行日志、审计、智能诊断 |
| 端 | Web 管理端、小程序 / H5 用户端 |
服务构成
| 目录 | 说明 | 镜像 tag |
|---|---|---|
admin-svr/ |
管理端后端(GoFrame) | iotlcm-admin-svr |
admin-ui/ |
管理端前端(Vue 3 + Vben Admin) | iotlcm-admin-ui |
openapi/ |
对外 API 网关 | iotlcm-openapi |
worker-svr/ |
异步执行(RabbitMQ 消费者、全量同步、批量任务) | iotlcm-worker-svr |
upstream-chan/ |
运营商 / 三方渠道对接层 | iotlcm-upstream-chan |
upstream-proxy/ |
通道缓存转发层 | iotlcm-upstream-proxy |
app/server/ |
用户端服务(GoFrame) | iotlcm-app-server |
app/app/ |
用户端前端(uni-app,基于 unibest) | iotlcm-app-web |
sms/ |
短信服务(HTTP / gRPC,阿里云 / 腾讯云) | iotlcm-sms |
bot/ |
飞书通知机器人(运维自用,可选) | iotlcm-bot |
docs/ |
文档站(VitePress)与 OpenAPI 合同 | iotlcm-docs |
onelink-mock/ |
OneLink 接口挡板(联调 / 演示,可选) | iotlcm-onelink-mock |
deploy/ |
Docker Compose 编排、数据库初始化、反向代理 / 单端口网关配置 | — |
各服务职责、配置项与本地运行方式见各自目录下的 README.md。
从源码构建
每个 Go 服务是独立模块,在对应目录内构建:
cd worker-svr && go build -o out/ . # 其余 Go 服务同理
前端:
cd admin-ui/vue && pnpm install && pnpm build
cd app/app && pnpm install && pnpm build
cd docs && npm ci && npm run build
一键编译全部 Go 服务 / 本地构建全部镜像:
make build # 编译检查
make images # 构建镜像(REGISTRY / VERSION 可覆盖)
各服务的 Dockerfile 位置与构建上下文见自建镜像。
版本与镜像
镜像统一发布在同一个仓库,用 tag 区分服务与版本:
<镜像仓库>/iotlcm/iotlcm:iotlcm-worker-svr-v1.0.4
└─ 仓库 ┘ └─ 服务名 ─┘└版本┘
| 服务 | 当前版本 |
|---|---|
| 除小程序线外 | v1.0.4 |
iotlcm-app-server / iotlcm-app-web |
v1.0.2(小程序线独立版本线) |
升级时固定到具体版本,不要使用 latest。
反馈
问题与建议请提 Issue,或联系平台维护者。
许可
本仓整体采用 Apache License 2.0。以下子目录基于上游 MIT 项目衍生,保留其原始许可:
| 目录 | 上游 | 许可 |
|---|---|---|
admin-ui/ |
Vben Admin | MIT,见 admin-ui/LICENSE |
app/app/ |
unibest | MIT,见 app/app/LICENSE |