このガイドでは、ウェブサイトに Onion Service を設定する方法についてご説明します。
Onion Service プロトコルの動作に関する技術的な詳細につきましては、Onion Service プロトコルのページをご覧ください。
ステップ 0: 動作する Tor を入手する
このガイドでは、マシンに機能する Tor があると仮定します。
Tor をセットアップするには、Tor のインストールマニュアルに沿ってください。
このガイドが機能するためには、、Tor が正しく動作している必要があります。
また、Tor の構成ファイルの場所もご確認ください。
ステップ 1: ウェブサーバーを立ち上げる
最初のステップとして、Nginx、Apache などのウェブサーバーをローカルにセットアップしてください。
ウェブサーバーの設定は複雑な場合があります。
行き詰まったり、他にやりたいことがある場合は、助けてくれる友人を見つけるか、tor-onions メーリングリストに参加して、他のオペレーターと話しましょう。
例として、Debian 上で Nginx と Apache を使って Onion Site をセットアップする方法を説明します。
すでに Onion Service 用のウェブサーバーがインストールされている場合でも、後に通常のウェブサイトで使用する可能性があるため、新たに別のウェブサーバーをインストールすることをお勧めします。
このページでは、ウェブサーバーを管理するためのコマンドは Debian 系オペレーティングシステムに基づいており、他のシステムとは異なる場合があります。
ウェブサーバーとオペレーティングシステムのマニュアルをご確認ください。
Apache
Apache は、複数の Linux および *BSD ディストリビューションのメインリポジトリで利用可能です。
apache2 パッケージをインストールするには、以下のコマンドを実行します。
$ sudo apt install apache2
Nginx
Nginx は、複数の Linux および *BSD ディストリビューションのメインリポジトリで利用可能です。
nginx パッケージをインストールするには、以下のコマンドを実行します。
$ sudo apt install nginx
デフォルトでは、ウェブサーバーはインストールの最後に localhost:80 で実行されます。
エラーメッセージが表示された場合、何か問題が発生したため、これが機能しなかった原因が分かるまで続行できません。
ウェブサーバーの設定が完了したら、ブラウザーを開いて http://localhost/ にアクセスし、動作を確認します。
次に、メインの HTML ディレクトリにファイルを配置し、サイトにアクセスしたときに表示されることを確認します。
ステップ 2: Tor Onion Service を構成する
次のステップは、Tor の構成ファイル (torrc) を開き、Onion Service をセットアップするための適切な構成を行うことです。
オペレーティングシステムとセットアップによっては、Tor 構成ファイルの場所や外観が異なる場合があります。
torrc ファイルに以下の2行を追加する必要があります。
HiddenServiceDir /var/lib/tor/my_website/
HiddenServicePort 80 127.0.0.1:80
HiddenServiceDir 行は、Onion Service の情報と暗号鍵を含むディレクトリーを指定します。
HiddenServiceDir 行を変更して、Tor を実行するユーザーが読み書き可能な実際のディレクトリーを指すようにします。
HiddenServicePort 行は 仮想ポート (つまり、Onion Service にアクセスするユーザーが使用するポート) を指定しており、上記の場合、Onion Service の80番ポートに着信するすべてのトラフィックを 127.0.0.1:80 (ステップ 1 のウェブサーバーが待機している場所) にリダイレクトする必要があります。
ヒント: Onion Service がローカルネットワークに漏洩しないようにするには、TCP ソケットの代わりに Unixソケットで Onion Service を運営することを推奨します。
torrc ファイルに以下の2行を追加する必要があります。
HiddenServiceDir /var/lib/tor/my-website/
HiddenServicePort 80 unix:/var/run/tor/my-website.sock
ステップ 3: Tor を再起動して動作を確認する
torrc を保存し、Tor を再起動します。
$ sudo systemctl restart tor
Tor が再び起動すれば、問題ありません。そうでなければ、何かが間違っています。まず、ログファイルを見て原因を探します。
警告やエラーメッセージが表示されます。これで何が問題か分かるはずです。
多くの場合、torrc にタイプミスがあるか、ディレクトリーのパーミッションが間違っています (ログファイルを有効にする方法や見つける方法が分からない場合は、ログ FAQ のエントリーをご覧ください) 。
Tor が起動すると、指定した HiddenServiceDir が自動的に作成されます (必要な場合) 。
このことを必ずご確認ください。
ステップ 4: Onion Service の動作をテストする
Onion Service のアドレスを取得するには、HiddenServiceDir ディレクトリーに移動し、hostname という名前のファイルを見つけます。
Onion Service 構成ディレクトリーの hostname ファイルには、新しい Onion Service v3 のホスト名が含まれています。
他のファイルは Onion Service の鍵であるため、これらは非公開に保つ必要があります。
鍵が漏洩した場合、第三者が Onion Service になりすますことができ、Onion Service は危険で役に立たず、アクセスするのは危険であると判断されます。
これで Tor Browser を使って Onion Service に接続できるようになり、ステップ 1 で設定した HTML ページが表示されるはずです。
うまくいかない場合は、ログを見て原因を探し、うまくいくまで試してみてください。
このように構成された Onion Service は、アドレスを知っているか、または発見したすべてのユーザーがアクセスできることにご注意ください。
Onion Service へのアクセスに認証を要求し、秘密鍵を持つユーザーのみがサービスにアクセスできるようにすることも可能です。
詳細につきましては、クライアント認証ドキュメントをご覧ください。
(オプション) ステップ 5: 複数の Onion Service を運営する
1つの Onion Service に対して複数の仮想ポートを転送したい場合は、HiddenServicePort 行を追加するだけです。
同じ Tor クライアントから複数の Onion Service を運営したい場合は、HiddenServiceDir 行を追加するだけです。
以下のすべての HiddenServicePort 行は、別の HiddenServiceDir 行を追加するまで、この HiddenServiceDir 行を参照します。
HiddenServiceDir /var/lib/tor/onion_service/
HiddenServicePort 80 127.0.0.1:80
HiddenServiceDir /var/lib/tor/other_onion_service/
HiddenServicePort 6667 127.0.0.1:6667
HiddenServicePort 22 127.0.0.1:22
同じウェブサーバーで複数の Onion Site を運営している場合は、ウェブサーバーの仮想ホストファイルを編集して、各ウェブサイトの Onion アドレスを追加することを忘れないでください。
例えば、Nginx で Tor を Unix ソケットで使用する場合、構成は以下のようになります。
server {
listen unix:/var/run/tor/my-website.sock;
server_name <your-onion-address>.onion;
access_log /var/log/nginx/my-website.log;
index index.html;
root /path/to/htdocs;
}
Or in Apache with Tor service listening on port 80:
<VirtualHost *:80>
ServerName <your-onion-address.onion>
DocumentRoot /path/to/htdocs
ErrorLog ${APACHE_LOG_DIR}/my-website.log
</VirtualHost>
ステップ 6: セキュリティに関するアドバイスとその他のヒント
Onion Service のデフォルトのバージョンは v3 で、アドレスは http :// と .onion の部分を除いて56文字です。
Onion Service v2 は非推奨であり、2021年の 0.4.6.1-alpha Tor リリース以降サポートされていません。
詳細につきましては、ブログ記事 Onion Service バージョンの廃止スケジュール をご覧ください。
Onion Site の運営者によっては、Onion Service の所在地を公開したくない場合もあります。
そのためには、ウェブサーバーを構成して、ユーザー、コンピューター、または所在地に関する情報をを漏洩しないようにする必要があります。
これは簡単な作業ではありませんが、これらのリソースはこれを行う際に役立ちます。
最後に、サービスを長期間利用できるようにする予定の場合は、private_key ファイルのバックアップコピーをどこかに作成することをお勧めします。
Onion Site が動作するようになったら、Onion-Location をデプロイしたり、Docker、Heroku、Terraform、Ansible または stem などのツールを使用して、Onion Service の管理を自動化したりすることができます。
静的なウェブサイトを持っているが、Nginx や Apache をインストールしたことがない場合は、OnionShare をお試しください。これにより、 Onion Site をグラフィックインターフェイスと最小限の設定で簡単に運営できます。