Thunderbolt本地CDN更新测试教程:local-update-server让应用更新离线可控

发布时间:2026/9/15 13:23:47
Thunderbolt本地CDN更新测试教程:local-update-server让应用更新离线可控 Thunderbolt本地CDN更新测试教程local-update-server让应用更新离线可控【免费下载链接】thunderboltAI You Control: Choose your models. Own your data. Eliminate vendor lock-in.项目地址: https://gitcode.com/GitHub_Trending/thund/thunderboltThunderbolt 是一款开源的 AI 桌面应用AI You Control自选模型、数据自有、拒绝厂商锁定。本教程带你使用项目内置的local-update-server脚本搭建本地 CDN离线完成应用更新的完整测试——从检查、下载、验签到重启全程可控、可重复。为什么需要本地 CDN 做更新测试 生产环境中Thunderbolt 的 Tauri 更新器会从云端 CDNCrabNebula拉取更新包。但在开发阶段直接依赖线上 CDN 有两个痛点依赖外网断网或网络不稳定时无法复现完整更新流程不可控无法随时制造有新版本的场景更无法验证签名校验逻辑而local-update-server就是一个本地更新服务器它模拟生产 CDN 的接口行为在localhost:8888上提供更新清单和安装包让检查更新 → 下载 → 重启的完整链路在本地闭环。核心实现见scripts/local-update-server.tslocal-update-server 工作原理本地服务器只暴露两类请求与生产 CDN 的行为一一对应请求行为GET /update/{平台}-{架构}/{当前版本}版本一致时返回204无更新否则返回 JSON 更新清单版本号、更新说明、下载地址、签名GET /bundle/{文件名}提供.tar.gz更新包的实际下载并拦截路径穿越攻击三个关键点新版本号自动读取自 src-tauri/tauri.conf.json无需手动改清单签名文件.sig与更新包配对返回更新器会严格校验——公钥不匹配会直接报签名不匹配版本一致时返回204客户端会安静地停留在当前版本方便验证无更新分支6步跑通本地更新测试最快配置方法⚠️ 前提准备两个仓库副本——旧版本模拟用户已安装的版本和新版本要更新到的版本。步骤1生成测试签名密钥对bun tauri signer generate -w ~/.tauri/test-update.key # 连续按两次 Enter 生成空密码这会生成私钥~/.tauri/test-update.key和公钥~/.tauri/test-update.key.pub。签名密钥的正式生成规范见docs/features/tauri-signing-keys.md步骤2让旧版本的更新器指向本地服务器在旧版本副本的 src-tauri/tauri.conf.json 中把updater.endpoints改为http://localhost:8888/update/{{target}}-{{arch}}/{{current_version}}并把pubkey替换为你刚生成的.key.pub文件内容。这一步是离线可控的核心——更新源从云端 CDN 切换到了你自己的本地 CDN。步骤3构建新版本带测试签名在新版本副本下执行TAURI_PRIVATE_KEY$(cat ~/.tauri/test-update.key) TAURI_PRIVATE_KEY_PASSWORD bun tauri build如果构建后没有生成.sig文件手动补签bun tauri signer sign -f ~/.tauri/test-update.key src-tauri/target/release/bundle/macos/Thunderbolt.app.tar.gz步骤4构建旧版本debug 模式更快在旧版本副本下执行bun tauri build --debug步骤5启动本地更新服务器bun run scripts/local-update-server.ts终端会提示Local update server running at http://localhost:8888之后每次更新请求都会打印日志请求路径、版本对比、下发的清单方便你逐条核对。步骤6运行旧版本并触发更新直接运行构建产物不要拖到/Applications目录open path/to/old-build/src-tauri/target/debug/bundle/macos/Thunderbolt.app登录后等待右下角的更新通知点击Download再点Restart更新流程即完成闭环。如何验证更新是否成功 客户端的更新状态机定义在 src/hooks/use-desktop-update.ts完整链路为checking → available → downloading → ready → 重启应用右下角的通知组件 src/components/update-notification.tsx 会对每个状态给出明确反馈状态界面提示checkingChecking for updates…availableA new version is available!附带新版本号downloadingDownloading update…readyUpdate ready! Restart to apply.errorUpdate failed附带错误原因如果你看到服务器返回204且客户端无任何提示说明版本一致时不打扰用户的逻辑也验证成功了。常见问题排查Troubleshooting现象原因解决No bundles found新版本构建未完成确认src-tauri/target/release/bundle/macos/下存在.tar.gzSignature mismatch公钥与签名私钥不配对确保旧版tauri.conf.json的pubkey与签名用私钥来自同一密钥对收不到更新204新版本号未高于旧版本提高新版本tauri.conf.json中的version后重新构建服务器连不上端口被占用检查 8888 端口是否被其他进程占用相关文档与源码官方完整文档docs/dev-tooling/local-cdn-for-app-update-testing.md本地更新服务器源码scripts/local-update-server.ts更新配置端点与公钥src-tauri/tauri.conf.json更新状态管理src/hooks/use-desktop-update.ts更新通知组件src/components/update-notification.tsx签名密钥管理docs/features/tauri-signing-keys.md小结一条命令启动的local-update-server让 Thunderbolt 的应用更新测试从依赖线上 CDN变成了本地离线闭环——版本对比、签名校验、下载安装、重启生效每一步都可观察、可复现是桌面应用更新流程调试的极简方案。【免费下载链接】thunderboltAI You Control: Choose your models. Own your data. Eliminate vendor lock-in.项目地址: https://gitcode.com/GitHub_Trending/thund/thunderbolt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考