Sidekiq mostra che le email di attivazione vengono inviate all'indirizzo email nil

Ciao gente fantastica,

Ho un problema interessante per voi. Ecco cosa è successo:

  1. Installato discourse usando discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub
  2. Testato l’email con doctor, funziona e le email sono state ricevute.
  3. Tentato di attivare l’account amministratore e sidekiq rivela questo (con token redatto):
    {“type”=>“signup”, “user_id”=>1, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}

Non sono sicuro del perché nil sia presente per to_address.

Qualsiasi suggerimento, consiglio o indicazione sarebbe molto apprezzato!

Probabilmente riesco a trovarlo, ma sai quale fosse il nome del job Sidekiq che ha attivato l’email?

Se non riesci ad accedere al sito perché non ricevi l’email di attivazione, puoi creare un utente amministratore e una password con rake admin:create. Le istruzioni complete sono qui: Create an admin account from the console. Questo dovrebbe permetterti di accedere al sito.

Sembra che dovrai comunque risolvere cosa sta succedendo con la consegna delle email.

6 Mi Piace

Mi scuso per la risposta in ritardo. Il processo che l’ha innescata è stato: Jobs::CriticalUserEmail

Quindi ho seguito la guida esattamente. Quando si è trattato di registrare l’account admin, non è stata inviata alcuna email e Jobs::CriticalUserEmail conteneva {“type”=>“signup”, “user_id”=>1, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}.

Ho forzato l’account admin solo per poter vedere quali fossero i problemi. Il risultato è il seguente:

  • Doctor funziona e l’email viene ricevuta
  • Digest test funziona e l’email viene ricevuta sia in versione HTML che Plain
  • Nessuna registrazione invia email e il log delle email nella sezione admin non mostra nemmeno un messaggio che un’email è stata inviata.

Ogni volta che un utente tenta di registrarsi, il risultato è lo stesso:
Jobs::CriticalUserEmail conteneva {“type”=>“signup”, “user_id”=>2, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}.

La coda di /var/discourse/shared/standalone/log/rails/production.log mostra (con le parti omesse):

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

Nel log, mostra email accurate per i parametri di registrazione, ma sidekiq riporta ancora “to_address”=>nil.

1 Mi Piace

Ci sono errori nella pagina dei log degli errori del tuo sito? Quella pagina si trova su /logs. Puoi accedervi dal pannello di amministrazione facendo clic sulla voce Sicurezza / Log degli errori.

1 Mi Piace

Oh interessante. Ottengo questo:

1 Mi Piace

È possibile accedere all’interfaccia web di Sidekiq all’indirizzo /sidekiq? Se sì, ci sono errori segnalati in quella pagina?

1 Mi Piace

Certo, ma quello che ottengo è questo:

Prova a fare clic sulla scheda “In coda”. È un collegamento.

1 Mi Piace

Ottengo questo:

Che è dove ho scoperto la cosa address_to=nil.

C’è qualcosa che non va con Redis e/o Sidekiq. Ci sono alcuni altri membri di questo forum che potrebbero avere idee su come eseguire il debug del problema.

Sarei tentato di connettermi via ssh al server ed eseguire:

cd /var/discourse
./launcher rebuild app

A questo punto non potrebbe fare male.

1 Mi Piace

Sì, l’ho fatto diverse volte, ecco perché sono venuto a chiedere.

Ho fatto una ricompilazione. Ho anche fatto un’installazione completamente nuova.

Sembra succedere a ogni singola installazione. Non importa cosa. E ora sono perso.

E sono incredibilmente grato per quello che hai cercato di aiutarmi.

1 Mi Piace

È sorprendente. Assicurati di seguire tutti i passaggi delineati qui: . discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub.

Inoltre, assicurati che il server su cui stai installando Discourse soddisfi i requisiti delineati qui: discourse/docs/INSTALL.md at main · discourse/discourse · GitHub.

Sarebbe fantastico capire cosa sta andando storto.

3 Mi Piace

Posso fornirti il processo esatto che ho utilizzato. Forse c’è qualcosa che sto facendo di sbagliato. Sono disposto ad accettare totalmente che sto commettendo un errore da qualche parte!

  1. Ho un dominio. È discourse.domain.dev (dominio ovviamente modificato)
  2. Ho un account email configurato. Ho un account mailgun, quindi ho impostato un nuovo utente per SMTP. L’email è discourse@discourse.domain.dev
  3. Ho un server. È l’ultima versione di Ubuntu (Jammy Jellyfish)
  4. apt install docker.io - Nessuno
  5. Git era già installato
  6. l’utente era root
  7. clonato usando git clone https://github.com/discourse/discourse_docker.git /var/discourse
  8. navigato in cd /var/discourse
  9. chmod 700 containers
  10. ancora utente root
  11. eseguito ./discourse-setup
  12. Compilato le informazioni come richiesto: discourse.domain.dev
  13. Email Admin di Discourse: my@personal.email
  14. SMTP: smtp.eu.mailgun.org
  15. PORTA SMTP: 587
  16. nome utente: noreply@discourse.domain.dev
  17. password utente: REDACTED
  18. email di notifica: noreply@discourse.domain.dev
  19. email Lets Encrypt: my@personal.email
  20. Maxmind ID: Inserito
  21. Max Mind License: Inserita
  22. Verificati i dati di input per la configurazione.
  23. Premuto Invio.
  24. Aspettato.
  25. Aspettato ancora un po’
  26. Preparato una tazza di tè
  27. Ultima riga del processo di bootstrap:
    + /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=REDACTED -e DISCOURSE_MAXMIND_LICENSE_KEY=REDACTED -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 REDACTGED local_discourse/app /sbin/boot
    REDACTEDLONGSTRING
  28. Eseguito ./discourse-doctor. È fallito perché non riusciva a connettersi a redis.
  29. Eseguito ./launcher rebuild app e non ho cambiato nulla nella configurazione
  30. È stato costruito. Tutto ok. L’unica differenza era l’ultima stringa lunga redatta.
  31. Eseguito ./discourse-doctor. Ho ricevuto l’email di test da esso.
  32. Il sito era attivo, quindi sono andato a creare un account utente per l’admin.
  33. Cliccato su Registrati
  34. Ha detto che stava inviando un’email di notifica.
  35. Nessuna ricevuta.
  36. Controllato tramite ./discourse-docter e ho visto questo:
    Versione di Discourse su discourse.domain.dev: NON TROVATA
    Versione di Discourse su localhost: NON TROVATA
  37. Eseguito ./launcher enter app
  38. Eseguito rake admin:create
  39. Inserito email: my@personal.email
  40. Reimpostata Password poiché l’utente esiste già
  41. Messaggio “Il tuo account ora ha i privilegi di Admin!”
  42. Acceduto al sito sul dominio
  43. Vai su discourse.domain.dev/logs - vedi “Test heartbeat Sidekiq fallito, riavvio”
  44. Vai su discourse.domain.dev/sidekiq: Vedi:
  45. Vai su visualizza In coda
  46. Cliccato su “critical” ed espanso il contenuto e visto “to_address”=nil di nuovo.

Fermati e contatta.

Questa è una rifacimento completo su una nuova macchina oggi. Questi sono gli stessi IDENTICI passaggi che ho usato prima. Per favore, se ho sbagliato, fatemelo sapere! :pray:


Configurazione del sistema:

  • CPU: 4 Core
  • RAM: 16 GB
  • OS: Ubuntu LTS 64bit 24.04
  • Archiviazione: NVMe 500G
  • Versione Postgres: 13.16-1
  • Redis: 7.0.7
  • Ruby: 3.3.4
1 Mi Piace