
Unixライクなオペレーティングシステム上で、POSIX準拠のシェルを使用して、CLIまたはTUI経由でOnion Servicesを管理します。
OnionJugglerは、最小要件で動作するポータブルなスクリプトとドキュメントのコレクションで、サービス運用者が自身のオニオン(隠しサービス)を管理(ジャグリング)するのに役立ちます。
警告:このリポジトリはまだ信頼しないでください、hsキーは別の場所にバックアップしてください。このプロジェクトはまだリリースされておらず、開発専用と見なすべきです。
このリポジトリへのクイックリンク:git.io/onionjuggler

このプロジェクトは、OnionShare CLI Pythonスクリプトを見たことから始まりました。これにより、ディスクに触れず、TailsやWhonixで簡単に実行できる一時的なオニオンサービスが可能になります。その後、RaspiBlitzのRaspberry Pi用オニオンサービスBashスクリプトを見て、Debianディストリビューションに移植するアイデアが浮かびました。アイデアが発展するにつれ、GNU BashとLinuxだけに依存することは単一障害点となるため1 2、スクリプトをPOSIX準拠にして、あらゆるUnix系システムと互換性を持たせることが決定的な目標となりました。
このプロジェクトの目標は以下のとおりです:
単一障害点の回避:
LinuxからBSDやその他Unix系システムにも対応。Bashから、ksh、(y,d)ash、Zsh(shエミュレート)などのPOSIXシェルにも対応。SystemdからRC、OpenRC、SysVinit、Runitにも対応。tor設定ファイル(torrc)の編集は難しくありませんが、自動化により設定ミスの問題を解決し、以下の利点があります:
<HiddenServiceDir>/authorized_clients/<client>.authからのクライアント名と公開鍵の一覧表示。クライアントが設定されている場合、認証なしではサービスにアクセスできません。<ClientOnionAuthDir>/<SOME_ONION>.auth_privateの一覧表示。dialogとwhiptailの2つのダイアログボックスに対応。@allで一括処理可能(すべてのサービスまたはクライアントを含む)。またはオプションに応じて、有効な引数やを指定すると、コマンドは変数をループして組み合わせを適用します。一般要件:
必須プログラム:
dash 0.5.4+、bash 2.03+、ksh 88+、mksh R28+、yash 2.29+、busybox ash 1.1.3+、zsh 3.1.9+(zsh --emulate sh)など。オプションプログラム:
開発プログラム:
主にDebian系システム(Whonixを含む)でテスト済み。
OpenBSDでも動作可能 -
basezをソースからビルドすれば動作(ポートにはありません)。他のオペレーティングシステムについては、etc/onionjugglerを参照してください(OSに応じた定義済み設定)。すべてテストされているわけではありません。
git clone https://github.com/nyxnor/onionjuggler.git
cd onionjuggler
クローンしたリポジトリ内で以下を実行し、torディレクトリを作成、マニュアルページを生成、スクリプトをパスにコピーします:
./configure.sh --install
デフォルトの設定ファイル/etc/onionjuggler/onionjuggler.confは変更すべきではありません。更新のたびに変更されます。ローカル設定は/etc/onionjuggler/conf.d/*.confに配置し、このフォルダから辞書順に解析され、最後の値がデフォルトを上書きします。
各設定ファイルとスクリプトには独自のマニュアルページとヘルプメッセージがあり、onionjuggler全体を学ぶのに最適な方法です。
変更を加える前に、設定されているオプションを確認することをお勧めします。すべてのスクリプトには--getconfオプションがあり、onionjugglerが読み込んだ現在の設定を表示します:
onionjuggler-cli --getconf
また、変更を加えずにコマンドラインオプションを確認することも可能で、割り当てが正しいかどうかを確認するのに便利です:
onionjuggler-cli --getopt --service=example --hs-version=3
TUIを使用するには、以下を実行:
onionjuggler-tui
CLIでサービスを作成するには:
onionjuggler-cli --on --service=terminator --socket=tcp --hs-version=3 --port="80:127.0.0.1:80"
さらに多くのことが可能です。マニュアルページをお読みください。
--service--client[SERV1,SERV2,...][CLIENT1,CLIENT2,...]