Aprenda

Conheça a Acurast. Descubra nossa história, mergulhe na documentação técnica e veja com quem temos parcerias no ecossistema.

Glowing lime-green storage crates stacked above a smartphone, illustrating Garage S3-compatible object storage deployed on the Acurast decentralized compute network with Cargo

Como rodar o Garage, armazenamento de objetos compatível com S3, em computação descentralizada

Caixas de armazenamento verde-limão brilhantes empilhadas acima de um celular, ilustrando o deploy do Garage, armazenamento de objetos compatível com S3, na rede de computação descentralizada da Acurast com o Cargo

 

 

O armazenamento de objetos está em toda parte. As aplicações o usam para guardar imagens, backups, documentos, assets da aplicação, conjuntos de dados e praticamente qualquer outro arquivo que precise ficar em algum lugar fora da própria aplicação.

 

Para muitos desenvolvedores, isso significa recorrer a um serviço de armazenamento compatível com S3 rodando na nuvem.

 

Mas o S3 é uma interface, não um lugar. O armazenamento compatível com S3 implementa a mesma API do Amazon S3, então aplicações e ferramentas criadas para o S3 conseguem interagir com ele independentemente de onde o armazenamento esteja hospedado. Isso é importante porque permite usar as ferramentas S3 de sempre enquanto o próprio armazenamento roda em infraestrutura descentralizada.

 

Neste guia, você vai fazer o deploy do Garage, uma solução de armazenamento de objetos de código aberto compatível com S3, na rede descentralizada de Processors da Acurast. Você vai configurar o deployment, iniciar o Garage usando o Cargo, conectar-se ao endpoint compatível com S3 resultante e enviar seu primeiro arquivo.

 

No final, você terá uma instância de armazenamento compatível com S3 rodando em um Processor da Acurast.

 

Armazenamento também é uma carga de trabalho de computação

 

Quando se pensa em computação descentralizada, o armazenamento talvez não seja a primeira carga de trabalho que vem à mente. Mas um servidor de armazenamento de objetos é, no fim das contas, software.

 

Ele precisa de um runtime, rede, recursos de computação e algum lugar para guardar seus dados. Dê a ele o ambiente Linux certo e ele pode rodar em muitos lugares diferentes.

 

É aí que entra o Codename Cargo.

 

O Cargo leva a Acurast além do runtime Node.js anterior, permitindo cargas de trabalho completas baseadas em Linux. Os desenvolvedores podem fazer deploy de aplicações criadas com Python, Go, Rust, C++ e outras tecnologias que rodam em Linux. Isso torna possível pegar softwares existentes e rodá-los na rede Acurast sem reconstruí-los especificamente para um runtime limitado. O Garage é um bom exemplo.

 

Em vez de criar um protocolo de armazenamento personalizado para infraestrutura descentralizada, é possível fazer deploy de um software que já implementa a conhecida API S3.

 

O resultado é um serviço de armazenamento de objetos com o qual as ferramentas e aplicações compatíveis com S3 que já existem conseguem se comunicar.

 

Fazendo o deploy do Garage na Acurast

 

O repositório Acurast Example Apps contém um exemplo do Garage com a maior parte da configuração de base já resolvida. Os scripts de deployment baixam o Garage, configuram o serviço, estabelecem o túnel necessário e expõem as informações de que você vai precisar para se conectar.

 

Com isso, resta uma quantidade relativamente pequena de configuração antes de iniciá-lo.

 

Passo 1: Abra o app de exemplo do Garage

 

Comece clonando o repositório Acurast Example Apps.

 

Navegue até a pasta App Cargo Garage.

 

Lá dentro, você vai encontrar todos os arquivos necessários para o deployment. A maioria deles é de arquivos de configuração que não precisam ser modificados. Eles cuidam de tarefas como baixar o binário do Garage, preparar o ambiente e estabelecer o túnel que torna o serviço acessível.

 

A principal configuração que você vai precisar editar é o arquivo de ambiente.

 

Passo 2: Configure o deployment

 

O primeiro valor necessário é um mnemônico da Acurast. Essa conta é usada para autorizar e pagar pelo deployment. Por segurança, não use o mnemônico associado à sua carteira principal. Em vez disso, gere um mnemônico separado para fins de deployment e transfira apenas os fundos necessários para a carga de trabalho. Credenciais sensíveis de carteira nunca devem ficar expostas sem necessidade em configurações locais ou ambientes de CLI.

 

Em seguida, configure a URL de callback. Quando a Acurast prepara o deployment, ela gera URLs exclusivas que você vai usar para acessar o Garage. Essas URLs precisam ser entregues em algum lugar. O exemplo resolve isso enviando uma requisição POST para a URL de callback que você fornecer. Portanto, você pode usar qualquer serviço capaz de receber uma requisição POST e exibir o conteúdo dela. Neste tutorial, é usado o webhook.watch. Crie um endpoint pessoal, copie a URL dele e adicione-a à configuração.

 

Quando o deployment estiver pronto, você verá as informações dele chegarem a esse endpoint.

 

Passo 3: Configure o SSH e a rede

 

Você também vai configurar uma senha SSH. O acesso SSH não é necessário na operação normal se tudo funcionar como esperado. Ele existe principalmente como alternativa caso você precise se conectar diretamente ao Processor para depuração ou solução de problemas.

 

Use uma senha segura. Para a rede do deployment, a mainnet é a opção recomendada, porque dá acesso a um conjunto maior de Processors disponíveis.

 

Você também verá uma configuração para o sufixo de domínio. No momento deste tutorial, você precisa fornecer seu próprio domínio e configurar os registros DNS adequados. A expectativa é que esse processo fique mais automatizado, então o requisito exato pode mudar conforme o Cargo evolui.

 

Por fim, configure o nome do bucket. Para um deployment básico, você pode simplesmente manter o valor padrão.

 

Revise o acurast.json

 

Antes do deploy, dê uma olhada no arquivo acurast.json. Ele contém configurações adicionais que controlam como a carga de trabalho roda.

 

Um parâmetro importante é a duração do deployment. Neste exemplo, o Garage vai rodar por quatro horas. Isso é suficiente para testes, mas você pode aumentar a duração de acordo com o que estiver construindo.

 

Você também pode configurar a rede aqui, mas neste exemplo ela fica na mainnet. Verifique também se a versão do Android exigida está correta. Ambientes de Processor mais antigos podem não suportar todos os recursos exigidos pelo deployment do Garage.

 

Com isso feito, está tudo pronto para iniciar o serviço de armazenamento.

 

Inicie o Garage

 

No diretório de exemplo do Garage, execute: acurast deploy

 

O Acurast CLI vai guiar você pelo processo de deployment. Antes de enviar o deployment, será exibida a taxa correspondente. Se a taxa configurada for maior que o necessário, você pode usar o valor sugerido.

 

Confirme o deployment e a Acurast cuida do resto. O deployment é registrado, um Processor é preparado e os serviços necessários são iniciados automaticamente.

 

Depois de alguns minutos, você deve começar a ver requisições chegando ao endpoint de callback configurado antes.

 

Verifique o deployment

 

As requisições de callback mostram o que está acontecendo no Processor. Primeiro, você verá logs indicando que o ambiente está sendo iniciado.

 

Em seguida, o Processor instala o servidor SSH, baixa o Garage e estabelece o túnel.

 

Por fim, você vai receber as informações que estava esperando: as URLs e as credenciais geradas necessárias para acessar o deployment do Garage.

 

Os logs vão então confirmar que o Garage está com o deploy concluído e no ar. Agora há um serviço de armazenamento compatível com S3 rodando em um Processor da Acurast.

 

Hora de se conectar a ele.

 

Conecte-se ao seu armazenamento compatível com S3

 

Neste exemplo, é usada uma interface simples criada para demonstrar a conexão.

 

Para se conectar, são necessárias quatro informações do deployment:

 

  • A URL do endpoint gerada
  • O ID da chave de acesso
  • A chave de acesso secreta
  • O nome do bucket

 

Insira esses valores no cliente e clique em Connect. O cliente agora está se comunicando com a instância do Garage rodando no seu Processor da Acurast.

 

Como o Garage oferece uma interface compatível com S3, você não fica limitado à interface de demonstração. Qualquer cliente S3 compatível pode ser configurado para interagir com o deployment usando o endpoint e as credenciais adequados.

 

Envie seu primeiro arquivo

 

Agora, confira se o armazenamento realmente funciona. Escolha um arquivo de teste (uma imagem funciona bem) e envie-o pela interface.

 

Quando o upload terminar, o arquivo aparece no bucket. A partir dali, é possível obter a URL dele, compartilhá-lo, baixá-lo ou excluí-lo. É uma demonstração simples, mas esse é justamente o ponto. Do ponto de vista do cliente, a interação é com um armazenamento de objetos compatível com S3 conhecido. A parte incomum é onde esse armazenamento está rodando.

 

Em vez de o serviço ter deploy em uma instância de nuvem tradicional, o Garage agora está rodando em um Processor da Acurast.

 

Um único Processor não é uma estratégia de backup

 

Há uma limitação importante a entender antes de tratar essa configuração como armazenamento de produção.

 

Neste exemplo, seus dados ficam em um único Processor. Se esse Processor ficar indisponível, for apagado ou o deployment na Acurast expirar, os dados armazenados nele podem desaparecer permanentemente. Para experimentação, desenvolvimento e testes, isso é perfeitamente útil. Para armazenamento de produção, não basta. Uma arquitetura de produção precisa de redundância. Uma abordagem seria fazer deploy de várias instâncias do Garage em Processors diferentes e configurar a replicação entre elas. Assim, se um Processor ficar offline, outra cópia dos dados continua disponível. Essa distinção importa porque rodar uma API compatível com S3 e oferecer armazenamento de objetos durável são dois problemas diferentes.

 

O exemplo resolve o primeiro. Uma arquitetura de produção também precisa resolver o segundo.

 

Para o futuro, a Acurast está explorando soluções em que a dependência de um único Processor não seria mais necessária.

 

Mais do que um servidor compatível com S3

 

O Garage demonstra algo mais amplo sobre o que o Cargo traz para a Acurast. Não se trata de criar um novo sistema de armazenamento especificamente para computação descentralizada. Trata-se de pegar softwares Linux existentes e dar a eles um novo lugar para rodar. É uma distinção importante.

 

A compatibilidade com S3 também significa que as aplicações não precisam necessariamente entender o que está acontecendo por baixo. Elas podem continuar interagindo com uma API conhecida enquanto a infraestrutura por baixo muda.

 

E o Garage é só um exemplo. A mesma abordagem pode se estender a bancos de dados, serviços de backend, APIs, infraestrutura para desenvolvedores, servidores de jogos, agentes de IA e outras cargas de trabalho Linux.

 

A pergunta não é apenas:

 

“O que dá para construir para infraestrutura descentralizada?”

 

É, cada vez mais:

 

“Que infraestrutura existente dá para rodar lá?”

 

Com o Cargo, essa lista fica muito maior.

 

Assista ao tutorial completo em vídeo

 

Este guia cobre os principais passos para fazer o deploy do Garage na Acurast, mas o passo a passo em vídeo que o acompanha mostra o processo do início ao fim.

 

Você vai ver como configurar a aplicação de exemplo do Garage, iniciá-la com o Acurast CLI, acompanhar os logs do deployment, obter as credenciais geradas, conectar um cliente compatível com S3 e enviar um arquivo.

 

Também é uma demonstração útil da ideia mais ampla por trás do Cargo: aplicações Linux existentes não precisam necessariamente de infraestrutura de nuvem tradicional para rodar.

 

Comece com um bucket compatível com S3. Depois, veja o que mais você consegue migrar.