Aggiornato accidentalmente, ora alcune impostazioni sono perse/danneggiate

Per completezza, devo dire che non ho mai effettuato alcuna manutenzione manuale sulla nostra installazione auto-ospitata di Discourse da molto, molto tempo, e che qualcuno l’ha configurata originariamente.

Dovevo modificare le mie credenziali SMTP, perché SendGrid richiede di passare dall’autenticazione di base alle chiavi API.

Ho trovato questo documento: Provider di posta consigliati per Discourse

Che dice:

Per cambiare il servizio di posta corrente, esegui anche ./discourse-setup (questo porterà il forum offline per alcuni minuti mentre viene ricostruito).

Ho eseguito quel comando, risposto alle domande come previsto, e questo ha generato circa 2.000 righe di output su stdout, terminando con:

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
    ./analyze_new_cluster.sh

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh
-------------------------------------------------------------------------------------
UPGRADE OF POSTGRES COMPLETE

Old 10 database is stored at /shared/postgres_data_old

To complete the upgrade, rebuild again using:

./launcher rebuild app
-------------------------------------------------------------------------------------

cfd4df26701b4b4cd4a4202f30a9c8165a1ba609c921bffc25f250f52fee6cbe

Ora, non mi aspettavo che questo “aggiornasse” qualcosa. Volevo solo cambiare le credenziali SMTP. Ma il sito non è tornato online automaticamente, quindi ho fatto quanto indicato dal testo “per completare l’aggiornamento” ed ho eseguito:

./launcher rebuild app

Questo ha generato un’altra ~8.000 righe di output su stdout. Il sito è finalmente tornato online, MA non sembra più lo stesso:

  • Il mio logo mancava, sostituito dal logo “Discourse”.
  • Le immagini degli avatar degli utenti erano rotte. Alla fine, hanno iniziato a funzionare di nuovo.
  • Le immagini nei post e i loghi delle categorie erano rotte. Questi non funzionano ancora. Ho cercato immagini con nomi di file corrispondenti nella directory ./discourse/share E nel nostro bucket S3 (dove l’URL si aspetta di trovarle), ma non esistono.
  • I post dalla mia categoria “supporto”, che avevo nascosto dalla pagina “ultimi”, sono ora di nuovo visibili su quella pagina.
  • La mia categoria “supporto” non è più visibile nella pagina “categorie”.
  • La pagina “categorie” ora ha due colonne, con le categorie a sinistra e “ultimi” a destra. Penso che prima fosse solo un elenco di categorie.
  • Il colore del + nel mio pulsante + Nuovo argomento è cambiato da bianco a grigio.

A questo punto sospetto che alcune configurazioni siano andate perse, ma tutti i miei post sono intatti. Penso anche che Discourse si sia aggiornato da solo (da quale versione non lo so, probabilmente molte versioni), e che alcune impostazioni predefinite sottostanti, CSS, template, ecc., siano cambiati causando i problemi elencati sopra.

Vedendo il codice sorgente, posso vedere che la versione è ora 2.6.0.beta6, che è stata rilasciata apparentemente solo 7 giorni fa.

Quindi le mie domande sono:

  • È normale dover aggiornare completamente il software in questo modo per applicare una semplice modifica alle impostazioni, come le credenziali SMTP?
  • Come posso modificare le impostazioni o applicare aggiornamenti di sicurezza senza aggiornare l’intero software?
  • Dove sono le mie immagini, o perché il loro URL è cambiato in qualche modo rendendole non più accessibili?
  • Esiste un modo per tornare indietro senza perdere i nuovi post avvenuti dopo tutto ciò? Non so nemmeno quale versione stavamo eseguendo prima. Ho dei backup di Discourse su S3 (solo un dump SQL compresso con gzip).
  • Devo semplicemente rivedere tutte le impostazioni e le personalizzazioni manualmente per risolvere cose come il colore del + Nuovo argomento e la categoria “supporto” nascosta/visibile?

Pensavo che avessimo mantenuto snapshot EBS del nostro volume EC2 su cui era ospitato Discourse, ma si è scoperto che non era così. Da allora ho abilitato gli snapshot in modo da poter fare un rollback in quel modo in futuro, se necessario.

Grazie.

Sì. Avrebbe sido possibile distruggere e riavviare il contenitore per applicare le nuove impostazioni SMTP, ma avresti dovuto esaminare attentamente le istruzioni per sapere come farlo.

No. Gli aggiornamenti di sicurezza fanno parte dell’intero software. Avresti potuto utilizzare il ramo stabile, ma sembra che fossi indietro di diverse versioni, quindi la maggior parte dei tuoi problemi si sarebbe comunque verificata.

Non è chiaro. Di solito non si perdono durante un aggiornamento.

No. [quote=“mrmachine, post:1, topic:171465”]
Devo semplicemente rivedere tutte le impostazioni e le personalizzazioni manualmente per correggere cose come il colore del pulsante + Nuovo argomento e la categoria “supporto” nascosta/visibile?
[/quote]

Sì. Sembra che stessi utilizzando una versione vecchia di diversi anni. Da allora, dozzine di programmatori hanno dedicato migliaia di ore di lavoro. Hanno apportato modifiche che hanno interrotto alcune delle tue personalizzazioni.

Ma anche così non potrai tornare indietro senza perdere i post pubblicati dall’ultimo backup.

Dovresti aggiornare ad ogni versione beta o passare al ramo stabile alla prossima versione stabile.

Solo un aggiornamento in merito. Stavamo archiviando le immagini caricate su S3 e avevamo scelto di non scaricare le immagini remote per evitare link interrotti. Non sono sicuro che questo sia rilevante, ma il punto è che le immagini avrebbero dovuto essere archiviate su S3 e referenziate con URL S3 in Discourse.

Dopo l’aggiornamento, molte immagini non venivano visualizzate: loghi delle categorie e caricamenti degli utenti nei post. Controllando su S3, i nomi dei file referenziati non esistevano.

Per fortuna, avevamo attivato la versione su S3 e ho potuto vedere nella console di S3 che MOLTE immagini referenziate erano state cancellate durante/dopo l’aggiornamento.

Ho adattato uno script Python trovato (https://stackoverflow.com/a/54613767/2829685) per iterare su tutte le versioni degli oggetti nel nostro bucket S3 e rimuovere i “delete marker” dalla versione corrente di qualsiasi file con un timestamp last_modified uguale o successivo alla data dell’aggiornamento.

Ci è voluto quasi un giorno per eseguire lo script e ha ripristinato circa 45.000 immagini. Sembra che Discourse crei molte miniature per ogni immagine.

Ora i loghi delle categorie e le immagini caricate dagli utenti nei post sono di nuovo visibili. Ma non ho idea di come tutte queste immagini possano essere state cancellate su S3 come parte del processo di aggiornamento.

Sembra che questo possa essere un bug molto pericoloso nel processo di aggiornamento di Discourse? Anche se forse è già stato corretto, dato che stavo aggiornando da una versione così vecchia.