biton v0.0.1
The biton overlay network
Bypassing information controls with biton
biton is a decentralized network for bypassing online censorship and surveillance. It works by relaying requests through other biton users in order to provide anonymous routing and file sharing. Moreover, it can be deployed over mesh topologies and community networks, and in that way function during Internet shutdowns. biton aims to defend against various tactics used by modern censors, such as protocol fingerprinting, traffic analysis, and bridge enumeration.
A demo of the Web interface is live at https://demo.bitonproject.org.
Project structure
This repository hosts the implementation of biton0_BitTorrent
as an extension to WebTorrent hybrid.
lib/biton-ext.js
the biton extensionbiton-hybrid.js
biton hybrid client integrating the biton extensionbin/biton-hybrid-app.js
command line and Web interface for the biton hybrid clientbin/views/entangled.js
entangled Web demo
Disclaimer
This proof of concept implementation is under development and must not be used besides for simulations.
Install
Setup the development environment
Install node.js and npm through the package manager of your operating system (instructions here). Then,
# Clone git repository
git clone git@github.com:bitonproject/biton
cd biton
# Install node modules
npm install
Compile browser client resources
npm run-script build
This will compile views/index.js
and its dependencies into
bin/public/bundle.js
.
biton command (optional)
npm link
# Now you can start a biton hybrid client by executing
biton
This has to be executed once and will keep track of your local modifications
(creates a symlink for node bin/biton-hybrid-app.js
).
Usage
Integrate biton into your Node.js project
Running biton-hybrid-app
DEBUG=biton* NETMAGIC=test npm start
The Web interface is listening at http://localhost:5000. biton-hybrid
clients are extending webtorrent-hybrid
and can connect to both TCP/uTP and
WebRTC nodes.
Environment variables
Name | Purpose |
---|---|
DEBUG | Enables/disables specific debugging namespaces (e.g. biton* ) |
NETMAGIC | Join independent biton networks (e.g. test ) |
SWARMSEED | Join a biton community (e.g. orbit#biton ) |
PORT | The Web interface listening port (default 5000 ) |
HOST | The Web interface host address (default 127.0.0.1) |
NODE_ENV=production | Serve requests from others (bind host to 0.0.0.0 ) |
Accessing the local Web interface
You can run biton client in the test
demo network
visiting http://localhost:5000. Each tab is an independent biton client, so
you can simulate a swarm of peers by opening multiple tabs.
If you are visiting a local biton-hybrid-app
with Firefox, make sure that you
are not blocking all third-party cookies (custom enhanced tracking protection),
as this prevents connections to BitTorrent trackers. You can temporarily
whitelist localhost via the shield in the URL address bar
(instructions here).
Running in Docker
Build the Docker image and start a container with the name biton-hybrid-client
by executing:
docker-compose up --build
The respective files are:
Dockerfile
an image for the biton hybrid clientdocker-compose.yml
a provisioning script for the above image
License
4 years ago