# The biton overlay network
(opens new window) (opens new window)
# Bypassing information controls with biton
https://bitonproject.org (opens new window)
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.
# Project structure
This monorepo hosts the implementation of biton as an extension to WebTorrent (opens new window), divided into the following modules:
lib/biton-ext.js
the biton extensionbiton-hybrid.js
biton hybrid node 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 (opens new window)). 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
# Running biton-hybrid-app
DEBUG=biton* INFOHASHPREFIX=test node bin/biton-hybrid-app.js
The Web interface is listening at http://localhost:5000 (opens new window).
# Environment variables
Name | Purpose |
---|---|
INFOHASHPREFIX | Join demo biton networks. |
HOST | The Web interface host address. |
PORT | The Web interface listening port. |
DEBUG | Enables/disables specific debugging namespaces. |
# Running biton-browser
You can spawn a biton browser client in the network with the infoHash prefix
test
by visiting http://localhost:5000/biton-browser (opens new window). Each tab is an
independent biton client, so you can open multiple tabs for simulating a swarm
of peers.
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 whitelist localhost
via the shield in the URL address bar
(instructions here (opens new window)).
# 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