ThingsBoard Edge Ubuntu 升级指南:基于 .deb 包的升级流程与实现原理
物联网后端数据可视化消息队列【免费下载链接】thingsboardAll-in-one IoT Platform - Device management, data collection, processing and visualization.项目地址https://gitcode.com/GitHub_Trending/th/thingsboard点击查看免费下载本篇技术指南围绕 ThingsBoard Edge 在 Ubuntu Server 上通过.deb安装包完成版本升级的完整流程展开覆盖「升级前准备 → 下载安装新包 → 数据库升级 → 启动服务」四大环节并结合仓库中生成这些升级指令的后端源码说明指令模板的占位符替换与升级路径判定机制。读完本文你将掌握从备份数据库到完成 Edge 版本升级的端到端实操方法并能理解升级指引在系统内部是如何被动态生成与裁剪的。一、升级指令从哪来模板文件与运行时渲染本文所依据的核心文档是仓库中的 Ubuntu 升级指令模板。它本身是一份带占位符的 Markdown 模板实际展示给运维人员的升级指引由后端服务在运行时动态渲染#### Upgrading to ${TB_EDGE_VERSION}EDGEPE ThingsBoard Edge package download: wget https://dist.thingsboard.io/tb-edge-${TB_EDGE_TAG}pe.deb Install package: sudo dpkg -i tb-edge-${TB_EDGE_TAG}pe.deb ${UPGRADE_DB}模板中的三个关键占位符含义如下占位符含义替换来源${TB_EDGE_VERSION}升级目标版本号DefaultEdgeUpgradeInstructionsService中按目标 Edge 版本注入${TB_EDGE_TAG}目标版本的 tag不带pe后缀通过getTagVersion(edgeVersion)生成${UPGRADE_DB}数据库升级步骤内容可能为空由版本图version graph判断该版本是否需要更新数据库在 DefaultEdgeUpgradeInstructionsService.java 的getLinuxUpgradeInstructions方法中系统会读取ubuntu/instructions.md模板逐一完成占位符替换${TB_EDGE_TAG}被替换为getTagVersion(edgeVersion)${TB_EDGE_VERSION}与${FROM_TB_EDGE_VERSION}分别被替换为升级目标版本与当前版本而${UPGRADE_DB}则根据该版本是否需要执行数据库迁移来决定填充完整步骤还是替换为空字符串。仓库中同一目录下还有 CentOS 升级指令模板其流程完全一致只是安装包格式从.deb换成了.rpm安装命令从sudo dpkg -i换成了sudo rpm -Uvh。这说明 Ubuntu 与 CentOS 的升级链路共享同一套准备/启动流程模板仅包管理与安装命令不同。二、升级前准备停止服务与备份数据库升级操作的第一步来自 upgrade_preparing.md该模板在执行安装前会插入到升级指引的最前面。1. 停止 ThingsBoard Edge 服务在下载新版本安装包之前必须先停止正在运行的 Edge 服务sudo systemctl stop tb-edge2. 检查数据库大小与磁盘空间备份前要确认磁盘有足够空间容纳数据库备份。先查看tb_edge数据库的当前大小sudo -u postgres psql -c SELECT pg_size_pretty( pg_database_size(tb_edge) );再查看根分区的可用空间df -h /3. 执行数据库备份确认空间充足后使用pg_dump将整个tb_edge数据库导出为备份文件sudo -Hiu postgres pg_dump tb_edge tb_edge.sql.bak生成后务必检查备份文件是否创建成功、大小是否合理。升级前做好数据库备份是这套指引中不可跳过的安全步骤一旦升级过程中出现问题可以通过该备份恢复。三、下载并安装新版 .deb 安装包准备工作完成后进入 Ubuntu 升级指令模板 的核心步骤。首先从官方分发站点下载目标版本的安装包wget https://dist.thingsboard.io/tb-edge-${TB_EDGE_TAG}pe.deb在实际渲染后的指引中${TB_EDGE_TAG}会被替换为具体版本号例如3.8.0最终下载的即为tb-edge-3.8.0pe.deb。随后用dpkg安装该包sudo dpkg -i tb-edge-${TB_EDGE_TAG}pe.debdpkg -i会完成软件包的解析与安装将 ThingsBoard Edge 的服务脚本、配置目录/etc/tb-edge/conf/、可执行脚本/usr/share/tb-edge/bin/等安装到位。四、数据库升级upgrade.sh 与 --fromVersion 参数升级指引中的${UPGRADE_DB}占位符在这一步被展开为完整的数据库升级说明其内容来自 upgrade_db.md。首先是一个重要提示包安装程序可能询问是否合并merge你的 tb-edge 配置推荐选择 merge 选项以确保之前的所有配置参数如云端连接密钥、端口配置等不会被覆盖。随后执行常规升级脚本并显式传入当前版本号sudo /usr/share/tb-edge/bin/install/upgrade.sh --fromVersion${FROM_TB_EDGE_VERSION}${FROM_TB_EDGE_VERSION}会被替换为 Edge 当前运行的版本号。该脚本基于--fromVersion参数确定从哪个版本开始执行数据库 schema 迁移逐级应用升级 SQL仓库application/src/main/data/upgrade/下保存了各版本的升级脚本将数据库结构对齐到新版本。从源码逻辑看是否执行这一步由版本图version graph中的isRequiresUpdateDb标志决定getLinuxUpgradeInstructions 方法会判断edgeUpgradeInfo.isRequiresUpdateDb()为true时把upgrade_db.md的内容拼接到指引中为false时则直接替换为空字符串——即某些小版本升级不需要迁移数据库指引中就不会出现这一步。五、启动服务并验证升级结果数据库升级完成后指引末尾会追加 start_service.md 的内容启动 ThingsBoard Edge 服务sudo systemctl start tb-edge在部分发行版上也可使用sudo service tb-edge start这是同一服务管理机制的封装形式。启动后可以结合 Ubuntu 安装指引 中的验证思路确认服务状态通过java -version确认 OpenJDK 25 环境正常ThingsBoard Edge 运行在 Java 25 上且要求 Ubuntu 22.04 LTS 或更新版本然后打开 Edge Web 界面http://localhost:8080若修改过 HTTP 绑定端口则为http://localhost:18080使用 ThingsBoard 租户凭证登录确认 Edge 已成功连接到云端并显示新版本号。六、升级可用性判定Edge 如何决定是否提示升级这套指令并非每次都无条件生成其触发条件同样定义在 DefaultEdgeUpgradeInstructionsService.java 的isUpgradeAvailable方法中系统会读取 Edge 设备SERVER_SCOPE属性中的版本键EDGE_VERSION_ATTR_KEY仅当 Edge 当前版本不低于3.6.0且低于平台ThingsBoard Server当前版本时才判定存在可用升级满足条件后getUpgradeInstructions根据用户在 UI 上选择的升级方式docker/ubuntu/centos分派到不同的模板组装逻辑并通过版本图逐级串联中间版本最后把「准备 → 下载安装 → 数据库升级如需→ 启动服务」拼接成一份完整的 Markdown 指引返回给前端展示。七、升级操作要点小结备份优先先停服、查磁盘空间、pg_dump导出tb_edge确认备份成功后再动手。包管理Ubuntu 使用wgetsudo dpkg -i tb-edge-${TB_EDGE_TAG}pe.deb若提示配置合并选择 merge 保留既有参数。数据库迁移执行sudo /usr/share/tb-edge/bin/install/upgrade.sh --fromVersion当前版本无需迁移数据库的版本指引会自动省略此步。启动验证sudo systemctl start tb-edge后通过 Web 界面登录确认版本与连接状态。版本约束Edge 版本须不低于 3.6.0 才会触发升级提示Java 25 环境要求 Ubuntu 22.04 LTS 及以上。以上流程与命令均可在仓库中溯源验证模板文件位于 upgrade/ubuntu/instructions.md配套的准备、数据库升级与启动模板分别位于 upgrade_preparing.md、upgrade_db.md 与 start_service.md指令的运行时组装逻辑见 DefaultEdgeUpgradeInstructionsService.java。赞分享物联网后端数据可视化消息队列【免费下载链接】thingsboardAll-in-one IoT Platform - Device management, data collection, processing and visualization.项目地址https://gitcode.com/GitHub_Trending/th/thingsboard点击查看免费下载相关推荐uni-app createMapContext 地图上下文 API 完整指南从创建到动态操控 map 组件uni app createMapContext 地图上下文 API 完整指南从创建到动态操控 map 组件 uni.createMapContext 是 u物联网后端数据可视化消息队列ThingsBoard Edge Docker 数据库升级完整指南upgrade_db 配置模板解析与升级流程实战ThingsBoard Edge Docker 数据库升级完整指南upgrade_db 配置模板解析与升级流程实战 本文以 ThingsBoard 开源仓库中物联网后端数据可视化消息队列ThingsBoard Edge 基于 Docker 的版本升级实战指南从准备工作到数据库迁移全流程ThingsBoard Edge 基于 Docker 的版本升级实战指南从准备工作到数据库迁移全流程 本文以 ThingsBoard 仓库中 Edge 的 D物联网后端数据可视化消息队列上一篇MiddyAWS Lambda的时尚Node.js中间件引擎下一篇Fitty完美自适应文本缩放解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Qt5.12 + MSVC2017 环境搭建:我重装了三次才顺,这 8 个坑你不用再踩

Qt5.12 + MSVC2017 环境搭建:我重装了三次才顺,这 8 个坑你不用再踩

插件化那 20 天写的是"程序内部怎么长"。这个专栏换个角度——从一堆源码到一个能交给别人用的安装包,中间那些把人卡住的事。 开篇先解决最前面的一步:环境。去年我接手一个老项目,硬性要求 Qt 5.12.11 MSVC2017。照着网上的教程…

2026/10/1 21:04:06 阅读更多 →
AMD 82 亿美元买下李飞飞的世界模型:当 Agent 开始操作物理世界,安全的游戏规则变了

AMD 82 亿美元买下李飞飞的世界模型:当 Agent 开始操作物理世界,安全的游戏规则变了

9 月 28 日,AMD 官宣了一笔让不少人意外的收购:以约 82 亿美元(约合人民币 550 亿元)全股票收购 World Labs——由「AI 教母」李飞飞 2024 年联合创办、专注空间智能与世界模型的研究实验室。交易预计年底前完成,李飞飞…

2026/10/1 21:04:06 阅读更多 →
咱们散户的心里话

咱们散户的心里话

咱们散户的心里话: 我想给你们更好的生活。 我想换掉那辆开了多年的旧车,想在周末带你们去更远的地方看海,想让孩子用上更优质的教育资源,想让家里的餐桌出现更多样、更健康的食材。 这些念头并非虚荣,而是我作为家庭支…

2026/10/2 21:18:19 阅读更多 →

最新新闻

Windows Server 2019 部署 Oracle 11g/19c 兼容性实战指南

Windows Server 2019 部署 Oracle 11g/19c 兼容性实战指南

简介:本资源是一份面向数据库运维工程师、系统集成人员及Windows平台Oracle初学者的实战部署指南,聚焦Windows Server 2019环境下Oracle 11g与19c服务端及客户端的全流程安装配置。内容覆盖操作系统基础搭建、Oracle双版本服务端部署、NIC网络聚合配置、…

2026/10/2 23:33:55 阅读更多 →
诚信的幕墙维保企业有哪些?华局建工深圳分公司综合实力推荐

诚信的幕墙维保企业有哪些?华局建工深圳分公司综合实力推荐

诚信的幕墙维保企业有哪些?这是深圳众多写字楼物业、商业综合体和小区业委会在面对玻璃自爆、胶缝老化、外墙渗漏时反复追问的问题。幕墙维修行业门槛参差不齐,散工队伍无资质上岗、修完找不到人、报价不透明等现象时有发生,业主最看重的其实是两个字—…

2026/10/2 23:33:55 阅读更多 →
Coze低代码平台二次开发与私有化部署迁移实战

Coze低代码平台二次开发与私有化部署迁移实战

上个月接了个活儿,客户在 Coze 上搭了二十多个工作流,一直跑得好好的,突然提出要“迁到内网”。原因倒也不复杂:知识库里累积了一批敏感业务数据,管理层明确说这些数据不能出内网;同时,他们还想…

2026/10/2 23:33:54 阅读更多 →
TP4056锂电池充电管理芯片:电路设计、优化与创新应用详解

TP4056锂电池充电管理芯片:电路设计、优化与创新应用详解

之前做了一个6槽18650充电座,客户要求低成本又能保证充电一致性,最后方案里选了TP4056做核心充电管理。这颗芯片在DIY圈和产品开发圈里都很常见,淘宝上一板下来几毛钱,外围元件加起来不到十颗,却能完成单节锂电池完整的…

2026/10/2 23:33:54 阅读更多 →
我把 OpenClaw 从聊天工具改造成测试工作流助理:一次完整实操复盘

我把 OpenClaw 从聊天工具改造成测试工作流助理:一次完整实操复盘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 23:33:53 阅读更多 →
Cursor实战案例-图形图像-45-流程图自动绘制:解析Mermaid语法文本并自动导出SVG流程图和拓扑架构图|TaoToken统一Key接入

Cursor实战案例-图形图像-45-流程图自动绘制:解析Mermaid语法文本并自动导出SVG流程图和拓扑架构图|TaoToken统一Key接入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 23:32:53 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 6:09:11 阅读更多 →