Nginx-Konfiguration für Discourse-Forum über Tor

Hello all,

I would like to configure Discourse to be a Tor hidden service using nginx. Here is the configuration that I am trying in nginx (it doesn’t work, “server not found”):

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;
    }
}

In my tor.conf file I have this:

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

And in /var/lib/tor/hidden_service I have the hostname and private key files. Tor is running.

Discourse is installed and working on the clearweb, and /var/discourse/shared/standalone/nginx.http.sock exists.

If needed I’m happy to pay someone for an hour or so of work to get this running (I doubt it will take more than that, because I’m probably just being stupid).

Did you look at Template for serving through an .onion address with Docker?

Yes but honestly I can’t make head or tail of it and it seems an over-complicated approach for what I need, which is just a working nginx configuration.

Hast du eine Lösung gefunden?

Und wie hast du Discourse selbst in tocker für eine .onion-Adresse zum Laufen gebracht? (Ich möchte ein Forum, das nur über Tor erreichbar ist.)

Ja, hier ist die funktionierende Konfiguration. Das Problem war recht einfach: Ursprünglich habe ich versucht, einen Socket zum Bereitstellen der Site zu verwenden, was jedoch nicht funktionierte, sodass ich einen Port verwenden musste.

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;
    }
}

Vielen Dank für deine schnelle Antwort!

Noch eine Frage: Wie lauten deine Server-Spezifikationen (und für welche Nutzerbasis)? / Hast du irgendwelche Änderungen für die Leistung über Tor vorgenommen?

Vielen Dank im Voraus!

Es ist eine 2-GB-DigitalOcean-VM mit 105 Benutzern. Wir haben keine Änderungen vorgenommen (außer einem Plugin, das es uns ermöglicht, sie gleichzeitig über Tor und Clearnet bereitzustellen).

Eine weitere Frage: Hast du Probleme damit, dass Benutzerbilder (wie Hintergrundkarten, Profilbanner usw.) sehr lange zum Laden brauchen (ich vermute, das liegt an Tor)? Sobald sie jedoch zwischengespeichert sind, werden sie problemlos angezeigt.

Ich bin mir nicht ganz sicher, wie Tor-Benutzeradressen funktionieren. Aber bei mir werden alle IP-Adressen der angemeldeten Benutzer als 127.0.0.1 angezeigt, was ich auch erwarte, da ich den x-forwarded-for-Header in nginx gesetzt habe.

Ich bin mir nicht sicher, ob Tor-Benutzer etwas Ähnliches wie eine IP-Adresse innerhalb des Tor-Netzwerks selbst haben und wie ich diese anzeigen lassen kann.

Möglicherweise müssen Sie set_real_ip_from verwenden.