如何在去中心化算力上运行Garage S3兼容对象存储

对象存储无处不在。应用用它来存储图片、备份、文档、应用资源、数据集,以及几乎任何需要存放在应用之外的文件。
对许多开发者来说,这意味着选用运行在云端的S3兼容存储服务。
但S3是一种接口,而不是一个位置。S3兼容存储实现了与Amazon S3相同的API,因此为S3构建的应用和工具都可以与之交互,无论底层存储托管在哪里。这一点很重要,因为它让您可以使用熟悉的S3工具,同时让存储本身运行在去中心化基础设施上。
本指南将把开源的S3兼容对象存储方案Garage部署到Acurast去中心化Processor网络上。 您将配置部署、使用Cargo启动Garage、连接到生成的S3兼容端点,并上传第一个文件。
完成后,您将拥有一个在Acurast Processor上运行的S3兼容存储实例。
存储也是一种算力工作负载
说到去中心化算力,存储可能不是人们首先想到的工作负载。但对象存储服务器归根结底也是软件。
它需要运行时、网络、计算资源,以及存放数据的地方。给它合适的Linux环境,它就能在许多不同的地方运行。
这正是Codename Cargo的用武之地。
Cargo通过支持完整的基于Linux的工作负载,让Acurast不再局限于此前的Node.js运行时。开发者可以部署使用Python、Go、Rust、C++以及其他可在Linux上运行的技术构建的应用。这样一来,现有软件无需为受限的运行时专门重建,就能在Acurast网络上运行。Garage就是一个很好的例子。
无需为去中心化基础设施构建定制的存储协议,而是可以直接部署已经实现了熟悉的S3 API的软件。
结果就是一个现有S3兼容工具和应用都能与之通信的对象存储服务。
在Acurast上部署Garage
Acurast Example Apps代码仓库包含一个Garage示例,大部分底层设置都已准备好。部署脚本会下载Garage、配置服务、建立所需的隧道,并提供连接所需的信息。
因此,在启动之前,只需完成相对少量的配置。
第1步:打开Garage示例应用
进入App Cargo Garage文件夹。
在里面,您会找到部署所需的全部文件。其中大部分是设置文件,无需修改。它们负责下载Garage二进制文件、准备环境,以及建立让服务可被访问的隧道等任务。
需要编辑的主要配置是环境文件。
第2步:配置部署
您首先需要的值是Acurast助记词。该账户用于授权部署并支付部署费用。出于安全考虑,请不要使用与您主钱包关联的助记词,而应专门为部署生成一个单独的助记词,并只转入工作负载所需的资金。敏感的钱包凭据绝不应在本地配置或CLI环境中不必要地暴露。
接下来,配置回调URL。Acurast准备部署时,会生成您用来访问Garage的唯一URL。这些URL需要有地方接收。示例的做法是向您提供的回调URL发送POST请求。因此,您可以使用任何能够接收POST请求并显示其内容的服务。本教程使用的是webhook.watch。创建一个个人端点,复制其URL,并将其添加到配置中。
部署就绪后,您会看到部署信息到达该端点。
第3步:配置SSH和网络
您还需要配置SSH密码。如果一切正常,日常运行并不需要SSH访问。它主要作为备用手段,供您在需要调试或排查问题时直接连接到Processor。
请使用安全的密码。部署网络推荐选择主网,因为它可以接入更大的可用Processor池。
您还会看到域名后缀的设置项。在撰写本教程时,您需要自备域名并配置相应的DNS记录。这一流程预计会变得更加自动化,因此具体要求可能会随着Cargo的发展而变化。
最后,配置存储桶名称。对于基础部署,保留默认值即可。
检查acurast.json
部署之前,先看一下acurast.json文件。其中包含控制工作负载运行方式的其他设置。
一个重要参数是部署时长。本示例将Garage运行四个小时。这足以用于测试,但您可以根据自己要构建的内容延长时长。
您也可以在这里配置网络,不过本示例保持使用主网。同时请确保目标Android版本符合要求。较旧的Processor环境可能不支持Garage部署所需的全部功能。
完成这些后,就可以启动存储服务了。
启动Garage
在Garage示例目录中运行:acurast deploy
Acurast CLI会引导您完成部署流程。提交部署之前,您会看到相应的费用。如果配置的费用高于实际所需,您可以改用建议的数值。
确认部署后,剩下的就交给Acurast。部署会被注册,Processor会完成准备,所需服务会自动启动。
几分钟后,您应该会开始看到请求到达之前配置的回调端点。
验证部署
回调请求能让您清楚地看到Processor上正在发生什么。首先,您会看到表明环境正在启动的日志。
接着,Processor会安装SSH服务器、下载Garage并建立隧道。
最终,您会收到期待已久的信息:访问Garage部署所需的生成URL和凭据。
随后,日志会确认Garage已完全部署并上线。现在,一个S3兼容存储服务已在Acurast Processor上运行。
下面来连接它。
连接到您的S3兼容存储
本示例使用一个为演示连接而制作的简单UI。
要进行连接,需要从部署中获取四项信息:
- 生成的端点URL
- 访问密钥ID
- 秘密访问密钥
- 存储桶名称
将这些值输入客户端并点击Connect。客户端现在正在与运行在您的Acurast Processor上的Garage实例通信。
由于Garage提供S3兼容接口,您并不局限于这个演示UI。任何兼容的S3客户端都可以通过相应的端点和凭据配置为与该部署交互。
上传您的第一个文件
现在,来确认存储确实可用。选择一个测试文件(图片就很合适),通过界面上传。
上传完成后,文件会出现在存储桶中。之后,您可以获取它的URL、分享、下载或删除它。这只是一个简单的演示,但这也正是重点所在。从客户端的角度看,您是在与熟悉的S3兼容对象存储交互。不寻常的是存储运行的位置。
Garage现在没有部署在传统的云实例上,而是运行在一台Acurast Processor上。
单个Processor不是备份策略
在将这套设置用作生产存储之前,有一个重要的限制需要了解。
在本示例中,您的数据存放在单个Processor上。如果该Processor不可用、被清除,或者Acurast部署到期,存储在上面的数据可能会永久消失。对于实验、开发和测试来说,这完全够用。但对于生产存储,这还不够。生产架构需要冗余。一种做法是在不同的Processor上部署多个Garage实例,并在它们之间配置复制。这样,即使一个Processor离线,另一份数据副本仍然可用。这一区别很重要,因为运行S3兼容API和提供持久的对象存储是两个不同的问题。
本示例解决了第一个问题。生产架构还必须解决第二个问题。
面向未来,Acurast正在探索不再需要依赖单个Processor的解决方案。
不只是一个S3兼容服务器
Garage更广泛地展示了Cargo为Acurast带来了什么。这里并不是在专门为去中心化算力打造新的存储系统,而是让现有的Linux软件有了新的运行之处。这是一个重要的区别。
S3兼容性还意味着应用不一定需要了解底层发生了什么。在底层基础设施变化的同时,它们可以继续与熟悉的API交互。
Garage只是其中一个例子。同样的方法还可以扩展到数据库、后端服务、API、开发者基础设施、游戏服务器、AI智能体以及其他Linux工作负载。
问题不再只是:
“可以为去中心化基础设施构建什么?”
而越来越多的是:
“有哪些现有的基础设施可以在那里运行?”
有了Cargo,这份清单会变得更长。
观看完整视频教程
本指南介绍了在Acurast上部署Garage的主要步骤,而配套的视频演示则从头到尾展示了整个过程。
您将看到如何配置Garage示例应用、使用Acurast CLI启动、跟踪部署日志、获取生成的凭据、连接S3兼容客户端并上传文件。
这也很好地展示了Cargo背后更宏观的理念:现有的Linux应用不一定需要传统的云基础设施才能运行。
先从一个S3兼容存储桶开始。然后看看您还能迁移什么。


