README.md

ZeroNet

Why?

No single point of failure: Site remains online so long as at least 1 peer is
serving it.

No hosting costs: Sites are served by visitors.

Impossible to shut down: It's nowhere because it's everywhere.

Fast and works offline: You can access the site even if Internet is
unavailable.

Features

Real-time updated sites

Namecoin .bit domains support

Easy to setup: unpack & run

Clone websites in one click

Password-less BIP32
based authorization: Your account is protected by the same cryptography as your Bitcoin wallet

Built-in SQL server with P2P data synchronization: Allows easier site development and faster page load times

Anonymity: Full Tor network support with .onion hidden services instead of IPv4 addresses

TLS encrypted connections

Automatic uPnP port opening

Plugin for multiuser (openproxy) support

Works with any browser/OS

How does it work?

After starting zeronet.py you will be able to visit zeronet sites using
http://127.0.0.1:43110/{zeronet_address} (eg.
http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D).

When you visit a new zeronet site, it tries to find peers using the BitTorrent
network so it can download the site files (html, css, js...) from them.

Each visited site is also served by you.

Every site contains a content.json file which holds all other files in a sha512 hash
and a signature generated using the site's private key.

If the site owner (who has the private key for the site address) modifies the
site, then he/she signs the new content.json and publishes it to the peers.
Afterwards, the peers verify the content.json integrity (using the
signature), they download the modified files and publish the new content to
other peers.

This Docker image includes the Tor proxy, which is disabled by default. Beware that some
hosting providers may not allow you running Tor in their servers. If you want to enable it,
set ENABLE_TOR environment variable to true (Default: false). E.g.: