Make an onion site (aka HTTP over onion services) up and running from a directory, a file, zip archive contents or another HTTP server.
Onion services are end-to-end encrypted, metadata-free and forward-secure (see design overview). Much love to onion services.
You have to have Go 1.8+ installed to build onionize.
CLI-only version:
$ go get github.com/nogoegst/onionize/cmd/onionize
CLI + GUI version (reqiures GTK3 installed):
$ go get -tags gui github.com/nogoegst/onionize/cmd/onionize
If you have troubles setting up GUI version straight away, try to build it using Docker (see /dockerfiles). Also you may look into Dockerfiles themselves to reproduce building steps on your host OS.
To onionize things pass the path to them with optional aliases:
$ onionize /path/to/thing:/things/thing1 /path/to/another/thing:/things/thing2
or the URL:
$ onionize https://example.com/
Pass -zip flag to serve from the zip archive.
Grab the onion link from stdout and errors/info from stderr.
That's it.
To run onionize in GUI mode just don't specify any path.
Select target type, open your file/directory and click onionize:
Then you can grab the link from a text field:
You can find more screenshots in docs.
You may also specify a passphrase from which onion service identity key will be derived. Thus you can preserve same .onion address across setups.
Identity passphrase can be specified on stdin by setting -p flag in CLI
or in corresponding field in GUI.
One may load a typical onion private key from a file:
$ onionize -id-key onion.key /path/to/the-thing
You can specify tlspin private key
via -tlspin-key flag.
When running with -local flag TLS enabled by default via tlspin with
a generated ephemeral key.
One can also specifying paths to X.509 key and certificate:
$ onionize -tls-cert server.crt -tls-key server.key /path/to/the-thing
To disabe TLS run onionize with -no-tls.
I want to thank Micah Lee for OnionShare tool by which onionize was inspired.

