
开源应用 CloudDrive 让用户可在 Finder 中挂载自己的 Cloudflare R2 存储桶
来源标题:How HN: CloudDrive (Open Source) – Put Your Own Cloudflare R2 Bucket in Finder
CloudDrive 是一款可将用户自己的 Cloudflare R2 存储桶接入 macOS Finder 的开源应用,支持在 Finder 中拷贝文件并从菜单栏查看上传状态,凭据保存在 macOS Keychain 中。该应用目前处于早期开发阶段,上传前需先将整个文件暂存到本地,且未实现回收站与版本恢复功能,官方建议保留原始文件并使用专用测试前缀。该构建仅支持 Apple Silicon,需 macOS 14 或更高版本,可从 GitHub Releases 下载签名并公证的版本。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
一个小的 macOS 应用,把你的 Cloudflare R2 bucket 放进 Finder。
连接一个专用的 bucket 前缀,用 Finder 复制文件,在菜单栏里查看上传进度。凭据保存在 macOS Keychain 中。文件以普通对象的形式存储;上传的文件数据在符合条件时会自动从本地临时缓存中删除。
早期开发阶段的软件。当前版本会先把整个文件暂存到本地再上传。删除文件会删除其远程对象;回收站和版本恢复尚未实现。请保留原始文件,并使用专用的测试前缀。参见当前限制。
从 GitHub Releases 下载已签名并公证的 Apple Silicon 应用。需要 macOS 14 或更高版本。解压 CloudDrive,把它移到 Applications,然后打开。这是一个实验性版本;请保留原始文件,并使用专用的测试前缀。此构建不支持 Intel Mac。
我希望 CloudDrive 成为一个社区项目。欢迎提交 bug 报告、想法、文档、无障碍修复和代码——即使是很小的贡献也有帮助。
看看贡献指南,或者开一个 issue。你不需要 R2 账号或签名证书,就可以构建 UI 预览并运行测试。如果你不确定从哪里开始,可以在 issue 里提问。
要求:一台能运行 Xcode 26 或更高版本(包括 macOS 26 SDK)的 Apple Silicon Mac、Python 3,以及用于首次后端构建的互联网访问。应用本身支持 macOS 14 或更高版本。当前固定版本的后端构建目标是 darwin/arm64。
在 Xcode 中打开 CloudDrive.xcodeproj,选择 CloudDrive scheme 和 My Mac,然后按 ⌘R 构建并运行完整应用。先用下面的命令构建一次后端,并按照签名设置操作。Xcode 会构建两个原生 Swift target,打包后端/辅助程序/声明文件,并应用与命令行打包器相同的稳定签名检查。使用 Product → Show Build Folder in Finder 在 Products/Debug/CloudDrive.app 下找到构建好的应用。
Package.swift 仍然可用于 SwiftPM 构建和测试套件。Xcode 项目已检入仓库;无需安装项目生成器。添加或删除 Swift 源文件后,用 python3 scripts/generate-xcode-project.py 重新生成它。
从公开源码和本地补丁构建固定版本的后端。
python3 scripts/build-rclone-allocation.py
编译 Swift package。
swift build
使用你自己的签名证书打包应用。
./scripts/build-app.sh
首次后端构建会下载固定版本的 Go 工具链、rclone 和 go-nfs,校验它们的哈希值,应用分配补丁,并构建 build/backend/rclone。它还会收集依赖声明,并创建一个用于再分发的内置后端源码归档。这可能需要几分钟,并占用大量临时磁盘空间。源码仓库中不跟踪任何后端可执行文件。
打包后的应用是 build/CloudDrive.app。CloudDrive 以前名为 BucketDrive;为保持升级兼容性,现有的凭据和状态标识符被保留。在使用已保存的连接之前,请按照签名设置操作。临时预览可以编译 UI,但无法保存或迁移凭据;正常使用应用需要证书签名。
swift test python3 -m unittest discover -s Tests/Signing
Swift 测试套件包含隔离的原生 NFS 挂载和合成文件操作。请先构建后端。测试不需要你的 R2 凭据。参见开发说明了解资格验证命令和构建细节。
Sparkle 提供经用户批准的更新,并带有安全弹出保护。打包构建使用 release-config.json 中的公开 GitHub 发布配置;检查是手动的。设置 CLOUDDRIVE_DISABLE_UPDATES=1 可在本地构建中禁用更新。参见 GitHub 更新托管和本地发布准备。准备脚本从不发布或提交公证。
创建一个私有 R2 bucket 或选择一个已有的,并指定一个专用前缀。 在 CloudDrive 的设置界面中输入其 S3 endpoint、bucket、前缀和作用域访问密钥。 连接,然后在 Finder 中打开该驱动器。使用菜单中的 Transfers 项查看进度,使用 Settings 设置上传限制。 退出前先弹出驱动器。关闭窗口不会停止驱动器运行。 可选:启用 Settings → General → Open at Login,在登录时启动 CloudDrive。如果 macOS 请求批准,使用 Login Items Settings 按钮。
绝不要把密钥放进源文件或提交到 Git。大量写入需要临时本地空间。复制不会删除源原始文件。
路径 内容 Sources/ SwiftUI 应用、worker 控制器和辅助程序 Tests/ Swift 测试和签名测试 scripts/ 后端构建、打包和隔离资格验证工具 vendor/ 后端版本固定、补丁和第三方许可证 experiments/streaming-nfs/ 独立的流式写入原型;不属于应用的一部分 docs/ 开发、架构、限制和发布说明
流式原型已经演示了在原生 Finder 复制过程中上传,且本地元数据占用有界。它仅限于合成回环存储,尚不能替代应用的后端。
CloudDrive 采用 MIT 许可证。第三方代码保留其自己的许可证;参见第三方声明。参见贡献指南和安全政策。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。