# Multi SimAdmin 一个用于聚合管理多个 [SimAdmin](https://github.com/3899/SimAdmin) 实例的轻量本地运维面板。 ## 功能 - 只需要在 `config.json` 配置多个 SimAdmin 地址。 - Animal Island / 动森风格 Dashboard:暖米色背景、棕色文字、Ribbon 飘带标题、NookPhone 应用格、胶囊按钮与波点卡片。 - UI 内直接新增、编辑、删除设备地址,配置实时写入本地 `config.json`,并提供返回首页入口。 - 实例舰队列表、状态筛选、搜索、当前设备摘要。 - 支持无密码实例状态读取;有密码实例可通过本地服务代登录并保持会话。 - 统一代理 SimAdmin API,内置 API 工作台,便于读取/调试设备、SIM、网络、短信、eSIM、OTA 等接口。 - 保留原始 SimAdmin 页面 iframe 嵌入;若目标站禁止 iframe,可一键在原站打开。 - 敏感配置留在本地 `config.json`,仓库只提交 `config.example.json`。 ## 快速开始 ```bash cp config.example.json config.json npm install npm start ``` 默认访问: ## 配置 编辑 `config.json`: ```json { "server": { "host": "0.0.0.0", "port": 8788 }, "instances": [ { "id": "simadmin-open", "name": "无密码 SimAdmin", "url": "http://192.168.68.1:3000", "description": "密码保护关闭或尚未配置密码的实例", "auth": { "mode": "none" }, "tags": ["open"] }, { "id": "simadmin-password", "name": "有密码 SimAdmin", "url": "http://192.168.68.2:3000", "description": "服务端代登录并保存会话 Cookie;密码只保存在本地 config.json", "auth": { "mode": "password", "password": "CHANGE_ME" }, "tags": ["password"] } ] } ``` 字段说明: - `id`:唯一标识,只能包含字母、数字、下划线、短横线、点号。 - `name`:页面显示名称。 - `url`:SimAdmin 原始访问地址。 - `description`:可选描述。 - `auth.mode`:`none` 表示无密码;`password` 表示由本地聚合服务代登录。 - `auth.password`:可选。本地保存后可自动刷新会话;不要提交真实密码。 ## 常用命令 ```bash npm test npm start ``` ## 注意 - 当前项目是本地管理面板,不修改 SimAdmin 本体。 - `config.json` 可能包含真实设备地址和密码,已在 `.gitignore` 中排除。 - 部分写操作接口(短信发送、网络模式、频段/小区锁定等)会改变设备状态,执行前请确认目标实例。