ThingBoard Config Mate 是一个专为 ThingsBoard Docker 部署环境设计的轻量级、可视化配置管理工具。它旨在解决手动修改环境变量繁琐、容易出错的问题,提供直观的 Web 界面来管理配置、监控状态并控制服务。
- 🛠️ 可视化配置管理:提供直观的表单界面,轻松修改数据库、缓存、消息队列等几十项核心参数,无需直接编辑
.env文件。 - 🚀 Docker 集成:深度集成 Docker Compose,支持一键停止、重启服务,并根据应用类型(Cloud/Edge)自动识别服务名称。
- 📊 实时状态监控:自动检测容器运行状态,并通过右上角徽章实时反馈(Running/Stopped)。
- 📜 实时日志查看:内置实时日志查看器,支持自动滚动、换行切换,方便在重启服务后立即排查问题。
- 💻 源码模式:支持在 UI 模式和源码(Raw Text)模式间切换,满足高级用户直接编辑配置的需求。
- 🔌 双模式运行:
- App Mode:自动以独立窗口模式启动(类似桌面软件)。
- Web Mode:支持浏览器远程访问,适合服务器部署。
- 📦 离线部署:支持通过 Docker 镜像离线包部署,也保留
pkg二进制构建能力。
推荐将 Config Mate 作为独立容器运行,并挂载现场安装包根目录与 Docker Socket:
# 在 sprixin-iotcloud 或 sprixin-iotedge 根目录执行
cat > .config-mate.env <<EOF
DEPLOY_ROOT=$(pwd)
CONFIG_MATE_PORT=3300
CONFIG_MATE_PASSWORD=请替换为强口令
EOF
docker load -i images/tb-config-mate_latest.tar.gz
docker compose --env-file .config-mate.env up -d config-mate访问 http://服务器IP:3300 后可在 Web 控制台中管理 postgres、redis、kafka、cassandra、netdata、wechat 以及 iotcloud/iotedge。
APP_TYPE 可选。标准安装包中存在 services/iotcloud 会自动识别为 Cloud,存在 services/iotedge 会自动识别为 Edge;如果业务 .env 中写了 APP_TYPE 或 APPTYPE,也会自动读取。
注意:该模式会挂载
/var/run/docker.sock,Config Mate 容器具备宿主机 Docker 管理权限,请务必设置CONFIG_MATE_PASSWORD并仅在可信网络开放端口。
如果您本机已安装 Node.js (v18+):
-
进入项目目录:
cd tb-config-mate -
安装依赖:
npm install
-
启动开发服务器:
# 使用 nodemon 启动热重载开发模式,避免每次重启都打开新窗口 npm run dev
为了在没有 Node.js 环境的服务器上运行,我们可以将其打包为独立可执行文件。
-
构建二进制文件:
npm run build
构建完成后,
dist/目录下会生成适用于 Linux、macOS 和 Windows 的可执行文件。 -
部署: 将对应的二进制文件(例如
tb-config-mate-linux)上传到服务器的docker-compose.yml同级目录。 -
运行:
chmod +x tb-config-mate-linux ./tb-config-mate-linux
工具会自动打开本地浏览器(如果支持),或者您可以访问控制台输出的地址(默认
http://localhost:3300)。
- 配置修改:在 Web 界面中修改对应配置项。修改后,"保存配置" 按钮会变色提示。
- 保存与应用:
- 仅保存配置:只更新
.env文件,不重启服务。 - 保存并重启服务:更新
.env文件并执行docker compose restart。
- 仅保存配置:只更新
- 服务控制:
- 点击顶部的 停止服务 / 重启服务 按钮可直接控制容器。
- 点击 实时日志 按钮可打开日志窗口,监控服务启动日志。
- 状态监控:
- 右上角的胶囊徽章会显示
Running(绿色) 或Stopped(灰色),每 5 秒自动刷新。
- 右上角的胶囊徽章会显示
- 后端:Node.js (原生 HTTP 模块, 无 Express 依赖以减小体积)
- 前端:HTML5, CSS3, Vanilla JS
- 打包:Vercel Pkg
- 工具默认端口为
3300。 - 请确保运行用户有执行
docker命令的权限。 - 工具会优先读取目录下的
.env文件。
MIT