Skip to content


Folders and files

Last commit message
Last commit date

Latest commit


Repository files navigation

The Enterprise Onion Toolkit

banner image

⚠️ Important HTTPS-related Annoucement: March 2022 ⚠️

I've landed a small breaking change in order to better-support HARICA as a certificate provider, but also for better usability; this change impacts any project with a multi-onion EV certificate from Digicert.

  • v3 onion addresses used in pathnames are now truncated at 20 chars of onion, rather than 30 overall, to make shorter pathnames for unix domain sockets
  • onion scratch-directory name changes:
    • was: projects.d/tweep.d/abcdefghijklmnopqrstuvwxyza-v3.d/port-80.sock
    • now: projects.d/tweep.d/abcdefghijklmnopqrst-v3.d/port-80.sock
    • ⚠️ this means that some scratch directories may be are remade, so a full restart is advisable after updating
  • https certificate path-name changes
    • was: HTTPS certificate files used the full onion address
    • now: onion HTTPS certificates are now expected to be installed in per-onion-truncated-at-20 pathnames: e.g. for each ONIONADDRESS in PROJECTNAME:
      • /projects.d/PROJECTNAME.d/ssl.d/ONIONADDRFIRST20CHAR-v3.onion.cert
      • /projects.d/PROJECTNAME.d/ssl.d/ONIONADDRFIRST20CHAR-v3.onion.pem
    • ⚠️ this means that you will need to rename pre-existing certificate cert and pem files after you update and reconfigure;
    • ⚠️ if you fail to do this you will experience "self-signed certificate" warnings
  • if you are using 'multi' certificates (such as some Digicert EV) where a single certificate contains all SubjectAltNames for 2+ onion addresses that are part of a single project:
    • ⚠️ do set ssl_cert_each_onion 0 in the configuration, to re-enable multi cert handling
    • ⚠️ the names of the certificate files must be changed:
      • was: filenames used to be projects.d/PROJECTNAME.d/ssl.d/PRIMARYONIONADDRESSWASHERE.{pem,cert}
      • now: multi-certificates now must be named with the more meaningful projects.d/PROJECTNAME.d/ssl.d/PROJECTNAME.{pem,cert}

If you have any issues, please reach out to @alecmuffett on Twitter, or log an issue above.

Primary Supported Platforms

  • Ubuntu 20.04LTS, Latest Updates
  • OSX Mojave with Homebrew, Latest Updates
  • Raspbian Stretch/Stretch-Lite, Latest Updates

Maillist / Group

General discussion mailllist: deployment, tweaks and tuning:

NB: bugs should be reported through Issues, above.

EOTK In the News


EOTK provides a tool for deploying HTTP and HTTPS onion sites to provide official onion-networking presences for popular websites.

The result is essentially a "man in the middle" proxy; you should set them up only for your own sites, or for sites which do not require login credentials of any kind.


Please refer to the How To Install guide, and the other documents in that folder.

Help I'm Stuck!

Ping @alecmuffett on Twitter, or log an Issue, above.

Important Note About Anonymity

The presumed use-case of EOTK is that you have an already-public website and you wish to give it a corresponding Onion address.

A lot of people mistakenly believe that Tor Onion Networking is "all about anonymity" - which is incorrect, since it also includes:

  • extra privacy
  • identity/surety of to whom you are connected
  • freedom from oversight/network surveillance
  • anti-blocking, and...
  • enhanced integrity/tamperproofing

...none of which are the same as "anonymity", but all of which are valuable qualities to add to communications.

Further: setting up an Onion address can provide less contention, more speed & more bandwidth to people accessing your site than they would get by using Tor "Exit Nodes".

If you set up EOTK in its intended mode then your resulting site is almost certainly not going to be anonymous; for one thing your brand name (etc) will likely be plastered all over it.

If you want to set up a server which includes anonymity as well as all of the aforementioned qualities, you want to be reading an entirely different document, instead.


EOTK stands largely on the experience of work I led at Facebook to create www.facebookcorewwwi.onion, but it owes a huge debt to Mike Tigas's work at ProPublica to put their site into Onionspace through using NGINX as a rewriting proxy -- and that he wrote the whole experience up in great detail including sample config files.

Reading this prodded me to learn about NGINX and then aim to shrink & genericise the solution; so thanks, Mike!

Also, thanks go to Christopher Weatherhead for acting as a local NGINX sounding board :-)

And back in history: Michal Nánási, Matt Jones, Trevor Pottinger and the rest of the FB-over-Tor team. Hugs.