Tor経由のDiscourseフォーラム向けNginx設定

皆さん、こんにちは。

Discourse を nginx を使って Tor 隠しサービスとして設定したいと考えています。現在試している nginx の設定は以下の通りですが、動作しません(「サーバーが見つかりません」と表示されます):

server {
    listen unix:/var/run/nginx-onion.sock;
    server_name prostadqmwc6no3n.onion;
    location / {
        proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

tor.conf ファイルには以下のような設定があります:

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 unix:/var/run/nginx-onion.sock

/var/lib/tor/hidden_service には hostname ファイルと秘密鍵ファイルが存在します。Tor は実行中です。

Discourse はクリアウェブ上で正常にインストールされ動作しており、/var/discourse/shared/standalone/nginx.http.sock も存在します。

必要であれば、この設定を動作させるために 1 時間ほどお支払いすることも可能です(おそらくそれ以上はかからないと思います。私が単に馬鹿なだけかもしれませんので)。

Template for serving through an .onion address with Docker をご覧になりましたか?

はい、しかし正直に言うと、私はそれが何を意味しているのか全く理解できず、私が求めているのは単に動作する nginx 設定なので、それは必要以上に複雑なアプローチに思えます。

解決策は見つかりましたか?

また、Tocker 上で Discourse 自体を .onion アドレスで動作させるにはどうすればよいのでしょうか?(Tor 経由でのみアクセス可能なフォーラムを構築したいと考えています)

はい、動作する設定はこちらです。問題は非常に単純で、当初はソケットを使ってサイトを配信しようとしましたが、それが機能しなかったため、ポートを使用する必要がありました。

server {
    listen 801;
    server_name 127.0.0.1;
   location / {
        proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

迅速な返信をありがとうございます!

もう一つ質問があります。サーバーの仕様(および対象ユーザー数)はどのようになっていますか?また、Tor 経由でのパフォーマンス向上のために何か変更を加えていますか?

よろしくお願いいたします。

105 人のユーザーを抱える、2GB の Digital Ocean VM です。Tor とクリアネットの両方でサービスを提供できるようにするプラグインを追加した以外、変更は加えていません。

もう一つ質問です。ユーザー画像(背景カード、プロフィールバナーなど)の読み込みに非常に時間がかかる問題はありませんか(これはおそらく Tor のせいだと思います)。キャッシュされれば、その後問題なく表示されますが。

Tor ユーザーのアドレスの仕組みは正確にはわかりませんが、私の場合、ログインしたすべてのユーザーの IP アドレスが 127.0.0.1 として表示されます。これは予想通りですが、nginx で x-forwarded-for ヘッダーを設定しています。

Tor ユーザーが Tor ネットワーク自体で IP に相当するものを持っているかどうか、そしてそれをどのように表示させることができるのかわかりません。

set_real_ip_from を使用する必要があるかもしれません