The following is a proof of concept tutorial on how to create a Tor onion service on Windows 10 using Ubuntu in Windows Subsystem for Linux. This has not been security tested by anyone in the Tor project. It is also not exactly the same directions that I would give someone who wants create an onion service in Linux. Namely that WSfL doesn’t use systemd the way it is meant to be used natively. Instead you have to start system daemons using the old SysV method with /etc/init.d/ Also, services do not continue running after the window has been closed. If someone can find a workaround for that, I’ll gladly update this tutorial.
As for Apache and Tor, they seem to be working normally as long as the Ubuntu window is not closed. The default path for the Apache web server is: /var/www/html/index.html. More info on how to build a website with Apache can be found all over the web.
On with the tutorial!
First, open powershell 64-bit as administrator:
Enable Windows Subsystem for Linux and reboot:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
After rebooting, go to the Microsoft Store and search for Ubuntu 18.04 LTS
Install the App but beware that you will be forced to sign in with a Microsoft account.
Open the new app. You will be prompted to create a local Linux account. This will not be tied to anything else. It is only for your computer.
Update the packages in Ubuntu to the latest versions:
sudo apt update -y && sudo apt upgrade -y
Install Tor and Apache:
sudo apt install apache2 tor -y
Edit the tor configuration:
sudo nano /etc/tor/torrc
Remove the # signs from before the following lines:
HiddenServicePort 80 127.0.0.1:80
The result should look something like this:
Save by hitting CTRL-x
Start apache and then tor:
sudo /etc/init.d/apache2 start && sudo /etc/init.d/tor start
Get your new .onion site url:
sudo cat /var/lib/tor/hidden_service/hostname
Try your new onion service in Tor Browser!