schema/init.sql 里 sim_yd_mock_v5 通道的 app_key/app_secret 仍是内网挡板的老值(100059999270000006 / 老口令),与开源版挡板 onelink-mock 的默认凭据(demo_appid / demo_password,见 onelink-mock/internal/service/store.go 的 defaultStore())不一致,导致 chan 侧向挡板换 Token 失败。 改为挡板当前实际默认值,并在注释里标注取值来源。
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 |