個人サイトをTor隠しサービスで公開
原題: Self-Hosting on the Dark Web
なぜ重要か
自宅サーバーとTor隠しサービスを組み合わせる手順を具体的に示した事例として、プライバシー重視のセルフホスティングへの関心が高まる中で参照価値が高い。
エンジニアのDavid Álvarez Rosaが、自身の個人サイトをTorネットワーク上の隠しサービス(.onionアドレス)として公開した。証明書局やDNS、外部公開IPアドレスを一切使わず、公開鍵から直接生成されたアドレスとTor自体のエンドツーエンド暗号化だけで運用。Hugo、nginx、GitHub Actionsを組み合わせ、clearnetとTor向けの2種類のビルドを自動デプロイする構成を実現した。
David Álvarez Rosaは個人ブログを通じ、自身のサイトをTorの隠しサービスとして稼働させるまでの手順を詳細に公開した。
設定の核心は `/etc/tor/torrc` への数行の追記だ。`HiddenServiceDir` でTorが秘密鍵とhostnameファイルを管理する専用ディレクトリを指定し、`HiddenServicePort` でTorのポート80をローカルの `127.0.0.1:8080` に転送する。Torを再起動すると `.onion` アドレスが自動生成される。
Webサーバー側はnginxを使い、TLS・HTTP/2・QUICをすべて無効にしたシンプルな構成にとどめる。TorがすでにTCP上で暗号化を提供するため、追加の暗号化レイヤーは不要だ。
最大の技術的課題はHugoの静的サイトジェネレーターの扱いだった。静的サイトはビルド時にベースURLを絶対リンクとして埋め込むため、clearnet用のビルドをそのままTor経由で配信すると、リンクがclearnetドメインを指したままになる。解決策として `--baseURL` オプションに `.onion` アドレスを指定した第二のビルドを生成し、GitHub Actionsのワークフローがプッシュのたびにclearnet用とTor用の両方を自動ビルド・rsyncデプロイする仕組みを構築した。
.onionアドレスはDNSに依存せず、IPアドレスも外部に露出しない。Torネットワークは数千のボランティア運営リレーを経由してトラフィックを中継・暗号化するため、送信者と行動を単一主体が紐付けることができない構造になっている。非営利団体のTor Projectが開発・維持するこのネットワークは、追跡・監視・検閲のないインターネットアクセスの実現を目的としている。