git-ssb - dezentrales Hosting von Git-Repositories

SSB ( Secure Scuttlebutt ) ist ein dezentrales soziales Netzwerk und das Protokoll, mit dem es arbeitet. git-ssb umschließt mit diesem Protokoll reguläre Git-Repositorys. SSB will Facebook ersetzen und git-ssb will GitHub ersetzen. Unter dem Schnitt - eine Kurzanleitung zu git-ssb. Relevant für diejenigen, denen die Idee, zentralisierte Dienste als Vermittler zu nutzen, unangenehm ist. Eine Art rote Pille mit unerwarteten Folgen in diesem Fall.





Scuttlebutt sichern

Das SSB-Protokoll beschreibt die Regeln für die Synchronisierung Ihrer Daten zwischen den daran interessierenden Knoten des Netzwerks. Ihre Daten sind eine Historie Ihrer Aktionen im Netzwerk, eine verknüpfte Liste von JSON-Objekten. Die Verbindung wird durch die Hash-Summe des vorherigen Objekts festgelegt (wie in der Blockchain). Somit sind Objekte nach ihrer Veröffentlichung unveränderlich und nicht entfernbar. Sie können nur am Ende der Liste hinzufügen. Ein typischer Anwendungsfall setzt voraus, dass jedes Element in der Liste ein Blog-Beitrag oder Kommentar ist. Bilder und andere schwere Objekte werden in Form von Blobs aus der Liste gespeichert und separat repliziert. Objekte in der Liste können auf sie verweisen.





Die meisten Internetnutzer bloggen über die Patchwork- und Manyverse-Apps . Es gibt ungefähr ein Dutzend Blogging-Anwendungen, die größtenteils miteinander kompatibel sind und sich in der Benutzeroberfläche unterscheiden. Darüber hinaus gibt es Schach, Chat, Paketmanager (ssb-npm) und git (git-ssb) . Einige SSB-Entwickler verwenden git-ssb als Haupt-Quellcodeverwaltungsdienst. Wir werden es auch versuchen.





Installieren Sie ssb-server und git-ssb

SSB-Server wird benötigt, um mit anderen Knoten im P2P-Netzwerk zu synchronisieren. Es sollte ausgeführt werden, wenn Sie ein Repository pushen, ziehen, abrufen, eine Pull-Anforderung erstellen oder ein Repository aufteilen.





Das git-ssb-Paket enthält:





  • Programm zur Verwaltung von Repositorys (git-ssb)





  • git-remote-helper , der Adressen versteht, die mit ssb: // beginnen





  • 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.





Git-ssb-Repository in 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





Die ersten vier werden in Daniel Aleksandersens Artikel " Vier P2P-Verteilungstools für Git-Repositories im Vergleich " ausführlich analysiert . Es gibt Kommentare von den SSB-Entwicklern dazu.





Vielen Dank für Ihre Aufmerksamkeit. Hoffe es war nicht zu langweilig. Gute Dezentralisierung für diejenigen, die sich interessieren.





Das Bild in der Kopfzeile wurde mit dem Dienst myoctocat.com erstellt .








All Articles