Ripristina versione specifica del backup di discourse

Ho avuto un piccolo forum di discussione per alcuni anni e funziona bene. Ho impostato backup automatici, ma non ho aggiornato la versione di discourse per molto tempo.

Il server è morto, ma ho un backup. Il backup risale alla vecchia versione di discourse, circa 2 anni fa. Quando provo a installare la versione più recente e a ripristinare dal backup, non funziona. Quando provo a installare la vecchia versione, non è possibile: lo script di installazione scarica automaticamente nuovi commit e l’ultima immagine docker, ho persino trovato queste righe nello script di avvio e le ho eliminate, ma del codice interno nell’immagine docker controlla e aggiorna anche git all’ultima versione.

Cosa dovrei fare? Come posso eseguire la vecchia versione di discourse o ripristinare il vecchio backup su una nuova versione?

Se vuoi aiuto, dovrai essere più specifico. Dovrebbe funzionare. C’è una buona probabilità che il problema non funzioni nemmeno se fossi in grado di installare la stessa versione di Discourse che avevi allora.

Qual è stato l’errore che hai ricevuto quando hai cercato di ripristinare?

Non ci sono errori critici nell’output di ./launcher logs app, ma il forum non funziona. Quasi tutti i pulsanti non funzionano, non ci sono argomenti e l’HTML sembra strano (la pagina iniziale buggata si ripete e può essere scansionata all’infinito verso il basso).

Non sono un tecnico professionista e spero che tu possa dirmi quali log posso aggiungere al mio report e dove trovarli.

Qualcuno sa dove posso trovare log affidabili?

Ci sono errori nella rotta /logs del tuo forum?

Il problema è che non riesco ad accedere a /logs - “questa pagina non esiste o è privata”. E non riesco ad accedere per controllarla.

Prova a usare il login admin su https://forum.example.com/u/admin-login[1].


  1. Si impara qualcosa di nuovo ogni giorno! ↩︎

Grazie per il link, ma non funzionerà. Invia un’email, ma non ho un server smtp e sto usando questo plugin: Disable Email Verification for Discourse Plugin

Forse, alcuni comandi della console sul server sono possibili per verificare cosa è successo?

Per quanto ne so, quel plugin è rotto. Potresti non volerlo usare.

1 Mi Piace

Non c’era una soluzione diversa per consentire agli utenti di creare account senza conferma via email, quando ho creato un server.

Forse ora è rotto, ma sto almeno cercando di ripristinare la vecchia versione del forum.

1 Mi Piace

Attualmente non riesco ad accedere ad alcun dato dal forum, anche se ho un backup. Vengono visualizzati solo il logo e i tag del forum e tutti i pulsanti sono inutilizzabili.

1 Mi Piace

Ahi, questo complica le cose. Potresti provare quello che viene menzionato qui per ottenere alcuni log?

Hai provato la modalità provvisoria?

E commenta il plugin non funzionante e magari anche gli altri plugin che hai. Puoi riaggiungerli una volta che qualcosa funziona.

I registri di produzione di Rails non contengono errori critici, product_errors.log è vuoto.

Log degli errori di Unicorn OID sconosciuto 17246: impossibile riconoscere il tipo di 'embeddings'. Verrà trattato come String. Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 2 EOFError subscribe fallito, riconnessione tra 1 secondo. Stack di chiamate /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client/ruby_connection.rb:103:in `rescue in read' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client/ruby_connection.rb:94:in `read' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client.rb:535:in `next_event' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/subscribe.rb:66:in `subscription' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/subscribe.rb:17:in `subscribe' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:175:in `_subscription' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/commands/pubsub.rb:17:in `subscribe' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus/backends/redis.rb:293:in `global_subscribe' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus.rb:769:in `global_subscribe_thread' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus.rb:740:in `block in new_subscriber_thread' Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 3 Errore nel recupero del job: Connessione rifiutata - connect(2) per 127.0.0.1:6379 Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 3 Errore nel recupero del job: Connessione rifiutata - connect(2) per 127.0.0.1:6379 Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 3 Errore nel recupero del job: Connessione rifiutata - connect(2) per 127.0.0.1:6379 Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 3 Errore nel recupero del job: Connessione rifiutata - connect(2) per 127.0.0.1:6379 Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 3 Errore nel recupero del job: Connessione rifiutata - connect(2) per 127.0.0.1:6379 Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 3 Eccezione del job: Connessione rifiutata - connect(2) per 127.0.0.1:6379 sidekiq-exception Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 3 Eccezione del job: Connessione rifiutata - connect(2) per 127.0.0.1:6379 sidekiq-exception Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 3 Eccezione del job: Connessione rifiutata - connect(2) per 127.0.0.1:6379 sidekiq-exception Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 3 Eccezione del job: Connessione rifiutata - connect(2) per 127.0.0.1:6379 sidekiq-exception Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 3 Eccezione del job: Connessione rifiutata - connect(2) per 127.0.0.1:6379 sidekiq-exception Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 3 heartbeat: Connessione rifiutata - connect(2) per 127.0.0.1:6379 Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 3 Eccezione del job: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) sidekiq-exception Impossibile segnalare errore: Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) 2 Connessione rifiutata - connect(2) per 127.0.0.1:6379 (redis://localhost:6379) subscribe fallito, riconnessione tra 1 secondo. Stack di chiamate /usr/local/lib/ruby/3.3.0/socket.rb:1219:in `__connect_nonblock' /usr/local/lib/ruby/3.3.0/socket.rb:1219:in `connect_nonblock' /usr/local/lib/ruby/3.3.0/socket.rb:60:in `connect_internal' /usr/local/lib/ruby/3.3.0/socket.rb:141:in `connect' /usr/local/lib/ruby/3.3.0/socket.rb:647:in `block in tcp' /usr/local/lib/ruby/3.3.0/socket.rb:231:in `each' /usr/local/lib/ruby/3.3.0/socket.rb:231:in `foreach' /usr/local/lib/ruby/3.3.0/socket.rb:637:in `tcp' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client/ruby_connection.rb:120:in `connect' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client/connection_mixin.rb:11:in `reconnect' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client.rb:769:in `block in connect' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client/middlewares.rb:12:in `connect' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client.rb:768:in `connect' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client.rb:759:in `raw_connection' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client.rb:719:in `ensure_connected' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client.rb:314:in `call_v' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/client.rb:90:in `call_v' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:90:in `block in profile_method' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:152:in `block in send_command' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:151:in `synchronize' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:151:in `send_command' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/commands/strings.rb:191:in `get' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus/backends/redis.rb:366:in `process_global_backlog' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus/backends/redis.rb:279:in `block in global_subscribe' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus/backends/redis.rb:291:in `global_subscribe' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus.rb:769:in `global_subscribe_thread' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus.rb:740:in `block in new_subscriber_thread' OID sconosciuto 17246: impossibile riconoscere il tipo di 'embeddings'. Verrà trattato come String.

I log di Sidekiq sono vuoti.

Nessun problema nei log di Nginx.

Vedo un problema di connessione redis nei log di Unicorn, ma i log di Redis stessi non hanno errori:

9706:C 28 Aug 2025 15:11:25.025 * Fork CoW per RDB: corrente 1 MB, picco 1 MB, medio 0 MB 881:M 28 Aug 2025 15:11:25.106 * Salvataggio in background terminato con successo 881:M 28 Aug 2025 15:16:26.096 * 100 modifiche in 300 secondi. Salvataggio in corso... 881:M 28 Aug 2025 15:16:26.097 * Salvataggio in background avviato dal processo 10037 10037:C 28 Aug 2025 15:16:26.109 * DB salvato su disco 10037:C 28 Aug 2025 15:16:26.109 * Fork CoW per RDB: corrente 1 MB, picco 1 MB, medio 0 MB 881:M 28 Aug 2025 15:16:26.198 * Salvataggio in background terminato con successo 881:M 28 Aug 2025 15:21:27.004 * 100 modifiche in 300 secondi. Salvataggio in corso... 881:M 28 Aug 2025 15:21:27.004 * Salvataggio in background avviato dal processo 10365 10365:C 28 Aug 2025 15:21:27.019 * DB salvato su disco 10365:C 28 Aug 2025 15:21:27.019 * Fork CoW per RDB: corrente 1 MB, picco 1 MB, medio 0 MB 881:M 28 Aug 2025 15:21:27.105 * Salvataggio in background terminato con successo 881:M 28 Aug 2025 15:26:28.030 * 100 modifiche in 300 secondi. Salvataggio in corso... 881:M 28 Aug 2025 15:26:28.031 * Salvataggio in background avviato dal processo 10703 10703:C 28 Aug 2025 15:26:28.050 * DB salvato su disco 10703:C 28 Aug 2025 15:26:28.051 * Fork CoW per RDB: corrente 1 MB, picco 1 MB, medio 0 MB 881:M 28 Aug 2025 15:26:28.132 * Salvataggio in background terminato con successo 881:M 28 Aug 2025 15:31:29.094 * 100 modifiche in 300 secondi. Salvataggio in corso... 881:M 28 Aug 2025 15:31:29.095 * Salvataggio in background avviato dal processo 11028 11028:C 28 Aug 2025 15:31:29.109 * DB salvato su disco 11028:C 28 Aug 2025 15:31:29.110 * Fork CoW per RDB: corrente 1 MB, picco 1 MB, medio 0 MB 881:M 28 Aug 2025 15:31:29.196 * Salvataggio in background terminato con successo

I log di PostgreSQL non presentano errori.

Come posso abilitarlo?

Mi dispiace. Ho digitato “modalità provvisoria” invece di “modalità sicura” e non ho notato che non era stato collegato automaticamente.

Grazie, ha aiutato e il forum funziona (non perfettamente, ma posso accedere agli argomenti con il contesto).

Tuttavia, il forum senza modalità provvisoria è inutilizzabile e non ricordo esattamente quali plugin ho installato. L’elenco dei plugin dovrebbe essere in app.yml, ma il server è morto e ho solo un backup, che non contiene app.yml, per quanto ne so. Cosa dovrei fare per ripristinare il forum e rimuovere i plugin non funzionanti?

Il ripristino senza utilizzare un file app.yml esistente non dovrebbe installare alcun plugin ad eccezione di quelli inclusi (che sono tutti ufficiali).

Tuttavia, temi e componenti a tema sono inclusi nel backup, quindi prova a disattivarli.

Prova a utilizzare la modalità sicura e disabilita solo temi e componenti per assicurarti che i tuoi problemi siano causati da uno di essi.

2 Mi Piace

Grazie, funziona davvero solo senza temi, ma dove posso trovare i temi? Nel backup vedo solo due elementi: dump.sql.gz e la cartella uploads, che contiene solo media e file dell’utente.

Puoi semplicemente accedere ai temi dall’interfaccia di amministrazione. Puoi prima disabilitarli tutti e poi attivarli uno alla volta (o come preferisci).

1 Mi Piace