Le conteneur discourse-app démarre puis s'arrête silencieusement

D’accord ! J’ai bêtement appliqué la configuration de la page mentionnée ci-dessus, comparé à d’autres fichiers de configuration nginx et je n’arrivais pas à comprendre pourquoi le proxy n’écoutait pas sur 80:443 pour discourse… :confused:

Voici ce à quoi je m’attendais :

server {
	listen 80;
	server_name discourse.mydomain.com;
    return 301 https://$host$request_uri;  # routage vers 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;

	# Ajoutez index.php à la liste si vous utilisez PHP
	index index.html index.htm index.nginx-debian.html;

	location / {
      proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:; # utilisation du 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 : J’ai suivi le conseil de @pfaffman et lu Use Nginx Proxy Manager to manage multiple sites with Discourse, j’ai donc évalué l’option d’installer NPM, mais cela semble excessif…

Merci à tous pour votre aide !

Pour référence, npm et le nginx proxy manager sont des choses différentes. Vous confondez votre terminologie, et donc les personnes qui essaient de vous aider.

2 « J'aime »

Vous devez alors configurer ce nginx pour qu’il fasse un proxy vers Discourse.

Je vous recommande de simplement créer une nouvelle VM dédiée à Discourse.

1 « J'aime »

Désolé Stephen pour la confusion, j’ai juste utilisé le nom de l’outil qui est référencé dans l’article. Je comprends que NPM et nginx (en tant que) proxy manager sont des choses différentes, c’est pourquoi j’ai utilisé des majuscules…

C’est exactement ce que j’essaie de faire et je comprends que vous ne puissiez pas m’aider davantage. Cependant, toute indication / lien serait apprécié !

Je ne peux tout simplement pas, Jay : j’essaie d’aider un ami à déployer l’application et je ne peux pas modifier la configuration de son serveur. C’est pourquoi je dois résoudre le problème nginx…

Soit dit en passant, voici ce que je comprends :

  • Discourse écoute sur les ports 80/443.
  • nginx joue le rôle de commutateur, acheminant les requêtes vers différentes applications en fonction de leur nom de domaine :
    • netxcloud.mydomain.com essayant d’atteindre le port 80 → la requête est acheminée vers server_IP:8000
    • crm.mydomain.com essayant d’atteindre le port 80 → la requête est acheminée vers server_IP:9000
    • discourse.mydomain.com essayant d’atteindre le port 80 → la requête est acheminée vers http://unix:/var/discourse/shared/standalone/nginx.http.sock: (j’espère que le deux-points final n’est pas une faute de frappe) car le script de configuration a configuré Discourse pour qu’il écoute sur cette socket.

Est-ce que je suis sur la bonne voie ?

Merci beaucoup pour votre aide !

C’est assez ennuyeux et déroutant, mais pour être juste envers @jlgarnier, cet acronyme a été utilisé pour la première fois soit par @tophee, soit par @pfaffman dans Using Nginx Proxy Manager to manage multiple sites with Discourse pour désigner Nginx Proxy Manager. Je ne l’aime pas, mais si c’est « faux », ce n’est pas vraiment la faute de l’OP.

Par exemple, le sujet a une section appelée Install NPM qui se concentre entièrement sur Nginx Proxy Manager.

Wow, ça m’a trompé aussi.
C’est agaçant que ce projet ait détourné un acronyme existant huit ans après l’original.

2 « J'aime »

Je ne suis pas sûr que ce soit le cas ; j’ai parcouru leur site et je ne les ai pas vus utiliser eux-mêmes l’acronyme.

Ils l’utilisent dans leurs configurations 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 « J'aime »

Ah, mince ! Je ne m’en étais pas rendu compte. :slightly_smiling_face:

Salut à tous,

J’essaierai de reconfigurer nginx cet après-midi. Quelqu’un peut-il confirmer la syntaxe exacte pour le socket : http://unix:/var/discourse/shared/standalone/nginx.http.sock: ? Je veux m’assurer que le deux-points final n’est pas une faute de frappe…

Merci d’avance pour votre aide !

Je ne pense pas que ce deux-points devrait être là, non.

En effet… J’ai appliqué dans discourse.conf les modifications que je proposais vendredi dernier et Discourse fonctionne maintenant correctement ! Au moins, je peux accéder à la page d’accueil mais je ne reçois pas le mail d’activation, ce qui n’est pas lié à Discourse (je soupçonne que mon ami n’a pas créé le compte mail demandé :blush:).

Je vous dois un grand merci pour l’aide que vous m’avez apportée et j’espère ne pas revenir sur ce forum trop tôt ! :wink:

2 « J'aime »

Enfin, de retour plus tôt que prévu, mais vous pourrez probablement me lancer avec vos excellentes suggestions ! :grin:

La situation est la suivante :

  • Discourse est opérationnel, Docker (ou Portainer) indique que le conteneur est sain et je peux accéder à la page d’accueil forums.mydomain.com.
  • Je ne reçois aucun e-mail d’activation, bien que le compte e-mail technique ait été correctement créé (fournisseur d’hébergement = OVH).
  • J’ai testé l’envoi d’un e-mail depuis ce compte technique (avec la configuration ci-dessous) = OK.
  • La configuration actuelle des e-mails est la suivante :
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

Je ne sais pas vraiment par où commencer mes recherches et j’apprécierais tout conseil !

Merci d’avance pour votre aide !

La première chose que je vérifierai est si forums@mydomain.com a été configuré pour envoyer au nom de noreply-forums@mydomain.com, cela doit être vérifié auprès de votre fournisseur de messagerie.

1 « J'aime »

Je ne suis pas sûr que cette adresse puisse envoyer « au nom de », j’ai donc mis à jour app.yml pour définir la même adresse :

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

J’ai essayé telnet ssl0.ovh.net 465 = OK

Cependant, discourse-doctor signale :

========================================
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 =======================================

Le problème de messagerie pourrait-il être lié au prétendu problème de DNS ? Je n’ai pas de « proxy intermédiaire », j’utilise juste nginx comme serveur proxy web…

C’est probablement votre problème. Pouvez-vous essayer un port différent ? J’ai obtenu les meilleurs résultats avec le port 587 s’il est pris en charge par votre fournisseur de messagerie.

Vous devrez commenter cette ligne ou la définir sur true si vous changez le port pour 587.

Non, mon fournisseur de messagerie (qui est aussi mon fournisseur d’hébergement) n’autorise que le port 465. D’ailleurs, j’ai lu qu’il fallait configurer les enregistrements SPF et DKIM pour le domaine (est-ce un sous-domaine ?) et je n’ai encore rien configuré : cela pourrait-il avoir un impact ?

Voir Dépannage des e-mails sur une nouvelle installation de Discourse

1 « J'aime »

Je navigue sur le post mais j’ai oublié certaines informations :

  • Le DNS est géré par notre hébergeur (pour certains services), disons sur ServerA.
  • Discourse fonctionne sur un autre serveur (ServerB) qui est hébergé par un fournisseur différent.

Ma compréhension est donc la suivante : Discourse sur ServerB se connecte au serveur de messagerie sur ServerA, s’authentifiant avec un email/mot de passe pour utiliser le service SMTP fourni par l’hébergeur de ServerA.

Est-ce une configuration anormale ou puis-je toujours utiliser la configuration email normale de app.yml ici ?