Skip to content

Prototype

The current Oniongroove codebase is a prototype.

It's available for testing and tinkering.

Characteristics

  • Based on Arti and OpenResty.
  • The full specification is not implemented yet.
  • Lacks many configuration options both on the Onion Service and HTTPS sides.
  • Only onionsites based on the HTTPS rewriting proxy are supported right now.
  • Light configuration format: only a mapping between Onion Service addresses and it's DNS-based upstream domain names is needed in the proxy layer.
  • On the fly self-signed certificate generation: HTTPS certificates are generated in the first TLS handshake if they're not already present in the file system. This allows testing how an onionsite would look like if there was already some automated way to get CA-validated certificates.

Requirements

This prototype currently requires Docker and Docker Compose properly installed. The provision script serves as an example in how to do that.

Installation

Get Oniongroove with it's submodules directly from the repository using

git clone --recursive https://gitlab.torproject.org/tpo/onion-services/oniongroove.git

Once installed, you enter the oniongroove folder an run commands from there.

Configuration

The prototype relies in the following configuration folder structure:

  • configs:
    • arti: holds compiled Arti configuration; do not edit those files directly.
    • openresty: holds compiled OpenResty configuration; do not edit those files directly.
    • oniongroove.yaml: default and sample Oniongroove configuration; leave this file as a reference.
    • Other custom YAML configurations.

Begin by copying the sample configuration:

cp configs/oniongroove.yaml configs/myprovider.yaml

Edit this file to suit your needs.

Running

The main tool is the oniongroove script:

./oniongroove --help

To start Oniongroove, use the start action and pass a configuration file path:

./oniongroove start configs/myprovider.yaml