I wrote about ZeroNet a few years ago when it was released and it mostly was about decentralized websites. In the time between then and now it has gained a lot of features and regular use. It still does distributed websites well but it adds features suchs as support for sharing large files, merging sites and distributed pseudo-anonymous identity. This post is about an application hosted on ZeroNet called
ZeroMe. It's a microblogging platform (i.e. A twitter like system) that takes advantage of ZeroNet's identity system and merging of sites.
To start with ZeroMe you first need to install ZeroNet. Given all the right dependancies are installed you can clone the github repository and run the Python script to get online:
$ git clone https://github.com/HelloZeroNet/ZeroNet $ cd ZeroNet $ ./zeronet.py
This will start the ZeroNet node and run a local webserver on port
43110 to access it. This port is available on the local machine only. It also opens a port on
15441 to communicate with other nodes. This port is open to the internet at large and will attempt to punch a hole through firewalls using UPNP.
If you have the Tor daemon running then ZeroNet will connect to it and bridge between clearnet nodes and nodes running on Tor. You can force the node to run only on Tor by providing a command line argument:
$ ./zeronet.py --tor always
In this configuration ZeroNet will not expose the port
15441 over the internet. It will spawn Tor onion services and expose the port to those for communication with other ZeroNet nodes running on onion services. Access to the local node is still done via port
Gaining an identity
ZeroMe requires an identity to be created. Identities are created through identity ZeroNet sites. The main one, operated by the creator of ZeroNet, is
ZeroId. When you first use a site that requires an identity you will be prompted to create one from any identity providers you have access to. For this example I'll use
ZeroId, accessible at
Get auth cert and choose a username. There are two ways to make the request for the identity. The first is a request over the internet via HTTP. If you're not running the browser over Tor this will expose your IP address to the identity service. The other is using BitMessage, which is an anonymous messaging system.
ZeroId will request that you send a confirmation message to a
This may seem very centralized - it requires the identity service to be running, if it goes down you can't create a new identity. There are other identity services on ZeroNet that have different requirements for creating an identity. And there's an API to create your own. Identities created using these work on any service using the ZeroNet identity API in the same was as
ZeroId site will show your identity name once you've signed up:
ZeroId you can search for existing users and choose to
Unmute. By muting a particular identity you won't see any posts from that identity. This is useful for dealing with spam or users posting on topics you don't want to see. This will prevent you seeing their content on any ZeroNet site.
You can manage muted users from the
Hello page left sidebar menu:
Joining a ZeroMe Hub
ZeroMe by activating the
ZeroMe icon on the main user interface or going directly to
Me.ZeroNetwork.bit - http://localhost:43110/Me.ZeroNetwork.bit/
A prompt on the top right asks you to accept a merger site. Merge sites are a way to split large sites into a number of smaller ones. You should approve this request.
Click on "Select user to post new content" to create a
ZeroMe user. It will prompt for an identity to choose and you can select the one already created in
Once an identity is chosen you'll be asked to select a 'hub'.
ZeroMe works by having the user interface operate from the main
ZeroMe site with data on users and posts stored in 'Hub' sites. You only see posts from users that belong to hubs that you have requested. There is a hub operated by the
ZeroMe creator and it will be shown as
Sun hub on this page along with any other Hub sites you may already have requested. Click
Download on a hub to download existing posts and content for that hub and
Join to join one.
Downloading a hub can take some time. On the
Hello ZeroNet page you can see the progress of any sites currently being downloaded.
There's a useful site called
0hub.bit that lists known hubs and lets you download them all. It's at
http://localhost:43110/0hub.bit/ and clicking the
Click me to unlock all hub post in ZeroNet will start downloading them. This takes some time but is worth it since you can then see all posts by everyone on
ZeroMe. You can delete hubs if you decide you don't want to see content from a particular hub.
Microblogging with ZeroMe
Now that you've got an identity, signed into ZeroNet and joined a hub you can starting reading content and posting. The
Everyone tab in the user interface will show posts from all users, even those you haven't followed. This is useful at the beginning to find users and content.
Posts are in Markdown format and can include images. There is no limit to the size of a post and posts can have comments. You can visit profile pages of users and choose to optionally seed their images, mute users, and edit parts of your own profile page to have an avatar and description:
An example of a post with comments (selected randomly, identities blacked out):
ZeroNet node running on your machine enforces size limits for sites. This prevents sites that you have accessed from consuming all your disk space. When a site starts reaching the size limit it appears in the main
Hello page left sidebar in a special section:
When the site goes past the limit it will no longer download updates. Visiting the site will give a popup asking to increase the limit. Approving that popup will resume downloads for the site until it hits the next limit.
There's a sidebar on the right of pages that can be accessed by dragging the top right
0 icon to the left:
This sidebar gives statistics on the number of nodes seeding the site, the size limit, and various other things.
When you visit a ZeroNet site you starting seeding that sites content and receive automatic updates when the content changes. This can be disabled on the main
Hello page on a per site basis. Sites can have "optional files" which you don't automatically seed. They are downloaded on demand and are often used for user generated content or larger files. You can choose to seed a sites optional files in the right hand sidebar for that site. There are also "Big Files" which are treated specially. These are large files like videos and are also optionally seeded. The
Files tab of the
Hello page lists optional and big files that you are seeding:
Sites can be set to allow cloning by end users. This creates a copy of the site with no content. An example of a site that does this is
ZeroBlog which you can clone to create your own blog. This extends to
ZeroMet itself. You can clone the
ZeroMe user interface site and modify that to get a customized look but it still uses the data from the existing hubs.
There's a bunch of other interesting sites on ZeroNet. The
ZeroTalk forums, various blogs,
ZeroMail for encrypted email like service, etc. Be aware that the psuedo-anonymous use of identities can make for content you might not agree with and much spam. Use of 'Mute' is useful here.
Also be aware that it is 'psuedo-anonymous' not 'anonymous'. You create an identity and that identity is not tied to you in the real world but people can track what you do to that identity. Content is added to sites and distributed to other nodes. If you
like a post or add content to some site then anyone who decides to dig into the data of that site can see that your identity liked or posted that content. It is possible to have multiple identities if you want to keep aspects of your ZeroNet usage separate but that's a topic for another post.
Overall ZeroMe is a nice microblogging system. It's user friendly, has a nice design and has tools for muting and "Non Real Name" identities. It, along with ZeroNet, is actively developed and supported by the ZeroNet developer.