git-ssb: alojamiento descentralizado de repositorios de git

SSB ( Secure Scuttlebutt ) es una red social descentralizada y el protocolo en el que opera. git-ssb envuelve los repositorios de git regulares con este protocolo. SSB quiere reemplazar a Facebook y git-ssb quiere reemplazar a GitHub. Debajo del corte: una guía rápida de git-ssb. Relevante para quienes no se sienten cómodos con la idea misma de utilizar servicios centralizados como intermediario. Una especie de pastilla roja con consecuencias inesperadas en este caso.





Scuttlebutt seguro

El protocolo SSB describe las reglas para sincronizar sus datos entre los nodos de la red interesados ​​en ellos. Sus datos son un historial de sus acciones en la red, una lista vinculada de objetos json. La conexión se establece mediante la suma hash del objeto anterior (como en la cadena de bloques). Por tanto, una vez publicados, los objetos son inmutables y no extraíbles. Solo puede agregar al final de la lista. Un caso de uso típico supone que cada elemento de la lista es una publicación de blog o un comentario. Las imágenes y otros objetos pesados ​​se almacenan fuera de la lista en forma de manchas y se replican por separado. Los objetos de la lista pueden hacer referencia a ellos.





La mayoría de los internautas escriben blogs sobre las aplicaciones Patchwork y Manyverse . Hay alrededor de una docena de aplicaciones de blogs, en su mayoría son compatibles entre sí y difieren en la interfaz. Además, hay ajedrez, chat, administrador de paquetes (ssb-npm) y git (git-ssb) . Algunos desarrolladores de SSB utilizan git-ssb como su principal servicio de control de código fuente. Lo intentaremos también.





Instale ssb-server y git-ssb

Se necesita ssb-server para sincronizar con otros nodos en la red p2p. Debe ejecutarse cuando empuja, extrae, recupera, crea una solicitud de extracción o bifurca un repositorio.





El paquete git-ssb incluye:





  • programa para administrar repositorios (git-ssb)





  • git-remote-helper , que entiende las direcciones que comienzan con 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.





Repositorio de git-ssb en 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





Los cuatro primeros se analizan en detalle en el artículo de Daniel Aleksandersen " Comparación de cuatro herramientas de distribución P2P para repositorios Git ". Hay comentarios de los desarrolladores de SSB al respecto.





Gracias por la atención. Espero que no haya sido demasiado aburrido. Buena descentralización para los que se preocupan.





La imagen del encabezado se generó utilizando el servicio myoctocat.com .








All Articles