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.
This is a summary of a procedure for hosting a zite on ZeroNet:
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.
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:
wget https://github.com/HelloZeroNet/ZeroNet/archive/py3/ZeroNet-py3.tar.gz 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 zeronet.py 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.
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:
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 https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz 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.
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 wget https://bootstrap.pypa.io/get-pip.py sudo python3.6 get-pip.py 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".
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.
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:
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 127.0.0.1, and on the "No proxy for" line, enter 127.0.0.1.
To connect to ZeroNet, boot up your TOR browser and type 127.0.0.1:43110 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/zeronet.py --tor_proxy 127.0.0.1:9150 --tor_controller 127.0.0.1:9151
Now, refresh the browser window into which you typed 127.0.0.1:43110. 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 http://127.0.0.1:43110/15CEFKBRHFfAP9rmL6hhLmHoXrrgmw4B5o/ .
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 cheapskatesguide.org articles referenced earlier.
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.
If you have trouble creating an identity on ZeroID, try this zite: http://127.0.0.1:43110/kxonet.bit/?/create-id .
To clone a zite, do the following.
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.
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).
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.
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:
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.
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.
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.