2017-10-12
ZeroMe - Decentralized Microblogging on ZeroNet
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.
Starting ZeroNet
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 43110
but you should use a browser configured to use Tor if anonymity is a concern since sites can run arbitary JavaScript. The main ZeroNet 'Hello' page warns you if you are not using Tor Browser in this configuration.
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 zeroid.bit
- http://localhost:43110/zeroid.bit
.
Click 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 BitMessage
address.
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
identities.
The ZeroId
site will show your identity name once you've signed up:
From ZeroId
you can search for existing users and choose to Mute
or 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
Access 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 ZeroId
above.
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):
Random stuff
The 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.