WEB3DEV

Cover image for Serviço de fixação IPFS pessoal fácil com Textile
Diogo Jorge
Diogo Jorge

Posted on

Serviço de fixação IPFS pessoal fácil com Textile

Este artigo foi escrito por Carson Farmer e traduzido por Diogo Jorge. O artigo original pode ser encontrado aqui.

Uma lição rápida sobre como criar seu próprio serviço pessoal de fixação (pinning) IPFS em pouco tempo com Textile Cafes

Image description

Foto de Capturing the human hearth no Unsplash

ATUALIZAÇÃO: Fixar dados na rede IPFS nunca foi tão fácil. Os Bucket Textiles (Baldes Textiles) agora permitem que você publique seu site, blog ou dados no IPFS facilmente. Os buckets são pastas dinâmicas de conteúdo fixado. Os dados que você adiciona a um bucket estão disponíveis em gateways IPFS e HTTP e cada bucket tem uma URL estática que fará referência aos seus dados alterados. Leia mais.

O Interplanetary File System (IPFS) é um protocolo e rede projetado para criar um método ponto a ponto endereçável por conteúdo de armazenamento e compartilhamento de hipermídia em um sistema de arquivos distribuído. Isso é bastante coisa, mas basicamente se resume a uma re-imaginação da Internet, onde todos participam do armazenamento e compartilhamento de conteúdo. Os peers conectam e compartilham conteúdo ou dados por meio de protocolos projetados para garantir que a localização real do conteúdo na Web seja menos importante do que o próprio conteúdo. Já falamos sobre isso antes , e isso tem enormes implicações para o futuro da Internet.

À medida que o IPFS continua a ganhar popularidade, a probabilidade de que qualquer conteúdo adicionado ao IPFS permaneça por aí continua a aumentar. Mas é importante ter em mente que os nós tratam os dados que armazenam como um cache, o que significa que não há garantia de que os dados continuarão sendo armazenados . Para dados importantes que precisamos ou queremos ter em longo prazo, podemos fixá -los em nosso nó local, informando ao nosso ponto IPFS que os dados são importantes e não devem ser jogados fora (também conhecido como lixo coletado ). Por exemplo, Textile hospeda textile.io no IPFS, mas como é muito importante para nós que esteja disponível o tempo todo, garantimos que ele seja fixado em nossos próprios pares de servidor IPFS!

Isso é muito bom para coisas como sites estáticos que não mudam com frequência ou dados armazenados por uma organização ou grupo de desenvolvedores, mas e meus arquivos pessoais? É claro que posso ter um par IPFS em execução na minha máquina local (eu tenho e recomendo a área de trabalho IPFS para isso), mas e se eu desligar meu par? ou ficar offline? Ou se eu preciso executar uma atualização? Você certamente poderia usar um serviço baseado em pagamento existente, como Pinata , Temporal , Eternum ou Constellation (esses são incríveis se você não quiser hospedar nada sozinho!)… Mas não seria legal se eu pudesse ter o meu próprio serviço de fixação pessoal? Algo que iria fixar meus arquivos para mim, remotamente, com o mínimo de barulho e o máximo de tempo de atividade? Claro que sim, então vamos configurar um!

Cafes Textil

O Textile fornece armazenamento de dados criptografado, recuperável, baseado em esquema e entre aplicativos construído em IPFS e libp2p . Gostamos de pensar nisso como uma carteira de dados descentralizada com protocolos integrados para compartilhamento e recuperação ou, mais simplesmente, um iCloud aberto e programável . Assim como o iCloud tem seu próprio back-end de armazenamento, o Textile usa o IPFS para armazenar dados em uma rede de peers aberta e descentralizada.

Com a versão mais recente do Textile, temos várias ferramentas (saiba mais sobre nossas ferramentas de linha de comando em nosso wiki ) que facilitam a configuração de seu próprio serviço de pins pessoal (ou público). Para fazer isso, você precisa executar o Textile daemon no modo Cafe. Isso significa que o nó (que envolve um par IPFS) estará aberto para você se conectar, transmitir mensagens para outros 'aplicativos' conectados, armazenar em cache arquivos maiores (por exemplo, imagens criptografadas) e até mesmo ajudar na descoberta ponto a ponto na rede em geral. Mas o mais importante, significa que você pode ter seu conteúdo de pin do Cafe para você!

Configurar

A maneira 'manual' (mas ainda assim muito fácil)

Você pode seguir estas etapas para obter a ferramenta de configuração de linha de comando Textile . Deve levar apenas alguns minutos, dependendo da velocidade da rede e das ferramentas que você já instalou. Depois de ter essa configuração, podemos configurar nosso par para ser executado no modo Cafe. Por enquanto, você pode executar todas essas etapas em sua máquina local, mas para uma solução melhor e mais permanente, convém configurar uma máquina baseada em nuvem (confira a maneira fácil 👇 abaixo). Para os propósitos desta demonstração, suponho que você tenha implantado isso em uma máquina 'remota' e se refira a ela como tal…

Com seu daemon Textile remoto em execução, atualizaremos o arquivo de configuração para habilitar o modo Cafe. Você pode fazer isso manualmente se quiser (edite ~/.textile/repo/textilediretamente), mas o mais fácil é usar a linha de comando textile config. Então, primeiro, defina sua entrada Host.Open como true:

textile config Cafe.Host.Open true
Enter fullscreen mode Exit fullscreen mode

Em seguida, você precisará descobrir o endereço IP público do seu nó Cafe. Isso permitirá que você acesse diretamente seu par quando enviar suas solicitações de pin. Não importa realmente como você acessa isso, mas se você estiver executando seu Peer atrás de um roteador ou gateway, talvez seja necessário configurar o encaminhamento de porta ou outros 'truques' para garantir que seu Peer esteja acessível (se você for acessá-lo apenas em uma LAN, você pode usar seu endereço IP privado).

textile config Cafe.Host.PublicIP \"$IP\"
Enter fullscreen mode Exit fullscreen mode

Você também vai precisar alterar seu default de Cafe e Gateway Addresses de localhost para a rota padrão, habilitar o modo server e, se estiver fornecendo o serviço Cafe por HTTPS por meio de um balanceador de carga, também precisará especificar um URL HTTP público (deixe isso de fora se isso soar como muito trabalho extra!):

textile config Addresses.CafeAPI \"0.0.0.0:40601\"
textile config Addresses.Gateway \"0.0.0.0:5050\"
textile config IsServer true
textile config Cafe.Host.HttpURL \"https://mycafe.io\"
Enter fullscreen mode Exit fullscreen mode

Você também pode fazer todas as configurações acima ao inicializar o Par de uma só vez usando algo como a seguinte linha (onde IP é seu endereço IP público exportado e URL é seu url público, se desejar):

textile init -s $(textile wallet init | tail -n1) \
 --server --cafe-open --swarm-ports=4001 \
 --cafe-http-url="$URL" \
 --cafe-public- ip="$IP" \
 --cafe-bind-addr=0.0.0.0:40601 \
 --gateway-bind-addr=0.0.0.0:5050
Enter fullscreen mode Exit fullscreen mode

A maneira 'automática' (e definitivamente fácil)

Deseja implantar um Textile Cafe em uma máquina em nuvem acessível publicamente, como uma instância do Amazon EC2? Estamos protegendo você! Aqui está um script (você também precisa deste instalador complementar) que irá configurar tudo para você de uma só vez. Tudo o que você precisa é a chave SSH da sua instância, seu endereço IP público e a versão Textile que deseja implantar (por exemplo, v1.0.0), e pronto (supondo que seu nome de usuário esteja ec2-user preparado para editar conforme necessário)! A única outra coisa a ter em mente é que você precisa ter suas portas Cafe e Swarm abertas em sua instância remota. Por padrão, estes são 4001 para o Swarm e 40601 para o Cafe:

./init.sh -k key.pem -r 1.0.0.0 -p xx.xxx.x.xxx -u http://xx.xxx.x.xxx :40601
Enter fullscreen mode Exit fullscreen mode

Teste rápido

Independentemente do método usado, depois de configurar o Cafe, você pode testar se ele está funcionando usando uma ferramenta como curl:

curl "http://xx.xxx.xx.xxx:40601/health"
Enter fullscreen mode Exit fullscreen mode

Você deve obter uma 204 resposta se tudo estiver bem. Quer atualizar/atualizar seu Cafe? Nós cobrimos você lá também! Aqui está o script (e aqui está o instalador complementar).

Registrando

Agora que temos nossa própria configuração pessoal (remota) do Textile Cafe, é hora de registrar nosso 'app' local com ele. Por enquanto, vamos apenas executar um ponto Textile vanilla localmente e conectar dessa forma. Se você ainda não tiver um peer local configurado, poderá usar as mesmas etapas de antes, desta vez em sua máquina local. De agora em diante, vamos nos referir a este par Textile vanilla como o par 'local', e o par Cafe acima como o par 'remoto'.

Portanto, se o seu Par 'remoto' não for realmente remoto (ou seja, você seguiu as etapas manuais acima e apenas os executou em sua máquina local), você terá que criar um segundo Peer separado especificando um local e uma porta de repositório alternativos para a API de comando do seu par (você também terá que adicionar o sinalizador --api=http://127.0.0.1:41600 aos seguintes comandos se estiver usando uma porta de API alternativa):

textile init -s $(textile wallet init | tail -n1) --api-bind-addr=http://127.0.0.1:41600 --swarm-ports=4101 --repo-dir=/full/path/to /repo
Enter fullscreen mode Exit fullscreen mode

Com o seu par local pronto, basta registrá-lo no Par Cafe remoto. Você precisará do ID do Par Cafe, que pode ser obtido via par Textile (executado em sua máquina 'remota'). Agora, registre-se (localmente) com:

textile cafes add <cafe-peer-id>
Enter fullscreen mode Exit fullscreen mode

Isso retornará uma resposta JSON contendo um token JSON Web (JWT) accesse refresh, que você pode usar ao se comunicar com seu serviço de fixação remoto. Textile usa JWTs para garantir que você não esteja apenas fixando arquivos à toa para qualquer um que se deparar com seu Cafe. Os Tokens JSON Web são um método aberto padrão do setor (RFC 7519 ) para representar tokens de acesso que afirmam certo número de declarações de forma segura entre (duas) partes.

Você pode listar seus Cafes registrados via textile Cafes ls, e até mesmo extrair o componente específico do token access,usando uma ferramenta como jq (que apresentamos em um post anterior ):

textile cafes ls | jq '.[].access'
Enter fullscreen mode Exit fullscreen mode

Você pode registar-se em vários Cafes, garantindo assim que os seus dados estão ainda mais acessíveis e seguros. Tudo o que você precisa fazer é repetir as etapas acima com um Cafe remoto diferente. Você pode implantar o seu próprio ou usar um dos Cafes da Textile. Agora, com seu token accessem mãos, você pode se conectar 'manualmente' à API REST do seu Cafe e começar a adicionar/fixar arquivos... mas há uma maneira ainda mais fácil!

Adicionando e Fixando

Uma vez que um par local é registrado em um Cafe remoto, todos os arquivos que são adicionados a uma Thread serão automaticamente adicionados e fixados no Cafe remoto. Então, na verdade, não há trabalho adicional necessário para ter uma configuração de serviço de fixação remota personalizada. Iniciar, Registrar, Criar, Adicionar, Concluído. E ainda melhor, ao adicionar dados ao seu Cafe remoto via Threads, você obtém o benefício de dados estruturados, ferramentas de criptografia, capacidade de compartilhamento e até recuperação! Esses são alguns recursos interessantes. Não quer estruturar seus dados de Thread? Basta usar um Schema blobsimples e adicionar o que quiser.

Para fazer essa mágica acontecer, você precisa criar uma nova Thread com um Schema (possivelmente personalizado). Isso é super fácil, e já temos um guia/demonstração básico para isso (além disso, já mencionamos aqui e aqui também). Para os não iniciados, se você quiser criar uma Thread privada para armazenar suas fotos, faça algo assim (use nosso Schema mediaembutido):

textile threads add photo-thread --media
Enter fullscreen mode Exit fullscreen mode

Isso produzirá algumas informações sobre sua nova Thread, incluindo seu arquivo id. Depois é só adicionar suas fotos uma a uma, ou um diretório inteiro de uma vez. Você pode até criar álbuns de fotos (ou álbuns de qualquer tipo de dados) usando o sinalizador --group:

Textile add photos/ --caption="moar pics" --thread=<id> --group
Enter fullscreen mode Exit fullscreen mode

Por trás das cortinas, seus arquivos/dados adicionados serão enviados para a fila de solicitações da loja do seu Cafe. A qual é essencialmente uma fila de solicitações para… você adivinhou! Armazenar e fixar dados. O Cafe processará essa fila de forma oportuna, adicionando e fixando os dados que seu par local enviou. Para aplicativos de tráfego intenso, essa fila pode levar algum tempo para ser processada (por exemplo, um grande álbum de fotos), mas deve processar os dados e notificar o par local assim que o processamento for concluído.

Não quer adicionar arquivos de dados manualmenteassim? Ok, que tal uma linha simples para observar uma pasta em busca de novos arquivos e adicioná-los automaticamente a um thread de backup ( requer fswatch e do seu thread id)?

fswatch --event Created --event MovedTo path/to/folder | xargs -I{} textile add {} -t <id>
Enter fullscreen mode Exit fullscreen mode

Quão legal é isso. Você basicamente acabou de criar seu próprio Dropbox personalizado em menos de 15 linhas de comando mágicas. E com as ferramentas de backup e recuperação da Textile chegando, você poderá fazer login de qualquer computador e sincronizar seus arquivos de Cafes remotos! Tudo usando uma rede de pares completamente descentralizada/federada.

Resumo

Então, depois de tudo isso, configurar um serviço de fixação remoto personalizado usando Textile realmente se resume a algumas etapas simples :

  1. Configurar um par remoto em execução no modo Cafe
  2. Configurar um par padrão local
  3. Registre seu par local com seu Cafe remoto
  4. Crie uma Thread e comece a adicionar dados
  5. Relaxe… seus dados agora estão seguros e protegidos na dweb!

É isso!

Obrigado por acompanhar, por favor, deixe-nos saber o que você pensa?! Você pode entrar em contato pelo Twitter ou Slack ou nos chamar de lado na próxima vez que nos vir em uma conferência ou evento. Estamos felizes em fornecer informações sobre esta demonstração/tutorial e para onde iremos a seguir. Enquanto isso, não se esqueça de conferir nossos repositórios do GitHub para código e PRs que mostram nossas APIs mais recentes. Tentamos garantir que todo o nosso desenvolvimento aconteça de forma aberta, para que você possa ver as coisas à medida que elas se desenvolvem. Além disso, se você ainda não conferiu, certifique-se de se inscrever na lista de espera do Textile Photos para obter acesso antecipado a algumas das tecnologias que estamos desenvolvendo em cima do Textile.

Top comments (0)