Problemi con Discourse 3.5.0.beta2-dev - SMTP e lavori in background

Il seguente rapporto è stato preparato per me da ChatGPT, basato sulla mia effettiva esperienza di installazione di Discourse (non essendo io stesso molto esperto di tecnologia, mi sono affidato all’IA per ottenere aiuto con compiti che trovo difficili). Al momento non ho bisogno di aiuto, ma spero che il rapporto possa fornire un feedback utile su 3.5.0.beta2-dev.

==================

Gentile Team di Discourse,

Voglio condividere alcuni dettagli di risoluzione dei problemi relativi ai problemi di posta elettronica che ho riscontrato durante l’esecuzione di Discourse 3.5.0.beta2-dev. Non ho bisogno di assistenza diretta poiché ho deciso di tornare a 3.4.0.beta4-dev, ma spero che questo rapporto sia utile per identificare potenziali problemi con l’ultima versione di sviluppo.


1. Riepilogo del problema

Ho eseguito un’installazione pulita di Discourse su una nuova istanza Vultr, utilizzando il servizio SMTP di 20i (smtp.stackmail.com). Tuttavia, le e-mail non sono mai state consegnate, nonostante:

  • Un test di connettività SMTP riuscito (openssl s_client -connect smtp.stackmail.com:587 -starttls smtp).
  • Nessun errore nei log di posta di 20i (suggerendo che Discourse non stesse effettivamente inviando e-mail).
  • Sidekiq non riuscisse a elaborare i processi di posta elettronica.

Ciò era inaspettato perché qualche settimana fa avevo installato con successo Discourse 3.4.0.beta4-dev su un’istanza identica senza problemi di posta elettronica.

Dopo un’approfondita analisi, ho scoperto che la mia attuale installazione aveva installato inaspettatamente Discourse 3.5.0.beta2-dev, il che probabilmente ha contribuito ai problemi.


2. Problemi chiave identificati

A. Le e-mail non venivano consegnate

  • Le impostazioni SMTP erano corrette, verificate tramite test manuali (i test swaks e openssl sono riusciti).
  • Le e-mail venivano accodate in Sidekiq ma mai ricevute.
  • I log di posta di 20i non mostravano nessun rifiuto o tentativo di consegna (suggerendo che i messaggi non abbiano mai lasciato Discourse).
  • Nessun errore relativo alla posta elettronica è apparso in production.log (grep "smtp" non ha restituito nulla).

B. Problemi con Sidekiq e Redis

  • Inizialmente, Sidekiq non era in esecuzione (Sidekiq::Workers.new.size restituiva 0).
  • Il riavvio manuale di Sidekiq (sv restart sidekiq) non è riuscito perché Sidekiq mancava come servizio.
  • Redis era in esecuzione (redis-cli ping restituiva PONG), ma i log di Discourse mostravano comunque errori di connessione a Redis (Errno::ECONNREFUSED).
  • I log di Sidekiq indicavano fallimenti dei processi a causa di problemi di connessione a Redis, anche se Redis era confermato essere attivo.
  • L’avvio manuale di Sidekiq (bundle exec sidekiq) ha permesso l’elaborazione dei processi, ma le e-mail continuavano a non essere inviate.

C. Discrepanza di versione tra le installazioni

  • La mia installazione precedente (che funzionava) era su 3.4.0.beta4-dev.
  • La mia installazione attuale ha installato inaspettatamente 3.5.0.beta2-dev, nonostante utilizzasse lo stesso metodo di configurazione.
  • Poiché la posta elettronica funzionava perfettamente in 3.4.0.beta4-dev, sospetto una regressione o una modifica che rompe in 3.5.

3. Azioni intraprese (tutte fallite)

Abbiamo provato sistematicamente le seguenti soluzioni:

:white_check_mark: Connettività SMTP confermata con:

openssl s_client -connect smtp.stackmail.com:587 -starttls smtp  # Riuscito
swaks --to my-email --server smtp.stackmail.com --port 587 --auth LOGIN  # Riuscito

:white_check_mark: Verificato che le e-mail fossero accodate:

Jobs.enqueue(:user_email, type: :test_message, to_address: 'masden@kumagaku.ac.jp')  # Restituito un ID di processo
Sidekiq::Queue.new("default").size  # Restituito 0 (indicando che il processo è stato elaborato)

:white_check_mark: Controllato i log di Discourse:

grep "smtp" /shared/log/rails/production.log  # Nessun errore relativo a SMTP
  • Errori di connessione a Redis (Errno::ECONNREFUSED in production.log).

:white_check_mark: Riavviati e attivati manualmente i servizi:

sv restart sidekiq  # Fallito, servizio mancante
redis-cli ping  # Confermata l'esecuzione
bundle exec sidekiq  # Processi elaborati ma nessuna e-mail inviata

:white_check_mark: Verificato se le e-mail venissero bloccate da 20i:

  • Nessun rifiuto o tentativo di consegna nei log di posta di 20i.
  • Se le e-mail fossero state rifiutate, ci sarebbe dovuta essere una voce di log, ma non è apparso nulla.

4. Conclusione: Ripristino a 3.4.0.beta4-dev

Dopo un’estesa risoluzione dei problemi, ho deciso di cancellare l’installazione e reinstallare 3.4.0.beta4-dev, poiché la mia precedente installazione ha funzionato senza intoppi con quella versione.

Sebbene non abbia bisogno di aiuto diretto, volevo segnalare questi problemi perché:

  • La gestione delle e-mail potrebbe essere cambiata in 3.5, impedendo l’handoff SMTP.
  • Il servizio mancante di Sidekiq e gli errori di Redis suggeriscono problemi di elaborazione dei processi in background in 3.5.
  • Poiché sono stato in grado di installare 3.4.0.beta4-dev senza problemi, ciò suggerisce una possibile regressione in 3.5.

Spero che questo rapporto sia utile per identificare potenziali problemi in Discourse 3.5.0.beta2-dev.

Cordiali saluti,
Kirk

2 Mi Piace

Ciò era previsto, perché è la versione attuale.

Molti utilizzano la stessa ultima versione, e sidekiq funziona, e quindi anche le email.

Quindi potresti aver bisogno di aiuto, perché in quel caso non potrai nemmeno ricostruire.

E una conoscenza molto migliore potrebbe occuparsi di questo argomento, ma direi che abbiamo qui argomenti su sidekiq fermo. La ricerca può aiutare.

4 Mi Piace

Continuo ad avere difficoltà nell’installazione di Discourse. Ecco un altro report preparato da ChatGPT. Credo che rappresenti accuratamente la mia esperienza.


Report: Problemi con l’installazione di Discourse e servizio Sidekiq mancante

Contesto:
Abbiamo tentato un’installazione pulita di Discourse su un’istanza Vultr, con l’intenzione di impostare un deployment stabile e funzionante. Tuttavia, abbiamo riscontrato problemi significativi, in particolare con servizi mancanti come Sidekiq, che hanno impedito la consegna delle email e l’elaborazione dei job in background.


Riepilogo dei problemi riscontrati

  1. Versione inaspettata installata
    • Invece della versione attesa v3.4.0.beta4-dev, l’installazione ha utilizzato di default tests-passed, scaricando una versione potenzialmente instabile.
    • Il file VERSION era mancante, rendendo poco chiaro quale versione esatta fosse stata installata.
  2. Servizio Sidekiq mancante
    • La directory /etc/service/sidekiq era assente all’interno del container Discourse.
    • Ciò ha impedito l’esecuzione di tutti i job in background (email, notifiche, attività pianificate).
  3. Problemi con il repository Git di Discourse
    • L’esecuzione di git rev-parse --abbrev-ref HEAD all’interno del container ha restituito tests-passed, confermando che era stata installata una versione non intenzionale.
    • Git ha restituito un errore “detected dubious ownership” (proprietà dubbia rilevata), che ha richiesto un intervento manuale (git config --global --add safe.directory /var/www/discourse).
  4. Potenziali problemi di dipendenza
    • Anche se viene scaricata una versione precedente di Discourse, c’è la preoccupazione che dipendenze più recenti (Ruby, Redis, Sidekiq) possano essere scaricate durante l’installazione, causando potenziali problemi di compatibilità.
    • Se le dipendenze di Discourse non sono bloccate correttamente, l’installazione potrebbe comportarsi in modo incoerente tra diversi ambienti.
  5. Rate limiting del certificato SSL
    • Un tentativo di ottenere un nuovo certificato SSL Let’s Encrypt è fallito a causa del superamento del limite di richieste.
    • Ciò ha causato il mancato avvio di Nginx, poiché non riusciva a caricare il file del certificato previsto.

Prossimi passi pianificati

  1. Eseguire una pulizia completa e reinstallare
    • Rimuovere completamente /var/discourse e clonare nuovamente il repository.
    • Scaricare manualmente una versione stabile (ad esempio, v3.4.1) prima di eseguire l’installazione.
    • Utilizzare ./discourse-setup invece di affidarsi ai valori predefiniti per garantire parametri corretti.
  2. Assicurarsi che Sidekiq sia installato
    • Prima della ricostruzione, verificare che il servizio sidekiq sia correttamente incluso nel processo di build.
    • Se Sidekiq è mancante dopo la ricostruzione, verificare manualmente la sua installazione tramite bundle list | grep sidekiq.
  3. Bloccare le dipendenze a versioni stabili
    • Evitare problemi relativi alle dipendenze utilizzando esplicitamente un’immagine Docker di Discourse nota per essere stabile (ad esempio, discourse/discourse:2.0.20240101).
    • Bloccare le versioni delle gem all’interno del container (bundle install --deployment --without test development).
  4. Ritentare l’emissione del certificato SSL
    • Attendere il reset del limite di richieste di Let’s Encrypt e riprovare la generazione del certificato SSL.
    • Se i problemi persistono, considerare l’utilizzo temporaneo di un certificato autofirmato per la risoluzione dei problemi.

Richiesta di feedback

Considerate queste sfide, apprezzeremmo il contributo del team e della community di Discourse riguardo a:

  • Sidekiq mancante da /etc/service/ in un’installazione pulita – Qualcun altro ha riscontrato questo problema?
  • Migliori pratiche per garantire la stabilità delle dipendenze – Esiste un modo consigliato per bloccare le versioni delle dipendenze per le installazioni di Discourse?
  • Potenziali problemi con l’installazione predefinita di tests-passed – Potrebbe esserci un problema con il modo in cui vengono recuperate le versioni?

Qualsiasi intuizione sarebbe utile prima di procedere con la reinstallazione. Grazie in anticipo!

In realtà non è instabile. È l’impostazione predefinita per tutti i forum ora. Discourse non imposterà un ramo instabile come predefinito.

Hmm… cosa vedi quando vai su /sidekiq nel tuo forum?

Quale ramo intendi installare? Forse questa guida ti aiuterà?

3 Mi Piace

Penso che ciò di cui potresti aver bisogno siano alcuni dettagli sulla configurazione del tuo VPS. CPU, RAM, spazio su disco e ZIS cioè Ubuntu LTS 24.

Quando dici che hai testato la posta, hai usato il test di discourse e hai ricevuto un’email?

Nel mio XP nel file app.yml dovresti avere 3 linee di configurazione principale per lo SMTP.

  • Username:
  • Password
  • PORT

Da quello che hai detto, avevi questo funzionante in una precedente installazione di discourse?

Come menzionato, “Tests-Passed” è la versione raccomandata da installare. La versione stabile, a mio avviso, è più adatta a persone con plugin e temi personalizzati - che potrebbero richiedere aggiornamenti frequenti per evitare rotture.

Puoi condividere un log di ricostruzione con errori? Ricorda di scorrere verso l’alto quando catturi il log, perché l’ultimo errore è semplicemente un risultato fallito. Puoi sempre censurare dati sensibili come l’utente SMTP e le password.

Ci sono anche alcuni argomenti sui problemi SMTP delle email che potrebbero avere soluzioni.

1 Mi Piace

Mi scuso per la mia tarda risposta. Come ho scritto in risposta a un altro commento, non sono in grado di fornire dettagli sul mio ultimo tentativo fallito perché ho cancellato gran parte del software per riprovare. Vi terrò aggiornati non appena potrò.

Grazie per i tuoi commenti dettagliati. Mi scuso per la mia lenta risposta.

Sto tentando un’altra installazione con versioni precedenti di vari software. Questo mi rende difficile rispondere alle tue domande sul mio precedente tentativo fallito. Non appena potrò completare la mia prossima installazione, ti farò sapere.

1 Mi Piace

Qualcosa da considerare come test aggiuntivo, se necessario. Crea un account gratuito su https://www.brevo.com; hanno un livello gratuito di 300 email al giorno. Al momento uso questo.

Se hai problemi nell’invio di email, questo potrebbe aiutarti a verificare se il problema è correlato al tuo provider di posta elettronica.

2 Mi Piace

TL;DR non fare affidamento su ChatGPT, questi sono tutti falsi allarmi.

È bene chiedere aiuto, è una cattiva idea affidarsi ad esso, come dimostrerò di seguito.
Grazie per avermi rassicurato che non sarò reso disoccupato da ChatGPT presto. :wink:

beta4-dev è potenzialmente instabile quanto tests-passed

Non esiste un file del genere.

Non dovrebbe esistere una tale directory.

Ne dubito.

Questo è previsto.

Questo è un comportamento normale se si utilizza git su una directory senza esserne il proprietario.

Questo non ha senso. E tests-passed è più recente di quello che ti ‘aspettavi’, non più vecchio.

Questo perché hai provato troppe volte.

6 Mi Piace

Voglio sottolineare questo.
Il più delle volte, se suggerisci a chatGPT che ci sono problemi da trovare, troverà problemi, anche se non ci sono. È anche veloce a farci entrare in un ciclo infinito di “correzioni” che suggerisce continuamente.

5 Mi Piace

Grazie mille!

Per quanto riguarda l’IA, è chiaro che ChatGPT non è stata una guida affidabile. D’altra parte, ho trovato il debug difficile, quindi la tentazione di affidarsi ad essa è grande per qualcuno come me.

Ho appena completato un’installazione di successo. ChatGPT (versione a pagamento) non è riuscito a portarmi all’obiettivo, ma Claude di Anthropic (anche versione a pagamento; li uso entrambi) alla fine ci è riuscito. Mi ha aiutato a risolvere problemi che ChatGPT aveva introdotto.

Cercherò di scrivere di nuovo più tardi sulla mia esperienza. Grazie per tutti i vostri commenti utili!

2 Mi Piace

Sono d’accordo. Dal mio utilizzo, Claude è molto più comodo e di solito fornisce una risposta corretta immediata.

Sono contento che tu abbia avuto successo!

5 Mi Piace

Grazie! È notevole quanto possano essere diversi per certi compiti, quasi come persone con personalità diverse. Claude sembra essere più “riflessivo” mentre ChatGPT tende a trarre conclusioni affrettate e a correre un po’ di più. Mi sono trovato in situazioni in cui ChatGPT è stato migliore, però. Spero che ENTRAMBI migliorino. L’IA mi ha aiutato a scrivere molti script che funzionano davvero, anche se non sono uno scrittore di script. Ha il potenziale per essere un ottimo strumento per persone con difficoltà tecnologiche come me, ma deve assolutamente migliorare. È davvero frustrante essere portati in un vicolo cieco. : (

4 Mi Piace

Ecco un breve resoconto della mia installazione riuscita con una domanda su come procedere.

Non sono ancora sicuro del motivo per cui ho avuto problemi con SMTP nei tentativi recenti. In realtà, il mio primo tentativo qualche settimana fa è stato un successo, ma stavo usando un server Vultr che ho deciso fosse più grande del necessario e l’unico modo per effettuare il downgrade era ottenere un nuovo server più piccolo e poi cancellare quello più grande.

Secondo un’e-mail che ho ricevuto, la versione di Discourse che ho installato qualche settimana fa era la 3.4.0.beta4-dev. L’e-mail raccomandava di aggiornare alla 3.4.0.beta4.

Poiché ho avuto problemi con SMTP nella versione 3.4.0.beta4-dev, ho pensato di provare a installare una versione stabile precedente di Discourse. In discussione con ChatGPT (inaffidabile, lo so) abbiamo deciso di provare a installare la versione 3.4.1. Pensavo che quella versione sarebbe stata stabile. Ecco cosa abbiamo finito per installare:

  • Versione di Discourse: 3.5.0.beta2-dev
  • Versione Docker: 23.0.6
  • sidekiq: 6.5.12
  • Versione PostgreSQL: PostgreSQL 15.12 (Debian 15.12-1.pgdg120+1)
  • Versione Redis: 7.0.15
  • NGINX: 1.26.2
  • Versione Ubuntu: 22.04 LTS (Jammy Jellyfish)
  • Versione Git: 2.39.5

Penso che, indipendentemente dalla nostra intenzione (cioè, la mia intenzione assistita dall’IA) di installare versioni stabili precedenti, abbiamo finito per installare comunque Discourse 3.5.0.beta2-dev.

È stato difficile (molti falsi inizi e l’uso di comandi datemi dall’IA per correggere cose che non funzionavano), ma il mio Discourse è finalmente attivo e funzionante.

Ecco alcune domande:

  1. Se non erro, gli utenti attuali non vengono ancora incoraggiati ad aggiornare alla versione 3.5.0, presumibilmente perché non è ancora completamente testata. In tal caso, perché i principianti come me sono più o meno costretti a installarla?
  2. Penso che la mia versione di Docker sia vecchia (obsoleta). Dovrei semplicemente usare il terminale per aggiornare all’ultima versione? Discourse funziona ora e dato che ho avuto così tanti problemi per arrivare a questo punto, non voglio fare nulla che possa rovinarlo.
  3. Penso che le altre versioni del software siano abbastanza recenti. Se notate qualcosa che potrebbe essere problematico o che necessita di un aggiornamento, fatemelo sapere.
  4. Esiste una pagina o una sezione di questa community che affronti questioni tecniche di “cura e manutenzione”? Voglio mantenere la mia community sana e funzionante ed essere preparato con backup, ecc. per qualsiasi problema possa sorgere.
2 Mi Piace

Ho appena completato un ripristino dal backup della precedente community di Discourse. Sembra che sia andato bene e potrebbe aver aggiornato anche Docker (problema menzionato sopra):

Mi interrogo su questo messaggio, che ricevo subito dopo il ripristino: “L’invio di email è stato disabilitato per gli utenti non staff”.

Facendo riferimento a un altro thread qui

ho trovato dove cambiare l’impostazione.

Quindi, ora presumo di essere a posto, ma se possibile apprezzerei una conferma. “no” è l’impostazione corretta, giusto? Penso che gli utenti normali debbano ricevere notifiche via email, quindi sono un po’ perplesso dall’impostazione di disabilitazione. Mi chiedo quali situazioni richiederebbero la disabilitazione delle email.

Ho avuto un problema simile con l’invio di email su una nuova installazione di Discourse che ho dettagliato qui:

Il problema era che l’indirizzo email notifications in app.yml non era stato autenticato con il mio provider SMTP (SendGrid).

Non è apparso nulla nei log principali di Discourse, né nei log di SendGrid. L’errore è stato visualizzato eseguendo discourse-doctor:

Reason: 550 The from address does not match a verified Sender Identity.

Se non l’hai già fatto, ti suggerisco di eseguire discourse-doctor poiché potrebbe fornire maggiori informazioni sul motivo per cui le email non vengono inviate.

2 Mi Piace

Grazie mille!!

Ottimo consiglio. Non ero a conoscenza di Discourse-doctor ma penso che mi abbia fatto risparmiare molto tempo.

Lo terrò a mente se dovessi incontrare altri problemi. :slight_smile:

1 Mi Piace