Using Onionspray¶
Creating a project¶
Okay, there are two ways to create your own project:
- With automatically-generated addresses.
 - With manually-mined addresses.
 
With automatically-generated Onions Service addresses¶
Create a config file with a .tconf suffix - we'll pretend it's
foo.tconf - and use this kind of syntax:
set project myproject
hardmap %NEW_V3_ONION% foo.com
hardmap %NEW_V3_ONION% foo.co.uk
hardmap %NEW_V3_ONION% foo.de
... and then run
./onionspray config foo.tconf
... which will create the onions for you and will populate a foo.conf for
you, and it will then configure Onionspray from that.  You should probably
delete foo.tconf afterwards, since forcibly reusing it would trash your
existing onions.
With manually-mined Onion Service addresses¶
- Do 
onionspray genkey- it will print the name of the onion it generates - Do this as many times as you wish/need.
 - Alternately get a tool like 
scallion,shallot, oreschalotand use that to "mine" a desirable onion address.- https://github.com/katmagic/Shallot - in C, for CPUs
 - Seems okay on Linux, not sure about other platforms
 - https://github.com/lachesis/scallion - in C#, for CPUs & GPUs (GPU == very fast)
 - Advertised as working on Windows, Linux; works well on OSX under "Mono"
 - https://github.com/ReclaimYourPrivacy/eschalot - in C, for CPUs
 - Works well under Linux, and BSD systems. Uses multiple threads. Can use a wordlist to generate onion addresses
 - Be sure to store your mined private keys in 
secretswith a filename likez2walkyky3zzv52g3gedrhxa665qdrslyvrljg5wppibx34olslnxgqd.v3pub.keyfor the public key andz2walkyky3zzv52g3gedrhxa665qdrslyvrljg5wppibx34olslnxgqd.v3sec.keyfor the secret key, wherez2walkyky3zzv52g3gedrhxa665qdrslyvrljg5wppibx34olslnxgqdis the corresponding onion address. 
 - 
Create a config file with a
.confsuffix - we'll pretend it'sfoo.conf- and use this kind of syntax, substitutinga2s3c4d5e6f7g8h9for the onion address that you generated.set project myproject hardmap z2walkyky3zzv52g3gedrhxa665qdrslyvrljg5wppibx34olslnxgqd foo.com
 
... and then (IMPORTANT) run:
./onionspray config foo.conf
... which will configure Onionspray.
Starting a project¶
Like this:
./onionspray start myproject
Subdomains management¶
Overview¶
Subdomains are supported like this, for dev as an example:
set project myproject
hardmap z2walkyky3zzv52g3gedrhxa665qdrslyvrljg5wppibx34olslnxgqd foo.com dev
... and if you have multiple subdomains:
hardmap z2walkyky3zzv52g3gedrhxa665qdrslyvrljg5wppibx34olslnxgqd foo.com dev blogs dev.blogs [...]
How it works¶
When you are setting up the mappings in a config file, you may have to accomodate "subdomains"; the general form of a internet hostname is like this:
hostname.domain.tld# like: www.facebook.com or www.gov.uk- or: 
hostname.domain.sld.tld# like: www.amazon.co.uk hostname.subdom.domain.tld# like: www.prod.facebook.comhostname.subsubdom.subdom.domain.tld# cdn.lhr.eu.foo.nethostname.subsubsubdom.subsubdom.subdom.domain.tld# ...
... and so on, where:
- tld = top level domain
 - sld = second level domain
 - domain = generally the name of the organisation you are interested in
 - subdomain = some kind of internal structure
 - hostname = actual computer, or equivalent
 
When you are setting up mappings, generally the rules are:
- you will map one domain per onion
 - you will ignore all hostnames
 - you will append all possible subdomain stems
 
So if your browser tells you that you are fetching content from
cdn7.dublin.ireland.europe.foo.co.jp, you should add a line like:
hardmap %NEW_V3_ONION% foo.co.jp europe ireland.europe dublin.ireland.europe
... and Onionspray should do the rest. All this is necessary purely for correctness of the self-signed SSL-Certificates - which are going to be weird, anyway - and the rest of the HTML-rewriting code in Onionspray will be blind to subdomains.
Managing lots of sites and subdomains¶
Example:
www.foo.com.auwww.syd.foo.com.auwww.per.foo.com.au,www.cdn.foo.netwww.foo.aws.amazon.com- ...
 
Put them all in the same project as separate mappings, remembering to avoid the actual "hostnames" as described above:
set project fooproj
hardmap %NEW_V3_ONION% foo.com.au syd per
hardmap %NEW_V3_ONION% foo.net cdn
hardmap %NEW_V3_ONION% foo.aws.amazon.com
Onion mapping/translations will be applied for all sites in the same project.
System startup and housekeeping procedures¶
Once you have installed Onionspray and configured and tested it for your project, run:
./onionspray make-scripts
This will create two files:
./onionspray-init.sh: for installing on your system as a startup script./onionspray-housekeeping.sh: for cronjob log rotation and other cleanup work
Please read the individual files for installation instructions; local setup is intended to be pretty simple.