版本号与功能一一对应:小程序线功能停在 v1.0.2,镜像 tag 也停在 v1.0.2, 平台后续发 v1.0.5 时它不动。 - deploy/docker-compose.yml:app-server / app-web 两行回退 v1.0.2 - Makefile:IMAGE_MAP 增加第 5 列「固定版本」,app 两行填 v1.0.2, 本地构建与 CI 行为一致 - 根 README:新增「小程序线是独立版本线」说明 - app/README.md:标注本目录对应 v1.0.2,不跟随平台 tag - 文档:deploy/README 版本表、build-image 的 tag 表与说明、 offline / prerequisites / configuration 示例 tag 全部回退 v1.0.2 CI 侧由 Jenkins 流水线的 PIN 表(app|v1.0.2)保证:tag 构建自动跳过 app, 需要重建时单独触发 SERVICES=app VERSION=v1.0.2。
iotLCM —— 物联网卡全生命周期管理平台(开源版)
一站式物联网 SIM 卡管理平台:卡片从运营商渠道入库 → 划拨给代理商 → 激活 / 续费 / 停机 → 流量与状态同步 → 销户。对接中国移动 OneLink、中国电信 5G CMP、中国联通 10646 等运营商接口,并通过共享 Token 模式接入多家三方渠道商。
单仓多服务:平台全部后端服务、前端应用、文档站与部署编排都在本仓,一次 clone 即可获得完整源码。
目录
| 目录 | 说明 | 镜像 |
|---|---|---|
admin-svr/ |
管理端后端(GoFrame):卡信息、通信管理、资费、告警工单、统计、账号治理 | iotlcm-admin-svr |
admin-ui/ |
管理端前端(Vue 3 + Vben Admin) | iotlcm-admin-ui |
openapi/ |
对外 API 网关:V3 接口、旧版兼容、运营商能力代理 | iotlcm-openapi |
worker-svr/ |
异步执行:RabbitMQ 消费者、全量同步、批量任务 | iotlcm-worker-svr |
upstream-chan/ |
运营商 / 三方渠道对接层(OneLink、CMP、10646、共享 Token) | iotlcm-upstream-chan |
upstream-proxy/ |
通道缓存转发层(挡在 chan 前面的本地缓存) | iotlcm-upstream-proxy |
app/server/ |
用户端服务(GoFrame) | iotlcm-app-server |
app/app/ |
用户端前端(uni-app,基于 unibest,MIT) | 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 编排与数据库初始化 | 参考 deploy/README.md |
每个子目录都有自己的 README.md,说明该服务的职责、配置项与本地运行方式。
快速开始(只跑起来)
不需要编译,直接用预构建镜像拉起整栈:
git clone <本仓库地址> iotlcm
cd iotlcm/deploy
docker compose up -d
首次启动自动完成 MySQL 建库建表(95 张)、种子数据导入、时序库建表,实测 30 秒 ~ 1 分钟。
默认账号 admin,口令见 deploy/README.md(正式使用前必须修改)。详细的端口、配置项、可选服务(挡板 / 飞书通知 / 反向代理)、离线部署与排错,见 deploy/README.md 与文档站 docs/deploy/。
对外端口默认只监听
127.0.0.1,需要局域网或公网访问时,用deploy/里的 nginx 编排改绑定地址,或并入宿主机已有的反向代理。
从源码构建
每个 Go 服务是独立模块(各自带 go.mod),在对应目录内构建:
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 # 所有 Go 服务编译
make images # 本地构建全部镜像
构建镜像所需的 Dockerfile 位置与构建上下文,见 docs/docs/deploy/build-image.md。
发布与镜像
所有镜像发布到同一个镜像仓库,用 tag 区分服务与版本:
<镜像仓库>/iotlcm/iotlcm:iotlcm-worker-svr-v1.0.4
└─ 仓库 ┘ └─ 服务名 ─┘└版本┘
打 v* tag 会经由内网 CI 构建镜像并推送,见 .gitea/workflows/。
小程序线(app/)是独立版本线,不跟随平台 tag:
| 服务 | 当前版本 | 说明 |
|---|---|---|
| 其余业务服务 | v1.0.4 |
跟随平台 tag |
iotlcm-app-server / iotlcm-app-web |
v1.0.2 |
直连版本号与功能一一对应,功能未变就不动版本 |
CI 里用一张 PIN 表维护这条规则(app|v1.0.2):平台发新 tag 时自动跳过 app,需要重建小程序线时单独触发
SERVICES=app VERSION=v1.0.2。
许可
本仓整体采用 Apache License 2.0。
以下子目录基于上游 MIT 项目衍生,保留其原始许可:
| 目录 | 上游 | 许可 |
|---|---|---|
admin-ui/ |
Vben Admin | MIT,见 admin-ui/LICENSE |
app/app/ |
unibest | MIT,见 app/app/LICENSE |