Anyone Hidden Service

Setting Up Hidden Services on the Anyone Network

This guide gives an example and explains how to set up hidden services on the Anyone Network. There are several options to run anon. The following tabs explain how to install it as a Debian package using our APT repository or via command line tools using the NPM package. Alternatively see the page called Install Anon in Docker to find Docker instructions. Or read the Anon Client Releases page where you'll find instructions and links to examples utilizing the Anyone Protocol GitHub Releases.

  1. Install the anyone-client with npm, edit a custom anonrc and start the client with npx.

npm install @anyone-protocol/anyone-client

For detailed instructions see: Install NPM Package Run from CLI

  1. Backup any existing configuration and create a custom anonrc:

mkdir -p ./anon
[ -f ./anon/anonrc ] && mv ./anon/anonrc ./anon/anonrc_$(date +"%Y%m%d_%H%M%S").bak
touch ./anon/anonrc
  1. To be able to route traffic through anon, add some configuration to the anonrc file:

cat <<EOL | tee ./anon/anonrc
ORPort 0
ControlPort 0
SocksPort 127.0.0.1:9050
SocksPolicy accept 127.0.0.1
SocksPolicy reject *
DataDirectory ./anon/

HiddenServiceDir ./anon/anon_service/
HiddenServicePort 80 127.0.0.1:80
EOL

HiddenServiceDir This directory will store hidden service data and keys. Ensure the specified directory has the correct permissions and is writable by anyone-client.

HiddenServicePort This redirects traffic from the hidden service to the local nginx server on port 80.

  1. Start the anyone-client with the custom anonrc:

npx anyone-client -f ./anon/anonrc
  1. To get your service address (open a new terminal window and) check the hostname file located in ./anon/anon_service/:

cat ./anon/anon_service/hostname

This file contains the hidden service address (your .onion address) for your hidden service.

Install and Configure nginx to run a web server

In this example we'll be setting up a local web server with Nginx to host some content.

Install nginx:

 sudo apt update --yes
 sudo apt-get install nginx --yes

Start and Enable nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Create an index.html in /var/www/html file as a basic test:

echo "Welcome to my Anyone Anon Service" | sudo tee /var/www/html/index.html

Create a new nginx configuration file for your service:

sudo nano /etc/nginx/sites-available/anon_service

Paste the following configuration and save to route requests to your anon service:

server {
    listen 127.0.0.1:80;
    server_name localhost;

    root /var/www/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Link the configuration to the sites-enabled directory:

sudo ln -s /etc/nginx/sites-available/anon_service /etc/nginx/sites-enabled/

Reload nginx to apply the changes:

sudo systemctl reload nginx

Test the rechability of the web server locally with curl:

curl "http://127.0.0.1:80"

Test the reachability of the web server's hostname, located in ./anon/anon_service/hostname, using curl --socks5-hostname:

curl --socks5-hostname 127.0.0.1:9050 "http://$(cat ./anon/anon_service/hostname)"

Last updated