⚠ WORK IN PROGRESS ⚠ Like onionshare, but for git repos. Instead of hosting your project (only) on github or the like, host it on a swarm of onions! ⚠ WORK IN PROGRESS ⚠
|
4 years ago | |
---|---|---|
docs | 4 years ago | |
oniongitshare | 4 years ago | |
scripts | 4 years ago | |
stubs | 4 years ago | |
test | 4 years ago | |
HISTORY.md | 4 years ago | |
ISSUES.md | 8 years ago | |
LICENSE | 8 years ago | |
MANIFEST.in | 4 years ago | |
README.md | 4 years ago | |
mypy.ini | 4 years ago | |
setup.py | 4 years ago |
Work in progress
Like onionshare, but for git repos.
Distributed githubless repository sharing. Put the "D" back in DVCS!
oniongitshare is an attempt to ease the distribution of git repos away from central points of failure. It makes it easy to host git repos on a distributed swarm instead of just one central server. Each instance manages a single git repo (for now).
Nodes can come and go, and network topology only depends on the peers entries in the nodes' config files. Changes that are merged by one's peers propagate by diffusion.
Future plans: oniongitshare is meant to evolve into an experimental distributed asynchronous collaboration platform. This means issue tracking and everything else.
Come join the effort! Try it!
Make a new directory and put this in the file ./repo.cfg (when creating a new repository instead of cloning from a peer, the list or indeed the repo.cfg file can remain empty)
[network]
peers = <comma-separated list of onion domain names, with or without the suffix .onion>
For a public repository, no authentication (option -x
) is needed. In case authentication is used, prepend the secret as follows: somebody:secret@peeroniondomainname.onion
.
For each shared repo, Globalist will create one .onion service. Note that it is possible to use either bare repos or not-bare repos.
To initialize a new blank repo and an onion address for it (using the current directory to store the config and repo):
oniongitshare -i
To clone a bare repo:
oniongitshare -c ...
To pull once from a bare repo:
oniongitshare -p
There are various other options and parameters, which you can view:
oniongitshare -h
For example, this uses /srv/oniongit/foobar
as base directory, starts its own tor process under /srv/oniongit/foobar/tor
, communicates with it via the given port, and starts serving:
oniongitshare -T /usr/bin/tor -C 9251 -d /srv/oniongit/foobar
If you initialize a new oniongitshare instance with -i
or -c
, then an onion address will be generated automatically that you can start handing out immediately. This is persistent and will be re-used anytime you serve from the same directory. No need to configure tor manually!
You need the pip3 package setuptools
, the rest will be downloaded automatically.
./setup.py install --user
or
torsocks pip3 install -v -e .
Related projects
https://blog.printf.net/articles/2015/05/29/announcing-gittorrent-a-decentralized-github/ https://safenetforum.org/t/safenetwork-git-portal-discussion/32793
python3 -m nose test/itest.py -s -v --with-coverage --cover-html --cover-branches --cover-package=oniongitshare
Ideas, further work, TODOs: