Putting My Website on The Tor Network
Taha Azzaoui - 2019.01.22
I’ve gone over setting up tor as a client to be able to access hidden services in the past here. This time, I thought it would be cool to host a hidden service on the Tor network. Note that while the point of hidden services is to publish sites without revealing one’s identity, I’ll just be serving this site here, so I’m not too concerned with anonymity.
TL;DR on Tor
Tor is well known for being a network that allows one to browse the web with some level of anonymity. It does so by nesting layers of encryption and routing packets through nodes in the network such that each node has only enough information to decipher which node the packet came from and which node to forward it to. As such, a packet’s path through the Tor network cannot be deterministically traced. For more on how this works see here.
Setting Up the Hidden Service
Start by installing tor (obviously). It should be available via your local package manager.
$ sudo apt install tor
Next, edit the configuration file
$ sudo vim /etc/tor/torrc
Uncomment the line that reads
as well as the line that reads
Jump down to the section labeled
############### This section is just for location-hidden services ###
Uncomment the two lines
HiddenServiceDir /var/lib/tor/hidden_service/ HiddenServicePort 80 127.0.0.1:80
Start the tor daemon
$ sudo systemctl start tor $ sudo systemctl enable tor
To see your generated .onion address, run
$ sudo cat /var/lib/tor/hidden_service/hostname
Edit your web server configuration. I’m using Apache in this case. Locate the site configuration in use, found in
/etc/apache2/sites-available/and add the line
ServerAlias <your generated address>.onion
directly under where the ServerName is specified.
Finally, restart Apache
$ sudo systemctl restart apache2
Your hidden service should now be live. Check out using a Tor browser.