Il container discourse-app si avvia e poi si ferma silenziosamente

Giusto! Ho stupidamente applicato la configurazione nella pagina sopra elencata, rispetto ad altri file di configurazione nginx e non riuscivo a capire perché il proxy non ascoltasse 80:443 per discourse… :confused:

Ecco cosa mi aspettavo di vedere:

server {
	listen 80;
	server_name discourse.mydomain.com;
    return 301 https://$host$request_uri;  # routing to https
}

server {
	listen 443 ssl
	listen [::]:443 ssl;
	server_name discourse.mydomain.com;

	ssl_certificate      /etc/letsencrypt/live/discourse.mydomain.com/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/discourse.mydomain.com/privkey.pem;

	root /var/www/html;

	# Add index.php to the list if you are using PHP
	index index.html index.htm index.nginx-debian.html;

	location / {
      proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:; # using socket
      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-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
	}
}

NPM: Ho seguito il consiglio di @pfaffman e letto Use Nginx Proxy Manager to manage multiple sites with Discourse, quindi ho valutato l’opzione di installare NPM, ma questo sembra eccessivo…

Grazie a tutti per il vostro aiuto!

Per riferimento, npm e nginx proxy manager sono cose diverse. Stai confondendo la terminologia e quindi le persone che cercano di assisterti.

2 Mi Piace

Quindi è necessario configurare quella nginx per inoltrare a Discourse.

Ti consiglio di creare una nuova VM solo per Discourse.

1 Mi Piace

Mi dispiace Stephen per la confusione, ho solo usato il nome dello strumento a cui si fa riferimento nell’articolo. Capisco che NPM e nginx (come) proxy manager siano cose diverse, ecco perché ho usato le lettere maiuscole…

Questo è esattamente quello che sto cercando di fare e capisco che non puoi supportarlo. Tuttavia, qualsiasi suggerimento/link sarebbe apprezzato!

Non posso proprio, Jay: sto cercando di aiutare un amico a distribuire l’app e non posso modificare la configurazione del loro server. Ecco perché devo risolvere il problema di nginx…

Tra l’altro, la mia comprensione è:

  • Discourse è in ascolto sulle porte 80/443.
  • nginx svolge il ruolo di uno switch, inoltrando le richieste a diverse applicazioni, in base al loro nome di dominio:
    • netxcloud.mydomain.com cerca di raggiungere la porta 80 → la richiesta viene instradata a server_IP:8000
    • crm.mydomain.com cerca di raggiungere la porta 80 → la richiesta viene instradata a server_IP:9000
    • discourse.mydomain.com cerca di raggiungere la porta 80 → la richiesta viene instradata a http://unix:/var/discourse/shared/standalone/nginx.http.sock: (spero che i due punti finali non siano un errore di battitura) poiché lo script di configurazione ha configurato discourse per ascoltare questo socket.

Ho capito bene?

Grazie mille per il tuo aiuto!

È piuttosto fastidioso e confuso, ma per essere giusti nei confronti di @jlgarnier, quell’acronimo è stato usato per la prima volta da @tophee o @pfaffman in Using Nginx Proxy Manager to manage multiple sites with Discourse per riferirsi a Nginx Proxy Manager. Non mi piace, ma se è “sbagliato”, non è davvero colpa dell’OP.

Ad esempio, l’argomento ha una sezione chiamata Install NPM incentrata interamente su Nginx Proxy Manager.

Wow, anche quello mi ha ingannato. Fastidioso come quel progetto abbia dirottato un acronimo esistente otto anni dopo l’originale.

2 Mi Piace

Non sono sicuro che l’abbia fatto; ho navigato sul loro sito e non li ho visti usare l’acronimo da soli.

Lo usano nelle loro configurazioni Docker. nginx-proxy-manager/docker/docker-compose.dev.yml at develop · NginxProxyManager/nginx-proxy-manager · GitHub

services:
  npm:
    image: nginxproxymanager:dev
    container_name: npm_core
1 Mi Piace

Ah, ops! Non me ne ero accorto. :slightly_smiling_face:

Ciao a tutti,

Proverò a configurare di nuovo nginx questo pomeriggio. Qualcuno può confermare la sintassi esatta per il socket: http://unix:/var/discourse/shared/standalone/nginx.http.sock:? Voglio assicurarmi che i due punti finali non siano un errore di battitura…

Grazie in anticipo per qualsiasi aiuto!

Non credo che quel due punti dovrebbe esserci, no.

In effetti… ho applicato in discourse.conf le modifiche che avevo proposto venerdì scorso e Discourse ora funziona bene! Almeno riesco a raggiungere la pagina di benvenuto ma non ricevo l’email di attivazione, che non è correlata a Discourse (sospetto che il mio amico non abbia creato l’account email richiesto :blush:).

Ti devo un caloroso ringraziamento per l’aiuto che mi hai fornito e spero di non tornare troppo presto su questo forum! :wink:

2 Mi Piace

Infine, sono tornato prima del previsto ma probabilmente sarai in grado di cacciarmi con i tuoi ottimi suggerimenti! :grin:

La situazione è:

  • Discourse operativo, Docker (o Portainer) indica che il container è integro e posso raggiungere la pagina di benvenuto forums.mydomain.com.
  • Non ricevo alcuna email di attivazione, nonostante l’account email tecnico sia stato creato correttamente (provider di hosting = OVH).
  • Ho testato l’invio di un’email da questo account tecnico (con la configurazione sottostante) = OK.
  • La configurazione email attuale è:
DISCOURSE_SMTP_ADDRESS: ssl0.ovh.net
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: forums@mydomain.com
DISCOURSE_SMTP_PASSWORD: "Str0ngPassw0rd"
DISCOURSE_SMTP_ENABLE_START_TLS: false
DISCOURSE_SMTP_DOMAIN: mydomain.com
DISCOURSE_NOTIFICATION_EMAIL: noreply-forums@mydomain.com

Non so davvero da dove dovrei iniziare a indagare e sarei felice di ricevere qualsiasi consiglio!

Grazie in anticipo per il tuo aiuto!

La prima cosa che controllerò è se forums@mydomain.com è stato configurato per inviare per conto di noreply-forums@mydomain.com, questo deve essere verificato presso il tuo provider di posta elettronica.

1 Mi Piace

Non sono sicuro che questo indirizzo possa inviare “per conto di”, quindi ho aggiornato app.yml per impostare lo stesso indirizzo:

DISCOURSE_SMTP_ADDRESS: ssl0.ovh.net
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: forums@mydomain.com
DISCOURSE_SMTP_PASSWORD: "Str0ngPassw0rd"
DISCOURSE_SMTP_ENABLE_START_TLS: false
DISCOURSE_SMTP_DOMAIN: mydomain.com
DISCOURSE_NOTIFICATION_EMAIL: forums@mydomain.com

Ho provato telnet ssl0.ovh.net 465 = OK

Tuttavia, discourse-doctor segnala:

========================================
Discourse 2.9.0.beta9
Discourse version at forums.mydomain.com: Discourse 2.9.0.beta9
Discourse version at localhost: NOT FOUND
==================== DNS PROBLEM ====================
This server reports NOT FOUND, but forums.mydomain.com reports Discourse 2.9.0.beta9 .
This suggests that you have a DNS problem or that an intermediate proxy is to blame.

[... ]

Testing sending to myprivatemail@yahoo.fr using ssl0.ovh.net:465, username:forums@mydomain.com with plain auth.
======================================== ERROR ========================================
                                    UNEXPECTED ERROR

Net::ReadTimeout

====================================== SOLUTION =======================================

Il problema di posta potrebbe essere collegato al presunto problema DNS? Non ho un “proxy intermedio”, sto solo eseguendo nginx come server proxy web…

Questo è probabilmente il tuo problema. Puoi provare una porta diversa? Ho visto i migliori risultati con la porta 587 se è supportata dal tuo provider di posta elettronica.

Dovrai commentare questa riga o impostarla su true se cambi la porta a 587.

No, il mio provider di posta elettronica (lo stesso del provider di hosting) consente solo la porta 465. A proposito, ho letto che devo impostare il record SPF e DKIM per il dominio (è questo sottodominio?) e non ho ancora impostato nessuno di questi: potrebbe avere un impatto?

Vedi Risoluzione dei problemi di posta elettronica in una nuova installazione di Discourse

1 Mi Piace

Sto navigando nel post ma ho dimenticato alcune informazioni:

  • Il DNS è gestito dal nostro provider di hosting (per alcuni servizi), diciamo sul ServerA.
  • Discourse è in esecuzione su un altro server (ServerB) che è ospitato da un provider diverso.

La mia comprensione è quindi: Discourse su ServerB si connette al server di posta su ServerA, autenticandosi con email/password per utilizzare il servizio SMTP fornito dal provider di hosting di ServerA.

Questa è una configurazione anomala o posso ancora usare la normale configurazione email di app.yml qui?