nyxnor / onionjuggler

Manage your Onion Services via CLI or TUI on Unix-like operating system with a POSIX compliant shell.
MIT License
34 stars 2 forks source link
cli descentralized encryption foss hidden-service hiddenservice onion-service onionservice open-source portable posix privacy security self-hosted shell shellscript tor tor-onion-service tui unix

OnionJuggler

shellcheck CodeFactor GitHub top language License Just works

Feature-rich onion service manager for UNIX-like operating systems written in POSIX compliant shellscript

OnionJuggler is a minimal requirement, portable collection of scripts and documentation to help the service operator juggle (manage) his onion(s).

WARNING: do not trust this repo yet, backup your hs keys in another location. This project has not been released and should be considered for development only.

Quick link to this repository: git.io/onionjuggler

Table of Contents

Introduction

Images

tui-dialog tui-whiptail cli

History

This project was started after seeing the amazing OnionShare CLI python scripts, which possibilitates ephemeral onion services that never touch the disk and can be run on Tails or Whonix easily. Then after seeing the RaspiBlitz onion service bash script for the Raspberry Pi, the idea to port it to any Debian distribution started. As the idea grew, using GNU Bash and Linux was a single point of failure 1 2, so the making the script POSIX compliant to be compatible with any Unix-like system was a definitive goal.

Goal

The goal of this project is:

Mitigation from a single point of failure:

Editing the tor configuration file (torrc) is not difficult, but automation solves problem of misconfiguration and having:

Features

Requirements

Compatibility

Mainly tested on Debian systems, including Whonix.

It can work on OpenBSD -

Regarding other operating systems, please see etc/onionjuggler for pre-defined configuration for your operating system. They were not all tested

Instructions

Clone the repository

git clone https://github.com/nyxnor/onionjuggler.git
cd onionjuggler

Setup the enviroment

Run from inside the cloned repository to create the tor directories, create manual pages and copy scripts to path:

./configure.sh --install

Set custom variables

You should not modify the default configuration on /etc/onionjuggler/onionjuggler.conf, it will be modified on every update. Your local configurations should be on /etc/onionjuggler/conf.d/*.conf, and from this folder, they will be parsed using lexical order, and the last value will supersede the defaults.

Usage

Each configuration and script has its own manual page and help message, it is the best way to learning onionjuggler entirely.

Before executing any script to make changes, it is recommended to see what options are configured. Every script has a --getconf option that will print the current configuration read by onionjuggler:

onionjuggler-cli --getconf

It is also possible to get command line options without making changes, useful to see if the assignment is correct:

onionjuggler-cli --getopt --service=example --hs-version=3

To use the TUI, just run:

onionjuggler-tui

To create a service on the CLI:

onionjuggler-cli --on --service=terminator --socket=tcp --hs-version=3 --port="80:127.0.0.1:80"

Many more things are possible, read the man pages

Featured on

Contributors

Contributors graph