Sidekiq affiche l'envoi d'e-mails d'activation à l'adresse e-mail nil

Salut les amis géniaux,

J’ai un petit problème amusant pour vous. Voici ce qui s’est passé :

  1. Installation de Discourse en utilisant discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub
  2. Test de l’e-mail avec le docteur, cela fonctionne et les e-mails sont reçus.
  3. Tentative d’activation du compte administrateur et Sidekiq révèle ceci (avec le jeton masqué) :
    {“type”=>“signup”, “user_id”=>1, “email_token”=>“MASQUÉ”, “to_address”=>nil, “current_site_id”=>“default”}

Je ne suis pas sûr pourquoi nil est une chose pour to_address.

Tous les conseils, avis ou suggestions seraient les bienvenus !

Je pourrais probablement le trouver, mais connaissez-vous le nom de la tâche Sidekiq qui a déclenché l’e-mail ?

Si vous ne parvenez pas à accéder au site parce que vous ne recevez pas l’e-mail d’activation, vous pouvez créer un utilisateur et un mot de passe administrateur avec rake admin:create. Les instructions complètes sont ici : Create an admin account from the console. Cela devrait vous permettre de vous connecter au site.

Il semble que vous deviez toujours régler ce qui se passe avec la livraison des e-mails.

6 « J'aime »

Désolé pour la réponse tardive. Le travail qui l’a déclenchée était : Jobs::CriticalUserEmail

J’ai donc suivi le guide exactement. Au moment d’enregistrer le compte administrateur, aucun e-mail n’a été envoyé, et Jobs::CriticalUserEmail contenait {« type »=>« signup », « user_id »=>1, « email_token »=>« REDACTED », « to_address »=>nil, « current_site_id »=>« default »}.

J’ai forcé le compte administrateur juste pour voir quels étaient les problèmes. Le résultat est le suivant :

  • Le médecin fonctionne et l’e-mail est reçu
  • Le test de résumé fonctionne et l’e-mail est reçu en version HTML et en version texte brut
  • Aucune inscription n’envoie d’e-mail, et le journal des e-mails dans la section d’administration n’indique même pas qu’un e-mail a été envoyé.

Chaque fois qu’un utilisateur tente de s’inscrire, le résultat est le même :
Jobs::CriticalUserEmail contenait {« type »=>« signup », « user_id »=>2, « email_token »=>« REDACTED », « to_address »=>nil, « current_site_id »=>« default »}.

La fin du fichier /var/discourse/shared/standalone/log/rails/production.log montre (avec des suppressions) :

Processing by UsersController#check_username as JSON
  Parameters: {"username"=>"bobo", "email"=>"REDACTED"}
Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 636)
Started GET "/session/csrf" for REDACTEDPUBLICIP at 2024-09-26 08:13:03 +0000
Processing by SessionController#csrf as JSON
Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 270)
Started POST "/u" for REDACTEDPUBLICIP at 2024-09-26 08:13:03 +0000
Processing by UsersController#create as */*
  Parameters: {"name"=>"JJ", "email"=>"REDACTED", "password"=>"[FILTERED]", "username"=>"bobo", "password_confirmation"=>"[FILTERED]", "challenge"=>"REDACTED", "timezone"=>"Europe/London"}
Completed 200 OK in 335ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 23323)
Started POST "/login" for REDACTEDPUBLICIP at 2024-09-26 08:13:04 +0000
Processing by StaticController#enter as HTML
  Parameters: {"username"=>"bobo", "password"=>"[FILTERED]", "redirect"=>"/u/account-created"}
Redirected to https://REDACTEDDOMAIN/u/account-created
Completed 302 Found in 1ms (ActiveRecord: 0.0ms | Allocations: 507)
Started GET "/u/account-created" for REDACTEDPUBLICIP at 2024-09-26 08:13:04 +0000
Processing by UsersController#account_created as HTML
  Rendered layout layouts/application.html.erb (Duration: 14.0ms | Allocations: 4624)
Completed 200 OK in 21ms (Views: 15.1ms | ActiveRecord: 0.0ms | Allocations: 6821)
Started GET "/sidekiq/queues/critical" for REDACTEDPUBLICIP at 2024-09-26 08:13:15 +0000

Dans le journal, il y a bien un e-mail précis pour les paramètres d’inscription, mais sidekiq indique toujours « to_address »=>nil.

1 « J'aime »

Y a-t-il des erreurs sur la page des journaux d’erreurs de votre site ? Cette page se trouve à /logs. Vous pouvez y accéder depuis la barre latérale d’administration en cliquant sur l’entrée Sécurité / Journaux d’erreurs.

1 « J'aime »

Oh intéressant. Je reçois ceci :

1 « J'aime »

Êtes-vous en mesure d’accéder à l’interface web Sidekiq sur /sidekiq ? Si oui, des erreurs sont-elles signalées sur cette page ?

1 « J'aime »

Je le suis, mais ce que j’obtiens est ceci :

Essayez de cliquer sur l’onglet « En file d’attente ». C’est un lien.

1 « J'aime »

J’obtiens ceci :

C’est là que j’ai découvert la chose address_to=nil.

Il y a un problème avec Redis et/ou Sidekiq. Quelques autres membres de ce forum pourraient avoir des idées sur la façon de déboguer le problème.

Je serais tenté de me connecter au serveur via SSH et d’exécuter :

cd /var/discourse
./launcher rebuild app

Cela ne pourrait pas faire de mal à ce stade.

1 « J'aime »

Oui, je l’ai fait plusieurs fois, d’où ma venue pour demander.

J’ai fait une reconstruction. J’ai même fait une installation complètement nouvelle.

Cela semble se produire à chaque installation. Peu importe quoi. Et je suis maintenant perdu.

Et je suis incroyablement reconnaissant pour ce que vous avez essayé de m’aider.

1 « J'aime »

C’est surprenant. Assurez-vous de suivre toutes les étapes décrites ici : . discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub.

Assurez-vous également que le serveur sur lequel vous installez Discourse répond aux exigences décrites ici : discourse/docs/INSTALL.md at main · discourse/discourse · GitHub.

Ce serait formidable de comprendre ce qui ne va pas.

3 « J'aime »

Je peux vous donner le processus exact que j’ai utilisé. Peut-être que quelque chose dans le processus que je fais est faux. Je suis prêt à accepter totalement que je fais une erreur quelque part !

  1. Avoir un domaine. C’est discourse.domain.dev (domaine évidemment masqué)
  2. Avoir un compte e-mail configuré. J’ai un compte mailgun, j’ai donc configuré un nouvel utilisateur pour le SMTP. L’e-mail est discourse@discourse.domain.dev
  3. Avoir un serveur. C’est la dernière version d’Ubuntu (Jammy Jellyfish)
  4. apt install docker.io - Aucun
  5. Git était déjà installé
  6. L’utilisateur était root
  7. Cloné en utilisant git clone https://github.com/discourse/discourse_docker.git /var/discourse
  8. Navigué vers cd /var/discourse
  9. chmod 700 containers
  10. Toujours utilisateur root
  11. Lancé ./discourse-setup
  12. Rempli les informations demandées : discourse.domain.dev
  13. E-mail administrateur Discourse : my@personal.email
  14. SMTP : smtp.eu.mailgun.org
  15. PORT SMTP : 587
  16. Nom d’utilisateur : noreply@discourse.domain.dev
  17. Mot de passe utilisateur : MASQUÉ
  18. E-mail de notification : noreply@discourse.domain.dev
  19. E-mail Lets encrypt : my@personal.email
  20. ID Maxmind : Mis dedans
  21. Clé de licence Max Mind : Mise dedans
  22. Vérifié les données d’entrée pour la configuration.
  23. Appuyé sur Entrée.
  24. Attendu.
  25. Attendu encore
  26. Fait une tasse de thé
  27. Dernière ligne du processus de démarrage :
    + /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=8 -e UNICORN_SIDEKIQS=1 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_FORCE_HTTPS=true -e LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e DISCOURSE_HOSTNAME=discourse.domain.dev -e DISCOURSE_DEVELOPER_EMAILS=my@personal.email -e DISCOURSE_SMTP_ADDRESS=smtp.eu.mailgun.org -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=noreply@discourse.domain.dev -e DISCOURSE_SMTP_PASSWORD=b7fc73b0905b5ffb5f70300f1f796000-1b5736a5-0a60075a -e DISCOURSE_SMTP_DOMAIN=discourse.example.com -e DISCOURSE_NOTIFICATION_EMAIL=noreply@discourse.domain.dev -e LETSENCRYPT_ACCOUNT_EMAIL=my@personal.email -e DISCOURSE_MAXMIND_ACCOUNT_ID=MASQUÉ -e DISCOURSE_MAXMIND_LICENSE_KEY=MASQUÉ -h devsite -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address MASQUÉ local_discourse/app /sbin/boot
    MASQUÉLONGSTRING
  28. Lancé ./discourse-doctor. Il a échoué car il ne pouvait pas se connecter à redis.
  29. Lancé ./laucher rebuild app et n’a rien changé dans la configuration
  30. Il a construit. Tout va bien. La seule différence était la dernière longue chaîne masquée.
  31. Lancé ./discourse-doctor. J’ai reçu l’e-mail de test.
  32. Le site était en ligne, je suis donc allé créer un compte utilisateur pour l’administrateur.
  33. Cliqué sur S’inscrire
  34. Il a dit qu’il envoyait un e-mail de notification.
  35. Aucun reçu.
  36. Vérifié via ./discourse-docter et vu ceci :
    Version de Discourse sur discourse.domain.dev : NON TROUVÉE Version de Discourse sur localhost : NON TROUVÉE
  37. Lancé ./launcher enter app
  38. Lancé rake admin:create
  39. Mis l’e-mail : my@personal.email
  40. Réinitialisé le mot de passe car l’utilisateur existe déjà
  41. Dit “Votre compte a maintenant les privilèges d’administrateur !”
  42. Connecté au site sur le domaine
  43. Aller sur discourse.domain.dev/logs - voir “Le test de battement de cœur de Sidekiq a échoué, redémarrage”
  44. Aller sur discourse.domain.dev/sidekiq : Voir :
  45. Aller voir Enqueued
  46. Cliqué sur “critical” et développé le contenu et vu “to_address”=nil à nouveau.

Arrêtez-vous et contactez-moi.

C’est une refonte complète sur une nouvelle machine aujourd’hui. Ce sont les MÊMES étapes que j’ai utilisées auparavant. S’il vous plaît, si j’ai fait une erreur, dites-le moi ! :pray:


Configuration du système :

  • CPU : 4 cœurs
  • RAM : 16 Go
  • OS : Ubuntu LTS 64 bits 24.04
  • Stockage : NVMe 500G
  • Version de Postgres : 13.16-1
  • Redis : 7.0.7
  • Ruby : 3.3.4
1 « J'aime »