首页 > 开源 > Nebula 正式更名 BucketForge!基于 Rust + Tauri 的开源多云存储管理器发布 v1.14.0

Nebula 正式更名 BucketForge!基于 Rust + Tauri 的开源多云存储管理器发布 v1.14.0

OSChina资讯 2026-10-14 11:57 3 阅读 查看原文

最近一直在维护自己开发的开源多云对象存储管理工具 Nebula。

今天正式发布 v1.14.0,同时也宣布一个重要变化:

Nebula 正式更名为 BucketForge!

这次更新不仅完成了项目品牌的全面升级,还带来了一项由社区开发者贡献的重要功能:指定 Bucket 访问。

现在,即使 AccessKey 只拥有某个 Bucket 的访问权限,没有 ListBuckets 权限,也可以正常连接和管理该存储桶。

此外,本次还修复了多项界面问题,完善了英文和日文国际化支持,并引入了全新的 BF 品牌标志。

🚀 一、关于 BucketForge

BucketForge 是一款基于 Rust + Tauri 构建的开源、跨平台多云对象存储管理工具。

项目希望解决一个实际问题:

能不能像操作本地文件管理器一样,统一管理不同云厂商的对象存储?

在日常开发中,我们可能同时使用阿里云 OSS、腾讯云 COS、华为云 OBS、AWS S3 或 MinIO。

不同厂商有各自的管理控制台,操作方式不尽相同。

如果经常需要上传文件、下载资源、管理 Bucket 或在不同云存储之间迁移数据,频繁切换控制台并不是很方便。

BucketForge 希望通过一个统一的桌面应用,让这些操作变得更加简单。

目前项目已支持 14 种云存储服务,包括:

  • 阿里云 OSS

  • 腾讯云 COS

  • 华为云 OBS

  • AWS S3

  • Cloudflare R2

  • 七牛云 Kodo

  • MinIO

  • Backblaze B2

  • Wasabi

  • DigitalOcean Spaces

  • Scaleway Object Storage

  • UCloud US3

  • 京东云 OSS

  • 又拍云 UPYUN

除了基本的文件浏览、上传和下载,项目还在持续完善跨云文件迁移、对象管理、文件预览、数据同步等功能。

项目地址:

https://github.com/devlive-community/bucketforge

官方网站:

https://bucketforge.devlive.org/

🎨 二、为什么从 Nebula 更名为 BucketForge?

最初选择 Nebula 作为项目名称,主要是希望通过「星云」表达多云统一管理的概念。

但随着项目逐渐完善,也发现了一个实际问题:

Nebula 这个名字实在太常见了。

无论是 GitHub 还是搜索引擎,都存在不少使用 Nebula 命名的项目和产品。

这让项目的搜索辨识度受到了一定影响。

因此,决定将其正式更名为 BucketForge。

新的名称由两个部分组成:

  • Bucket:对象存储中的存储桶。

  • Forge:构建、锻造,代表工具与工程能力。

相比 Nebula,BucketForge 能够更直接地表达项目的核心定位。

这次更名涉及:

  • GitHub 仓库

  • 项目名称

  • Rust Crate

  • npm 包

  • 桌面应用标识符

  • 官方网站

  • 应用图标

  • 启动画面

  • 产品品牌资源

全新的 Logo 采用 BF 字母与 Bucket 桶形元素结合的设计,替换了此前的星云标志。

同时,启动界面的进度条也调整为与新品牌一致的蓝青渐变色。

⚠️ 三、项目更名涉及 Breaking Change,但旧数据可以自动迁移

需要特别说明的是,本次更名涉及桌面应用的 Bundle Identifier 变更。

旧标识符:

org.devlive.nebula

新标识符:

org.devlive.bucketforge

由于应用标识符发生变化,系统中的应用数据目录、SQLite 数据库位置及钥匙串条目也会随之变化。

不过,针对已经使用 Nebula 的用户,本次版本提供了自动迁移能力。

首次启动 BucketForge v1.14.0 时,应用会自动尝试迁移旧版本数据。

迁移内容包括:

  • 原有 SQLite 数据库 nebula.db

  • 数据库 WAL、SHM、Journal 伴随文件

  • 插件目录 plugins/

  • 系统钥匙串中的账号凭据信息

应用会将原有数据复制到新的数据目录,并通过兼容读取旧钥匙串条目完成凭据迁移。

整个过程不需要用户手动导出、导入账号。

另外,为了保留回退能力,迁移过程中不会直接删除旧版本数据。

如果需要重新使用旧版 Nebula,原来的数据仍然保留。

对于历史版本的下载资源,官方网站也继续保留 Nebula_ 前缀,避免旧版本下载链接失效。

需要注意的是,自动迁移不等同于新旧版本之间持续同步数据。升级后仍建议做好重要数据备份。

🔐 四、新增指定 Bucket:解决最小权限 AK 无法连接的问题

这是本次版本中我认为最有实际价值的一项功能。

而且,这项功能来自社区贡献者提交的 PR #4。

1. 之前遇到的问题

在对象存储使用过程中,出于安全考虑,很多团队不会直接给开发人员完整的账号权限。

例如,管理员可能只授权某个 AccessKey 访问指定的 Bucket。

假设有一个存储桶:

example-assets

对应的 AK 仅具有该 Bucket 中对象的读写权限。

这种授权方式符合最小权限原则:

只授予完成工作所必需的权限,而不是直接开放整个账号的存储资源。

但这也带来了一个问题。

一些对象存储管理工具在连接账号时,首先会调用 ListBuckets 接口,尝试列出账号下所有存储桶。

由于该 AK 没有账号级的存储桶列表权限,请求就可能返回:

403 AccessDenied

实际上,这个 AK 并不是没有权限。

它只是没有权限列出所有 Bucket,但完全可以访问指定的存储桶。

此前,这类账号在应用中可能表现为连接失败。

2. 现在可以直接指定 Bucket

BucketForge v1.14.0 在账号配置表单中新增了一个可选字段:

指定 Bucket(Pinned Bucket)

用户可以在添加账号时直接填写已经获得授权的 Bucket 名称。

配置完成后:

  • 点击账号直接进入指定 Bucket。

  • 启动应用时可以直接打开该 Bucket。

  • 保存账号后自动定位到对应存储桶。

  • 切换账号时正确处理指定 Bucket。

  • 不再调用无权限的 ListBuckets 接口。

例如:

账号 AK 只能访问 example-assets。

只需要在账号设置中填写:

example-assets

之后就可以直接进入对应的存储桶进行操作。

不需要额外申请整个账号的 ListBuckets 权限。

3. 将指定 Bucket 作为账号根目录

为了让操作体验更加自然,本次还调整了导航逻辑。

配置指定 Bucket 后,该 Bucket 的根目录会成为账号的有效根目录。

包括:

  • 点击「上一层」

  • 使用返回上级快捷键

  • 通过命令面板返回上级

  • 点击面包屑导航

  • 从书签或历史记录恢复路径

这些操作都会受到根目录约束,不会跳转到当前 AK 无权限访问的账号级 Bucket 列表。

同时,指定的 Bucket 名称可以随时修改,不需要重新输入账号凭据。

如果不填写该字段,则继续使用原有的账号连接和 Bucket 发现方式。

4. 实现上没有修改云厂商 SDK

这项功能在技术实现上也很有意思。

BucketForge 没有针对每一家云厂商分别修改实现,而是增加了一个通用包装器:

PinnedBucketProvider

它在账号根路径上拦截:

  • list

  • list_page

然后返回一个代表指定 Bucket 的目录条目。

其余操作仍然交给底层 Provider 执行。

例如:

  • 对象上传与下载

  • 分片上传

  • ACL 管理

  • 对象标签

  • 生命周期管理

  • 对象版本管理

这样既保持了原有 Provider 的独立性,也避免了为了一个功能而修改多个云厂商的代码。

需要说明的是,指定 Bucket 不会绕过云厂商权限控制。

如果 AK 确实没有某项操作权限,云厂商仍会返回对应的权限错误。

它解决的是工具对 ListBuckets 的不必要依赖,而不是突破云存储本身的权限限制。

这里也特别感谢 PR #4 的社区贡献者!

开源项目能够收到来自社区的功能贡献,是非常值得高兴的事情。

🛠️ 五、修复多项界面问题

本次版本还修复了此前反馈的几个界面问题。

1. 修复文件网格卡片塌陷

此前,在网格模式下,当文件数量比较多时,部分卡片可能被压缩成很细的条状。

问题与 CSS Grid 的自动行高计算有关。

本次调整了 grid-auto-rows,让网格行根据内容确定高度。

文件数量较多时,卡片也可以保持正常展示。

2. 修复详情抽屉操作按钮溢出

此前,文件详情抽屉宽度约为 380px。

当操作按钮数量较多时,最后的按钮可能超出容器范围。

本次将操作按钮调整为双列布局,改善窄空间下的显示效果。

3. 修复窄窗口工具栏换行

在较窄的应用窗口中,工具栏末尾的部分按钮可能无法正常显示。

现在工具栏支持自动换行,让操作按钮在不同窗口宽度下保持可见。

相关问题:

  • GitHub Issue #6

  • GitHub Issue #7

🌍 六、完善英文与日文国际化

此前 BucketForge 已经支持多语言界面,但部分组件仍然存在未翻译的中文文案。

例如:

  • 账号配置表单

  • 文件详情抽屉

  • 应用更新弹窗

  • 确认与输入对话框

  • 下拉框占位符

  • 应用通知

  • 文件选择器

  • 欢迎页面

  • 云厂商名称

  • 存储类型标签

本次将相关文案统一接入国际化系统,并补齐英文和日文翻译。

同时,也对部分云厂商 ID 输入框中的示例文案进行了调整。

例如,原本固定显示中文「例如」的占位符,现在可以根据界面语言正确切换。

目前应用内使用的 t() 国际化键已经补齐对应的英文和日文翻译。

希望让不同语言的开发者都能获得更加完整的使用体验。

⚙️ 七、其他改进

除了上述功能,本次还包括一些细节调整。

品牌资源更新

  • 重新设计 BF 桶形 Logo。

  • 更新 macOS、Windows 和 Linux 应用图标。

  • 更新启动画面和侧边栏标志。

  • 更新官方网站品牌资源。

  • 更新 favicon。

  • 更新社交分享 OG 图片。

  • 调整启动进度条渐变配色。

Rust 依赖维护

将 async-trait 更新至 0.1.92。

修复 Rust 1.99 环境下的相关 Clippy 告警。

🌱 八、关于项目后续

BucketForge 依然是一个持续开发中的开源项目。

目前已经支持多种对象存储服务,并逐步完善文件管理、传输、同步和存储资源管理等能力。

我希望它不仅仅是一个对象存储文件浏览器,而是逐步发展为一个更加完整的多云对象存储管理平台。

未来还会继续关注:

  • 不同云厂商之间的功能兼容性。

  • 更完善的最小权限访问场景。

  • 跨云文件管理和迁移体验。

  • 大文件传输及数据同步。

  • 更好的文件预览与编辑能力。

  • 插件扩展及整体使用体验。

当然,项目还有不少需要改进的地方,也欢迎大家提出建议。

📦 九、下载与体验

项目名称: BucketForge

当前版本: v1.14.0

发布日期: 2026 年 10 月 13 日

技术栈: Rust + Tauri

支持平台: macOS / Windows / Linux

GitHub:

https://github.com/devlive-community/bucketforge

官方网站:

https://bucketforge.devlive.org/

版本下载:

https://github.com/devlive-community/bucketforge/releases

如果你之前使用过 Nebula,可以升级到 BucketForge v1.14.0。

首次启动会自动尝试迁移原有账号与配置数据,不需要重新手动添加账号。

如果你还没有使用过,也欢迎下载体验。

❤️ 最后

这次 v1.14.0 对我来说有两个比较特别的意义。

第一个是项目正式更名。

从 Nebula 到 BucketForge,希望通过一个更清晰、更有辨识度的品牌,继续完善这款开源工具。

第二个是收到了社区贡献的功能。

PR #4 带来的指定 Bucket 功能,解决了一个真实的最小权限访问问题。

这也让我更加坚定继续维护和开放项目的想法。

一个开源项目的成长,不应该只有作者一个人的想法,也应该有来自实际使用者的反馈和贡献。

如果 BucketForge 对你有所帮助,欢迎在 GitHub 点个 Star。

也欢迎通过 Issue 和 Pull Request 参与项目建设。

最后想问问大家:平时管理 OSS、S3、COS、MinIO 等对象存储时,最希望桌面客户端解决什么问题?

欢迎一起交流!


GitHub:https://github.com/devlive-community/bucketforge

官网:https://bucketforge.devlive.org/