Kubo: implementação de IPFS em GO
A primeira implementação do IPFS.
Kubo foi a primeira implementação do IPFS e é a mais utilizada atualmente. Implementando o Sistema de Arquivos Interplanetário - o padrão Web3 para endereçamento de conteúdo, interoperável com HTTP. Assim, alimentado pelos modelos de dados do IPLD e pela libp2p para comunicação em rede. Kubo está escrito em Go.
Conjunto de recursos
Executa um nó IPFS como um serviço de rede que faz parte de LAN e WAN DHT
Funcionalidade HTTP Gateway ( /ipfs
e /ipns
) para recuperação de conteúdo confiável e não confiável
Implementação de cliente e servidor HTTP Routing V1 ( /routing/v1
) para pesquisas de roteamento delegado
API HTTP Kubo RPC ( /api/v0
) para acessar e controlar o daemon
Interface de linha de comando baseada em ( /api/v0
) API RPC
WebUI para gerenciar o nó Kubo
Suporte de bloqueio de conteúdo para operadores de nós públicos
Ver lista
IPFS é um sistema de arquivos global, versionado e ponto a ponto. Ele combina boas ideias de sistemas anteriores como Git, BitTorrent, Kademlia, SFS e Web. É como um único enxame de BitTorrent, trocando objetos git. O IPFS fornece uma interface tão simples quanto a web HTTP, mas com permanência integrada. Você também pode montar o mundo em /ipfs.
Para mais informações, consulte: https://docs.ipfs.tech/concepts/what-is-ipfs/
Antes de abrir um problema, considere usar um dos seguintes locais para garantir que está abrindo seu tópico no lugar certo:
Bugs de implementação do kubo (anteriormente denominado go-ipfs) neste repositório.
Problemas de documentação em problemas de ipfs/docs.
Design IPFS em problemas de ipfs/specs.
Exploração de novas ideias em questões de ipfs/notes.
Faça perguntas e conheça o restante da comunidade no Fórum IPFS.
Ou converse conosco.
Marcos no GitHub
O que é Kubo?
O que é IPFS?
Próximos marcos
Índice
Problemas de segurança
Requisitos mínimos do sistema
Instalar
Instalar Ir
Baixe e compile IPFS
Solução de problemas
Compilação Cruzada
MacPorts
Nix
Cerveja caseira
Chocolate
Colher
ArchLinux
GentooLinux
Nix
Solus
openSUSE
Guix
Foto
Ubuntu PPA
Atualizando
Usando atualização ipfs
Baixando compilações usando IPFS
Docker
Binários pré-construídos oficiais
Pacotes Linux não oficiais
Pacotes não oficiais do Windows
Pacotes não oficiais do MacOS
Construir a partir da fonte
Começando
Uso
Algumas coisas para tentar
Solução de problemas
Pacotes
Desenvolvimento
Mapa de Subsistemas Implementados
CLI, HTTP-API, diagrama de arquitetura
Teste
Dependências de Desenvolvimento
Notas do desenvolvedor
Informações do Mantenedor
Contribuindo
Licença
Siga SECURITY.md
.
O IPFS pode ser executado na maioria dos sistemas Linux, macOS e Windows. Recomendamos executá-lo em uma máquina com pelo menos 4 GB de RAM e 2 núcleos de CPU (o kubo é altamente paralelo). Em sistemas com menos memória, pode não ser completamente estável e você corre por sua própria conta e risco.
As instruções canônicas de download para IPFS estão em: https://docs.ipfs.tech/install/. É altamente recomendável que você siga essas instruções se não estiver interessado em trabalhar no desenvolvimento de IPFS.
As imagens oficiais são publicadas em https://hub.docker.com/r/ipfs/kubo/:
? Lançamentos
tags latest
e release
sempre apontam para a versão estável mais recente
vN.NN
aponta para uma tag de lançamento específica
Estas são imagens de nível de produção.
? Também fornecemos versões experimentais para desenvolvedores
master-latest
sempre aponta para o HEAD
do branch master
master-YYYY-DD-MM-GITSHA
aponta para um commit específico do branch master
Essas tags são usadas por desenvolvedores para testes internos, não destinadas a usuários finais ou uso em produção.
$ docker pull ipfs/kubo:mais recente$ docker run --rm -it --net=host ipfs/kubo:mais recente
Para personalizar seu nó, passe a configuração necessária via -e
ou montando scripts em /container-init.d
.
Saiba mais em https://docs.ipfs.tech/install/run-ipfs-inside-docker/
Os binários oficiais são publicados em https://dist.ipfs.tech#kubo:
De lá:
Clique no botão azul “Baixar Kubo” no lado direito da página.
Abra/extraia o arquivo.
Mova kubo ( ipfs
) para o seu caminho ( install.sh
pode fazer isso por você).
Se não conseguir acessar dist.ipfs.tech, você também pode baixar o kubo (go-ipfs) em:
a página de lançamentos deste projeto no GitHub
/ipns/dist.ipfs.tech
no gateway dweb.link
O IPFS possui uma ferramenta de atualização que pode ser acessada através do ipfs update
. A ferramenta não é instalada junto com o IPFS para manter essa lógica independente da base de código principal. Para instalar a ferramenta ipfs-update
, baixe-a aqui.
Liste as versões disponíveis da implementação do Kubo (go-ipfs):
$ ipfs cat /ipns/dist.ipfs.tech/kubo/versions
Então, para visualizar as compilações disponíveis para uma versão do comando anterior ( $VERSION
):
$ ipfs ls /ipns/dist.ipfs.tech/kubo/$VERSION
Para baixar uma determinada compilação de uma versão:
$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-386.tar.gz # darwin build de 32 bits$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_ $VERSION_darwin-amd64.tar.gz # darwin compilação de 64 bits$ ipfs obtém /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_freebsd-amd64.tar.gz # freebsd 64 bits build$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux- 386.tar.gz # linux build de 32 bits$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-amd64.tar.gz # linux build de 64 bits$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux- arm.tar.gz # linux arm build$ ipfs obtém /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip # compilação do Windows de 64 bits
ArchLinux
GentooLinux
Nix
Solus
openSUSE
Guix
Foto
Ubuntu PPA
#pacman -Skubo
https://wiki.gentoo.org/wiki/Kubo
# emerge -a net-p2p/kubo
https://packages.gentoo.org/packages/net-p2p/kubo
Com o gerenciador de pacotes puramente funcional Nix você pode instalar o kubo (go-ipfs) assim:
$ nix-env -i kubo
Você também pode instalar o pacote usando seu nome de atributo, que também é kubo
.
Pacote para Solus
$ sudo eopkg install kubo
Você também pode instalá-lo através do centro de software Solus.
Pacote comunitário para go-ipfs
O pacote comunitário para go-ipfs não está desatualizado.
Não há mais suporte, consulte a justificativa em kubo#8688.
Página inicial do PPA no Launchpad.
sudo add-apt-repository ppa:twdragon/ipfs atualização do sudo apt sudo apt instalar ipfs-kubo
sudo suecho 'deb https://ppa.launchpadcontent.net/twdragon/ipfs/ubuntu <> main' >> /etc/apt/sources.list.d/ipfsecho 'deb-src https://ppa. launchpadcontent.net/twdragon/ipfs/ubuntu < > main' >> /etc/apt/sources.list.d/ipfsexitsudo atualização adequada sudo apt instalar ipfs-kubo
onde <
é o codinome da sua distribuição Ubuntu (por exemplo, jammy
para 22.04 LTS). Durante a primeira instalação, o script de manutenção do pacote pode perguntar automaticamente qual perfil de rede, modelo de contabilidade de CPU e/ou arquivo de configuração de nó existente você deseja usar.
NOTA : este método também pode funcionar com qualquer distribuição compatível baseada em Debian que tenha libc6
dentro e APT como gerenciador de pacotes.
Chocolate
Colher
Não há mais suporte, consulte a justificativa em kubo#9341.
Scoop fornece kubo como kubo
em seu balde de 'extras'.
PS> balde de colher adicionar extras PS> colher instalar kubo
MacPorts
Nix
Cerveja caseira
O pacote ipfs atualmente aponta para kubo (go-ipfs) e está sendo mantido.
$ sudo port install ipfs
No macOS você pode usar o gerenciador de pacotes puramente funcional Nix:
$ nix-env -i kubo
Você também pode instalar o pacote usando seu nome de atributo, que também é kubo
.
Uma fórmula homebrew ipfs também é mantida.
$ brew install --formula ipfs
O sistema de compilação do kubo requer Go e algumas ferramentas de compilação POSIX padrão:
Marca GNU
Git
GCC (ou algum outro compilador C compatível) (opcional)
Para construir sem GCC, construa com CGO_ENABLED=0
(por exemplo, make build CGO_ENABLED=0
).
Se precisar atualizar: Baixe a versão mais recente do Go.
Você precisará adicionar os diretórios bin do Go à sua variável de ambiente $PATH
, por exemplo, adicionando estas linhas ao seu /etc/profile
(para uma instalação em todo o sistema) ou $HOME/.profile
:
export PATH=$PATH:/usr/local/go/bin export PATH=$PATH:$GOPATH/bin
(Se você tiver problemas, consulte as instruções de instalação do Go).
$ git clone https://github.com/ipfs/kubo.git $ cd kubo $ make install
Alternativamente, você pode executar make build
para construir o binário go-ipfs (armazenando-o em cmd/ipfs/ipfs
) sem instalá-lo.
NOTA: Se você receber um erro semelhante a "erro fatal: stdlib.h: arquivo ou diretório inexistente", está faltando um compilador C. Execute novamente make
com CGO_ENABLED=0
ou instale o GCC.
Compilar para uma plataforma diferente é tão simples quanto executar:
make build GOOS=myTargetOS GOARCH=myTargetArchitecture
Instruções separadas estão disponíveis para construção no Windows.
git
é necessário para go get
todas as dependências.
Os gerenciadores de pacotes geralmente contêm pacotes golang
desatualizados. Certifique-se de que go version
reporte pelo menos 1.10. Veja acima como instalar o go.
Se você estiver interessado em desenvolvimento, instale também as dependências de desenvolvimento.
As conclusões de comandos shell podem ser geradas com um dos subcomandos ipfs commands completion
. Leia docs/command-completion.md para saber mais.
Veja a pasta misc para saber como conectar o IPFS ao systemd ou qualquer sistema init que sua distro usa.
Para começar a usar o IPFS, você deve primeiro inicializar os arquivos de configuração do IPFS em seu sistema, isso é feito com ipfs init
. Consulte ipfs init --help
para obter informações sobre os argumentos opcionais necessários. Após a conclusão da inicialização, você pode usar ipfs mount
, ipfs add
e qualquer um dos outros comandos para explorar!
Prova básica de 'ipfs funcionando' localmente:
echo "hello world" > hello ipfs add hello # This should output a hash string that looks something like: # QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o ipfs cat
Para interação programática com Kubo, consulte nossa lista de clientes HTTP/RPC.
Se você já instalou o IPFS anteriormente e está tendo problemas para fazer uma versão mais recente funcionar, tente excluir (ou fazer backup em outro lugar) do diretório de configuração do IPFS (~/.ipfs por padrão) e executar novamente ipfs init
. Isso reinicializará o arquivo de configuração para seus padrões e limpará o armazenamento de dados local de quaisquer entradas incorretas.
Por favor, direcione perguntas gerais e solicitações de ajuda para nossos fóruns.
Se você acredita ter encontrado um bug, verifique a lista de problemas e, se não encontrar o seu problema lá, fale conosco no chat do Matrix ou registre seu próprio problema!
Consulte IPFS na documentação do GO.
Alguns lugares para você começar a usar a base de código:
Arquivo principal: ./cmd/ipfs/main.go
Comandos CLI: ./core/commands/
Bitswap (o mecanismo de negociação de dados): go-bitswap
libp2p
libp2p: https://github.com/libp2p/go-libp2p
DHT: https://github.com/libp2p/go-libp2p-kad-dht
IPFS: O comando Add
desmistificado
WIP : Este é um diagrama de arquitetura de alto nível dos vários subsistemas desta implementação específica. Para ser atualizado sobre como eles interagem. Quem tiver sugestões pode comentar aqui como podemos melhorar isso!
Origem
Descrição: Pontilhado significa "provavelmente irá embora". As partes "Legado" são invólucros finos em torno de alguns comandos para traduzir entre o novo sistema e o sistema antigo. As partes acinzentadas no diagrama "daemon" existem para mostrar que o código é todo igual, só que ativamos e desativamos algumas partes, dependendo se estamos executando no cliente ou no servidor.
make test
Se você fizer alterações nos buffers de protocolo, precisará instalar o compilador protoc.
Encontre mais documentação para desenvolvedores em documentos
Kubo é mantido pelo Estaleiro.
Este repositório faz parte da triagem GO Triage do Estaleiro.
Processo de Liberação
Nós ❤️ todos os nossos colaboradores; este projeto não seria o que é sem você! Se você quiser ajudar, consulte CONTRIBUTING.md.
Este repositório se enquadra no Código de Conduta IPFS.
Os membros da comunidade IPFS fornecem suporte ao Kubo na categoria de fórum de discussão aqui.
Precisa de ajuda com o próprio IPFS? Saiba onde obter ajuda e suporte em https://ipfs.tech/help.
Este projeto tem licença dupla sob os termos do Apache 2.0 e do MIT:
Licença Apache, Versão 2.0, (LICENSE-APACHE ou http://www.apache.org/licenses/LICENSE-2.0)
Licença MIT (LICENSE-MIT ou http://opensource.org/licenses/MIT)