Cheapskate's Guide

Home Contact

Cheapskatesguide on ZeroNet

How to Host Your Own Decentralized Site for Free on ZeroNet


Several months ago, I explained how to host your website on a Raspberry Pi 3 computer for $2 a year. This article will explain how to host your site on ZeroNet for free. Hosting a site on ZeroNet is much easier than hosting a website on the Internet from a webserver in your physical possession. Hosting fees and domain name registration fees are not charged for ZeroNet sites. No one will ever charge you a penny.

You should be aware of a few things about ZeroNet before you decide whether creating a site there is right for you. First, ZeroNet isn't on the web. It's a distributed network that runs "on top of" the Internet. So, a site on ZeroNet isn't a website. That's why it's called a "zite", instead of a website. Second, you cannot use PHP code on ZeroNet zites. You are limited to html, css, JavaScript, and CoffeeScript. Next, while you can host a ZeroNet zite for free on your own computer, the usual method of hosting depends on having peers who think your zite is worthwhile enough to save a copy of it onto their computers. Right now, standards are pretty low on ZeroNet, so if your zite has any value at all, the chances are high that at least a few people on ZeroNet will want to support it. Each computer that has a copy of a particular zite saved onto its hard drive is called a "seeder" of that zite. Finally, ZeroNet is still much smaller than the Internet, so it is currently not a great place to make money. For more information on ZeroNet, you can read two earlier articles, "ZeroNet and the Future of the Internet" and "What I've Learned from My First Six Months on ZeroNet".

This is a summary of a procedure for hosting a zite on ZeroNet:

Summary of How to Host a Zite on ZeroNet

  1. Download and install the ZeroNet software onto your laptop or desktop computer.
  2. Install Python 3.6, if necessary.
  3. On Linux computers, add required ZeroNet software dependencies.
  4. Download and install the TOR browser onto your computer.
  5. Configure the TOR browser for ZeroNet.
  6. Boot up the TOR browser and then boot up the ZeroNet software.
  7. Create a ZeroNet identity.
  8. "Clone" an existing ZeroNet zite.
  9. Add your html, css, and JavaScript files into the "data" folder of your cloned zite.
  10. Submit your new zite's address to one or more zites on ZeroNet that post zite addresses for other ZeroNet users to find.
  11. After your zite has 10 or more seeders, you can shut down your computer.

Each of the above steps is fairly easy to implement. I will now explain each in detail or direct you to places on the Internet with good explanations. Although ZeroNet works on Windows, MacOS, and Linux computers, my explanations for installing, configuring, and running ZeroNet will be limited to Linux. I will not cover them for Windows and MacOS, except to point you to places on the Internet where they can be found. Most steps should be the same for all three operating systems.

Downloading and Installing the ZeroNet Software

The procedures for downloading and installing the ZeroNet software on Windows, MacOS, and Linux computers can be found on the GitHub page for ZeroNet. These instructions are pretty terse, because they were written by computer nerds for computer nerds. I will do my best to make things a little clearer for anyone else who may be reading this. But first, you should carefully read through the frequently asked questions about ZeroNet. This will probably save you time when you go through the rest of the steps of configuring ZeroNet and creating a zite.

Unfortunately the instructions on the ZeroNet Github page confuse things by explaining how to download and install the Python 2 and Python 3 versions of ZeroNet. You want only the Python 3 version, because it is the latest. On Linux computers, download and uncompress the ZeroNet software as follows. First, go into whatever directory or folder on your computer's hard drive you want to install ZeroNet into. I'll use the words "folder" and "directory" interchangeably in this article, because directories existed in Unix before Microsoft was founded. Not until Microsoft created the Windows operating system did it take it upon itself to change the word "directory" to "folder" to be consistent with the Windows folder icon. Now, at the Linux command line, type:

tar -xvpfz ZeroNet-py3.tar.gz

After the newest ZeroNet software is extracted from its compressed "tar" file, it will reside in a subfolder called ZeroNet-py3. The file in the ZeroNet-py3 folder is the file that boots up ZeroNet. The "data" folder inside the ZeroNet-py3 folder is where the data for all the ZeroNet zites that you will visit will be saved. This is also where the data for the zite you will create will reside.

Installing Python 3.6, if Necessary

This version of ZeroNet requires Python 3 or higher to be running on your computer. Check so see which versions of Python are installed on your Linux computer by typing:

ls -l /usr/bin/python*

Now, check to see which version of Python is used if you do not specify a version of Python to use:

python -V

If your computer is running Python 3 or higher, you can skip to the next section and begin adding the ZeroNet software dependencies. If you are using an older version of Linux that doesn't already have Python 3 or higher, you will need to install it. I will give the procedure for installing Python 3.6 onto a Linux Mint 17 computer, but it may be different for your Linux distribution. If you are running Windows or MacOS on your computer, and you need to install a newer version of Python, try one of the installation procedures found here or here.

To install Python 3.6 in Linux Mint 17, type in a Linux terminal window:

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt update
sudo apt-get install python3.6

Now reboot your computer. After rebooting, type "python3.6" (without the quotes) on the Linux command line. If you see a message "Python3.6.9" and the current date followed by the Python command prompt, ">>>", then you have successfully installed Python 3.6. Exit from Python 3.6 by typing Ctrl-D (that's the "Ctrl" key and the "d" key at the same time).

If the installation of Python 3.6 was unsuccessful, you'll have to install Python 3.6 by downloading and compiling its source code. First, install the Python 3.6 dependencies:

sudo apt-get install build-essential checkinstall
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

Then, download and extract the Python 3.6 code:

cd /usr/src
sudo wget
sudo tar -xzf Python-3.6.9.tgz
sudo rm Python-3.6.9.tgz

Compile the Python 3.6 code:

cd Python-3.6.9
sudo ./configure --enable-optimizations
sudo make altinstall
ls -l /usr/bin/python*

The last command above should show that Python 3.6 is installed.

Adding Required ZeroNet Software Dependencies on Linux Computers

After Python Version 3 or higher is running on your computer, you can install the additional software required for the ZeroNet software to run correctly. Substituting in the version of Python you are using, type:

cd ZeroNet-py3
sudo python3.6
sudo -H python3.6 -m pip install -r requirements.txt

By specifying "python3.6" in the commands above, instead of just "python", you are telling your computer to use Python 3.6, instead of the default version of Python. If you were forced to install some version of Python other than version 3.6, you must substitute it into the commands above in place of "python3.6".

Downloading and Installing the TOR Browser

Download the latest version of the TOR browser for your operating system from the download page of its website. Linux users, extract the "tar" file into whatever directory you want the TOR browser to reside in. When I last downloaded the TOR browser, it was Version 9.0.4, and it uncompressed into a folder called "tor-browser_en-US". Inside that folder, click on the "Tor Browser Setup" icon. The TOR browser is now installed.

Configuring the TOR Browser for ZeroNet

Your configuration of the TOR browser will depend on the country in which you live. If the TOR network is censored in your country, you will want to use a TOR bridge, instead of the usual TOR relay nodes. You can find information on using TOR bridges in the "Using the TOR Browser or the TAILS Operating System" subsection of this article. I'll assume in the following procedure that TOR is not censored in your country:

How To Configure the TOR Browser for ZeroNet

In older versions of the TOR browser, go to the TOR browser settings/preferences/network proxy. Select "manual proxy configuration". On the "SOCKS Host" line, enter, and on the "No proxy for" line, enter

Booting Up the TOR Browser and then the ZeroNet Software

To connect to ZeroNet, boot up your TOR browser and type onto the URL line. Then, hit the "return" key. Bring up a Linux terminal window and type at the Linux command line:

python3.6 /home/mint/ZeroNet-py3/ --tor_proxy --tor_controller

Now, refresh the browser window into which you typed If you have done everything correctly, you will now be looking at the "Hello ZeroNet" page in your browser. Look at the number of "TRACKERS" in the upper-right corner. It should say something like "7/10". If the first number is not zero, you have successfully connected to the ZeroNet network.

In order to protect your anonymity on the ZeroNet network, you will need to hide your IP address from other ZeroNet peers. This is accomplished by running in "TOR Always" mode. Click on the "TOR:AVAILABLE" button at the top of the page. Select "Enable Tor for every connection (slower)". Click on the "Restart Now" button and then on the "Restart" button. The "TOR:AVAILABLE" button should now read "TOR:ALWAYS". Other ZeroNet peers will now see the address of a TOR relay node, instead of your true IP address. The simplest way to insure that you always boot up ZeroNet in the TOR Always mode is to first bring up the TOR browser, and then bring up ZeroNet. If you bring up ZeroNet first, you will not be in the TOR Always mode.

If you click on "STATS" in the upper-left corner of the Hello ZeroNet page, you will probably see that you are only connected to a few hundred peers. To increase this to thousand of peers, follow the instructions found on the Sycronite page at .

Getting Additional Help on ZeroNet

The ZeroTalk forum is the best resource for ZeroNet newbies who need help using ZeroNet. To activate ZeroTalk, click on the "ACTIVATE" button next to "ZeroTalk" in the lower left corner of the "Hello ZeroNet" page. Use the ZeroTalk search line liberally to search for keywords of topics on which you need help. One thing I should warn you about is that some individuals on ZeroTalk try to encourage newbies to leave ZeroNet by being obnoxious to them. Ignore those people. Most ZeroNet users want more people to use ZeroNet, and they will be happy to point you to information that explains how to use it. For additional help, you can also read the two articles referenced earlier.

Creating a ZeroNet Identity

Certain things that you do on ZeroNet require a ZeroNet "identity". Identities on ZeroNet are completely anonymous, but among other things, they allow you and your friends on ZeroNet to recognize each other when you send email or make posts or comments on forums. An identity also allows you to create and maintain control of your own zite. Only you will be able to modify a zite that was created with your identity. I should warn you that an identity can be lost very easily by deleting files that you shouldn't. So, as soon as you have created a new identity, make a copy of your entire ZeroNet-py3 folder and store it in a safe place. This will also be useful later for other reasons. Please, just trust me and do it.

Several zites help you create (or register) a ZeroNet identity. Unfortunately, they do not coordinate with each other. This is something you need to be aware of when you create a zite that allows users to make posts or comments. But, for now, let's get you registered with the most popular identity registration zite, ZeroID.

How to Register an Identity on ZeroNet

If you have trouble creating an identity on ZeroID, try this zite: .

"Cloning" an existing ZeroNet Zite

Zites on ZeroNet can be created in two ways. The first is to follow the instructions near the bottom of the ZeroNet GitHub page. That has never worked for me. The second method is to pick a zite with a format that is similar to the one you want to create, clone it, and replace the existing html, css, and JavaScript with your own. For example, if you want to create a forum, you can clone one of the forums already on ZeroNet and either modify its html and JavaScript or completely replace it. Note that some of the pre-existing JavaScript may be required; you'll just have to experiment to see if you can delete it all. Make backups! I created a static version of recently on ZeroNet ( simply by cloning a pre-existing blog, replacing the index.html file with my own, and adding my directory containing my articles. I left everything else in the cloned zite untouched. I did modify all of my articles to remove calls to my PHP code, but that was nearly all I did.

To clone a zite, do the following.

How to Clone a ZeroNet Zite

Cloning a Zite

That's it. You now have a new zite on ZeroNet. At the moment, however, you are the only one who can see your zite. Before I explain how to make it visible to other ZeroNet users, let me mention a few important things you need to know.

Adding Your Html, CSS, and JavaScript Files to Your Cloned Zite

In the process of creating your new zite, a few things have happened in your ZeroNet-py3 directory. First, some files have changed in the top level of ZeroNet-py3. The most important one is your user.json file. A section has been added to your users.json file for your new zite. Inside that new section is your "privatekey" ( not the "auth_privatekey") to your zite. This key gives you sole control of your zite. You will need this key every time you make a change to your zite. If someone else gets access to this key, they can take control of your zite. So make a copy right now of your users.json file, label it appropriately, and save it in a safe place.

The next change is that a data directory for your new zite has been added to the ZeroNet-py3/data directory. Your zite's data directory is labeled with the ZeroNet address of your zite. Inside that directory you will find, among other things, your index.html file that is the home page of your zite. This is the page you can replace with your own index.html file, and you will add any other html, css, or javascipt code or directories containing your other files that you want into this directory. If you have never created a website on the clearnet before, you now have a lot to learn about html, css, and so forth to modify your cloned zite. If you already have a pre-existing website on the clearnet that you are simply mirroring here, all you have to do is copy the entire directory structure here and make sure the permissions are still set correctly, and you are done (as long as you are not using PHP code on your clearnet website).

On your new zite, you will see a ZeroNet icon in the upper-right corner of the page in your browser. Click on it, and slide it to the left to reveal the site control panel for your site. This panel lets you change things like your site title and description. You can also delete your zite using the "Delete" button. Whenever you make changes via the site control panel that you want your peers on ZeroNet to see, click on the "Update" button (wait for the "Site Updated!" message). Whenever you make changes to the contents of your zite (e.g. adding html files or modifying JavaScript) click on the "Sign and publish" button to send the changes to your ZeroNet peers. You may be asked to supply your private key before changes will be sent to peers. That is the "privatekey" in your users.json file. If you are not asked for your private key, the private key in your users.json is being used automatically.

When you click on the "Sign and publish" key for the first time, you will see messages that say, "Content publish failed." and "No peers found, but your content is ready to access." These messages simply mean that no peers have saved your zite changes to their hard drives. The reason for this is simply that no one on ZeroNet knows about your zite. Remember that peers are simply other computers that are currently connected to ZeroNet that have downloaded your zite to their hard drives. Now we need to advertise your zite, so that some ZeroNet users will decide to visit your zite and copy it to their hard drives.

Submitting Your New Zite's Address to Posting Zites on ZeroNet

Now it's time to take your new zite public. Unfortuantely, the search engines on ZeroNet do not work very well, yet. So, most ZeroNet users find new zites by visiting one or more of several zites that exist solely to direct users to zites they haven't visited before. Here are four such zites:

4 Places to Advertise Your New Zite on ZeroNet

After you have submitted your new zite to each zite in the above list, consider posting a short advertisement on ZeroTalk. I would recommend posting just the name, the address, and a short, clear description of the zite. As long as you keep your post informative and don't over-hype, no one should mind.

Waiting for Seeders

ZeroNet users normally take two approaches to seeding their zites. The first is to put up their own zeroNet "node" that runs 24 hours a day/7 days a week. This can be expensive in terms of electricity, but it doesn't have to be, if you turn a Raspberry Pi computer into a ZeroNet node. This approach may make sense if your zite is sharing files and you have tens or hundreds of megabytes or more of files to share. The other approach is to leave running whichever computer you normally use to connect to ZeroNet until you have enough seeders to ensure that any new visitors are assured of having access. My guess is that 10 or more seeders would be enough to accomplish this, especially if that number is growing. This approach should work just fine if you have a small blog with a few megabytes of files at most.

You can see how many seeders your zite has in a couple of ways. The easiest is to go to the Hello ZeroNet page and look for your zite on the left side. To the right of the name of your zite, you will see a clock symbol, a date (or a number of minutes or hours in the past), a "person" symbol, and a number. The number is the number of seeders of your zite that are currently on line. As people arrive on the ZeroNet network and leave, this number will fluctuate to represent the number of seeders that can currently transmit a copy of your zite to anyone who can see them on the network.

Final Words

Despite the fact that this article has been rather long, creating a zite on ZeroNet is not that hard. ZeroNet is fairly easy to use once you understand how. I hope I've given clear enough instructions for those who are using operating systems other than Linux to have a good idea of how to create ZeroNet zites using their computers.

Currently, ZeroNet is small, perhaps two to three hundred thousand users. My expectation is that ZeroNet will continue to grow. As that occurs, zites that are being created now will have an advantage over future zites. I have noticed that a handful of commercial websites on the clearnet have come to the same conclusion and put mirror or placeholder zites on ZeroNet. Whether you are an individual who just wants to make a simple blog for expressing your thoughts to others, or you are a corporate web designer, now is the time to think seriously about creating a zite on ZeroNet.

Related Articles:

How to have Your Own Website for $2 a Year

ZeroNet and the Future of the Internet

What I've Learned from My First Six Months on ZeroNet

A Guide to Restoring Your Internet Freedom at School, at Work, and in Countries that Block Websites

A Review of the FreedomBox Software

Going Dark: Looking for the End of the Internet, Part 1


Required Fields *


Comments Powered by Babbleweb

*Day of the month in North America + 8 =