git-ssb - hospedagem descentralizada de repositórios git

SSB ( Secure Scuttlebutt ) é uma rede social descentralizada e o protocolo em que opera. git-ssb envolve repositórios git regulares com este protocolo. SSB deseja substituir o Facebook e git-ssb deseja substituir o GitHub. Sob o corte - um guia rápido para git-ssb. Relevante para aqueles que não se sentem confortáveis ​​com a própria ideia de usar serviços centralizados como intermediários. Uma espécie de comprimido vermelho com consequências inesperadas neste caso.





Boato seguro

O protocolo SSB descreve as regras para sincronizar seus dados entre os nós da rede interessados ​​neles. Seus dados são um histórico de suas ações na rede, uma lista vinculada de objetos json. A conexão é definida pela soma hash do objeto anterior (como no blockchain). Assim, uma vez publicados, os objetos são imutáveis ​​e não removíveis. Você só pode adicionar ao final da lista. Um caso de uso típico assume que cada item da lista é uma postagem ou comentário de blog. Imagens e outros objetos pesados ​​são armazenados fora da lista na forma de blobs e replicados separadamente. Os objetos da lista podem se referir a eles.





A maioria dos internautas tem um blog nos aplicativos Patchwork e Manyverse . Existem cerca de uma dúzia de aplicativos de blog, em sua maioria, são compatíveis entre si e diferem na interface. Além disso, há xadrez, chat, gerenciador de pacotes (ssb-npm) e git (git-ssb) . Alguns desenvolvedores SSB usam git-ssb como seu principal serviço de controle de origem. Vamos tentar também.





Instale ssb-server e git-ssb

O ssb-server é necessário para sincronizar com outros nós na rede p2p. Deve ser executado quando você faz push, puxa, busca, cria uma solicitação de pull ou bifurca um repositório.





O pacote git-ssb inclui:





  • programa para gerenciar repositórios (git-ssb)





  • git-remote-helper , que entende endereços começando com ssb: //





  • web-, GitHub





ssb-server.





$ sudo apt install git nodejs npm
$ npm install ssb-server git-ssb
      
      



ssb-server git-ssb $HOME/node_modules



. , ~/.profile



:





if [ -d "$HOME/node_modules/.bin/" ] ; then
    PATH="$HOME/node_modules/.bin/:$PATH"
fi
      
      



$PATH



,





$ source ~/.profile
      
      



~/.profile



. (, Xfce) . $PATH



, .xsessionrc



~/.profile



:





. ~/.profile
      
      



ssb-server .





$ ssb-server start
      
      



identity ~/.ssb



.





, . , , . . , .





. , . . , .





$ ssb-server invite.accept <-->
      
      



: , - .





@cel

@cel - git-ssb.





$ ssb-server publish --type contact --contact "@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519" --following
      
      



~/.ssb



1Gb - ( git-) , . , .





. :





web-

$ git-ssb-web
      
      



, issue . , , , , . activity log, - , GitHub.





Repositório Git-ssb em git-ssb
git-ssb git-ssb

web- (, , issue ) . , : , issue ... ssb-server ( ) .





$ mkdir my-new-repo
$ cd my-new-repo
$ git init
Initialized empty Git repository in /tmp/my-new-repo/.git/

$ git-ssb create ssb my-new-repo
Created repo: ssb://<hash-code>.sha256 (my-new-repo)
Added remote: ssb

$ git remote -v
ssb    ssb://<hash-code>.sha256 (fetch)
ssb    ssb://<hash-code>.sha256 (push)
      
      



git init



git-ssb create ssb my-new-repo



, my-new-repo



URL remote ssb



. remote .





ssb remote . .





: - SSB. .





$ git push ssb master
      
      



, . git-ssb pack- blob, 5Mb. . , , :





$ git push ssb master -o allow-big
      
      



(blob ), pack- , blob.





pack- - , git- pack- 5Mb.





git-ssb git-ssb. SSB DNS . ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256



web-.





$ git clone ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 git-ssb
$ cd git-ssb
$ git remote -v
origin    ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (fetch)
origin    ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (push)
      
      



remote, SSB.





$ git-ssb fork my-fork
Created repo: ssb://<new-hash-code>.sha256 (git-ssb)
Added remote: my-fork
$ git remote -v
my-fork    ssb://<new-hash-code>.sha256 (fetch)
my-fork    ssb://<new-hash-code>.sha256 (push)
origin    ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (fetch)
origin    ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (push)
      
      



, remote.





-

.





$ git-ssb pull-request
      
      



, . , .





, . (git-ssb-intro), . @-/master



(git checkout -b @-/master



), (git push ssb



), - (git ssb pull-request



). master -.





, identity ( identity - . ) . git-ssb , . . identity, , . , , . , - , .





Identity ~/.$ssb_appname/secret



. ssb_appname



, identity (~/.ssb



). secret



, ssb-server .





permissionless , , identity.





, : - , , sudo make install



. , - . , , git pull



. , .





SSB.





?

git-ssb-intro: a guide to hacking together on the distributed web





git:





  • GitTorrent ( BitTorrent)





  • HyperGit ( Dat)





  • igis-remote ( IPFS)





  • ipld-remote ( IPFS)





  • GitCenter ( ZeroNet)





  • Mango (Ethereum + IPFS)





  • Radicle





  • Gitopia





Os quatro primeiros são analisados ​​em detalhes no artigo de Daniel Aleksandersen " Comparação de quatro ferramentas de distribuição P2P para repositórios Git ". comentários dos desenvolvedores do SSB sobre isso.





Obrigado pela atenção. Espero que não tenha sido muito chato. Boa descentralização para quem cuida.





A imagem no cabeçalho foi gerada usando o serviço myoctocat.com .








All Articles