Configuration Nginx pour le forum Discourse via 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.

Avez-vous trouvé une solution ?

D’ailleurs, comment avez-vous fait fonctionner Discourse lui-même dans tocker pour une adresse .onion ? (Je souhaite un forum accessible uniquement via Tor)

Oui, voici la configuration fonctionnelle. Le problème était assez simple : à l’origine, j’avais essayé d’utiliser un socket pour servir le site, mais cela ne fonctionnait pas, j’ai donc dû utiliser un port.

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

Merci pour votre réponse rapide !

Une autre question : quelles sont les spécifications de vos serveurs (et pour quelle base d’utilisateurs ?) / avez-vous apporté des modifications pour améliorer les performances sur Tor ?

Merci d’avance !

C’est une VM Digital Ocean de 2 Go avec 105 utilisateurs. Nous n’avons apporté aucune modification (sauf un plugin pour nous permettre de la servir à la fois sur Tor et sur le web clair).

Autre question : rencontrez-vous des problèmes de chargement lent des images utilisateur (comme les cartes d’arrière-plan, les bannières de profil, etc.) ? (Je suppose que cela est dû à Tor). Une fois mises en cache, elles s’affichent parfaitement.

Je ne suis pas tout à fait sûr de savoir comment fonctionnent les adresses des utilisateurs Tor. Mais pour moi, toutes les adresses IP des utilisateurs connectés s’affichent sous la forme 127.0.0.1, ce que je m’attendais à voir, car j’ai configuré l’en-tête x-forwarded-for dans nginx.

Je ne sais pas si les utilisateurs Tor disposent d’une adresse IP similaire au sein du réseau Tor lui-même, ni comment faire en sorte qu’elle s’affiche.

Il faudra peut-être utiliser set_real_ip_from