Restaurar versão específica de backup do Discourse

Tive um pequeno fórum de discussão por alguns anos e funciona bem. Configurei backups automáticos, mas não atualizei a versão do Discourse por muito tempo.

O servidor morreu, mas tenho um backup. O backup é de uma versão antiga do Discourse, de cerca de 2 anos atrás. Quando tento instalar a versão mais recente e restaurar o backup, não funciona. Quando tento instalar a versão antiga, não é possível: o script de configuração baixa automaticamente novos commits e a imagem Docker mais recente, cheguei até a encontrar essas linhas no script do launcher e as deletei, mas algum código interno na imagem Docker também verifica e atualiza o git para a versão mais recente.

O que devo fazer? Como posso executar uma versão antiga do Discourse ou restaurar um backup antigo em uma nova versão?

Se você quiser ajuda, precisará ser mais específico. Deve funcionar. Há uma boa chance de que o problema também não funcione se você conseguiu instalar a mesma versão do Discourse que tinha na época.

Qual foi o erro que você obteve ao tentar restaurar?

Não há erros críticos na saída de ./launcher logs app, mas o fórum não funciona. Quase todos os botões não funcionam, não há tópicos e o HTML parece estranho (a página inicial com falha se repete e pode ser rolada até o final sem limite).

Eu não sou um cara de tecnologia profissional e espero que você possa me dizer quais logs posso adicionar ao meu relatório e onde posso encontrá-los.

Alguém sabe onde posso encontrar logs confiáveis?

Existem erros na rota /logs do seu fórum?

O problema é que não consigo acessar /logs - “esta página não existe ou é privada”. E não consigo fazer login para verificar.

Tente usar o login de administrador em https://forum.example.com/u/admin-login[1].


  1. Você aprende algo novo todos os dias! ↩︎

Obrigado pelo link, mas ele não funcionará. Ele envia e-mail, mas não tenho servidor smtp e estou usando este plugin: Disable Email Verification for Discourse Plugin

Talvez alguns comandos no console do servidor sejam possíveis para verificar o que aconteceu?

Pelo que sei, esse plugin está quebrado. Talvez você não queira usá-lo.

1 curtida

Não havia outra solução para permitir que os usuários criassem contas sem confirmação por e-mail quando criei um servidor.

Talvez esteja quebrado agora, mas estou tentando pelo menos restaurar a versão antiga do fórum.

1 curtida

Atualmente não consigo acessar nenhum dado do fórum, mesmo tendo um backup. Apenas o logotipo e as tags do fórum são exibidos, e todos os botões estão inutilizáveis.

1 curtida

Ai, isso complica as coisas. Você poderia tentar o que é mencionado aqui para obter alguns logs?

Você tentou o modo de segurança?

E comente o plugin com defeito e talvez outros plugins que você tenha. Você pode adicioná-los de volta assim que conseguir fazer algo funcionar.

Os logs de produção do Rails não contêm erros críticos, product_errors.log está vazio.

Logs de erro do Unicorn OID desconhecido 17246: falha ao reconhecer o tipo de 'embeddings'. Será tratado como String. Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 2 Falha ao assinar EOFError, reconectando em 1 segundo. Pilha de chamadas /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' Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 3 Erro ao buscar trabalho: Conexão recusada - connect(2) para 127.0.0.1:6379 Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 3 Erro ao buscar trabalho: Conexão recusada - connect(2) para 127.0.0.1:6379 Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 3 Erro ao buscar trabalho: Conexão recusada - connect(2) para 127.0.0.1:6379 Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 3 Erro ao buscar trabalho: Conexão recusada - connect(2) para 127.0.0.1:6379 Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 3 Erro ao buscar trabalho: Conexão recusada - connect(2) para 127.0.0.1:6379 Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 3 Exceção de trabalho: Conexão recusada - connect(2) para 127.0.0.1:6379 sidekiq-exception Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 3 Exceção de trabalho: Conexão recusada - connect(2) para 127.0.0.1:6379 sidekiq-exception Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 3 Exceção de trabalho: Conexão recusada - connect(2) para 127.0.0.1:6379 sidekiq-exception Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 3 Exceção de trabalho: Conexão recusada - connect(2) para 127.0.0.1:6379 sidekiq-exception Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 3 Exceção de trabalho: Conexão recusada - connect(2) para 127.0.0.1:6379 sidekiq-exception Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 3 heartbeat: Conexão recusada - connect(2) para 127.0.0.1:6379 Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 3 Exceção de trabalho: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) sidekiq-exception Falha ao relatar erro: Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) 2 Conexão recusada - connect(2) para 127.0.0.1:6379 (redis://localhost:6379) Falha ao assinar EOFError, reconectando em 1 segundo. Pilha de chamadas /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 desconhecido 17246: falha ao reconhecer o tipo de 'embeddings'. Será tratado como String.

Sidekiq logs estão vazios.

Sem problemas nos logs do Nginx.

Vejo problema de conexão do redis nos logs do Unicorn, mas os logs do Redis em si não têm erros:

9706:C 28 Aug 2025 15:11:25.025 * Fork CoW para RDB: atual 1 MB, pico 1 MB, média 0 MB 881:M 28 Aug 2025 15:11:25.106 * Salvamento em segundo plano concluído com sucesso 881:M 28 Aug 2025 15:16:26.096 * 100 alterações em 300 segundos. Salvando... 881:M 28 Aug 2025 15:16:26.097 * Salvamento em segundo plano iniciado pelo pid 10037 10037:C 28 Aug 2025 15:16:26.109 * DB salvo em disco 10037:C 28 Aug 2025 15:16:26.109 * Fork CoW para RDB: atual 1 MB, pico 1 MB, média 0 MB 881:M 28 Aug 2025 15:16:26.198 * Salvamento em segundo plano concluído com sucesso 881:M 28 Aug 2025 15:21:27.004 * 100 alterações em 300 segundos. Salvando... 881:M 28 Aug 2025 15:21:27.004 * Salvamento em segundo plano iniciado pelo pid 10365 10365:C 28 Aug 2025 15:21:27.019 * DB salvo em disco 10365:C 28 Aug 2025 15:21:27.019 * Fork CoW para RDB: atual 1 MB, pico 1 MB, média 0 MB 881:M 28 Aug 2025 15:21:27.105 * Salvamento em segundo plano concluído com sucesso 881:M 28 Aug 2025 15:26:28.030 * 100 alterações em 300 segundos. Salvando... 881:M 28 Aug 2025 15:26:28.031 * Salvamento em segundo plano iniciado pelo pid 10703 10703:C 28 Aug 2025 15:26:28.050 * DB salvo em disco 10703:C 28 Aug 2025 15:26:28.051 * Fork CoW para RDB: atual 1 MB, pico 1 MB, média 0 MB 881:M 28 Aug 2025 15:26:28.132 * Salvamento em segundo plano concluído com sucesso 881:M 28 Aug 2025 15:31:29.094 * 100 alterações em 300 segundos. Salvando... 881:M 28 Aug 2025 15:31:29.095 * Salvamento em segundo plano iniciado pelo pid 11028 11028:C 28 Aug 2025 15:31:29.109 * DB salvo em disco 11028:C 28 Aug 2025 15:31:29.110 * Fork CoW para RDB: atual 1 MB, pico 1 MB, média 0 MB 881:M 28 Aug 2025 15:31:29.196 * Salvamento em segundo plano concluído com sucesso

Os logs do PostgreSQL não têm erros.

Como posso ativá-lo?

Desculpe. Digitei “safe-mode” em vez de “safe mode” e não percebi que não foi auto-linkado.

Obrigado, ajudou e o fórum está funcionando (não perfeitamente, mas consigo acessar tópicos com contexto).

No entanto, o fórum sem o modo de segurança é inutilizável, e eu não me lembro exatamente quais plugins instalei. A lista de plugins deveria estar em app.yml, mas o servidor morreu e eu só tenho um backup, que não contém app.yml, até onde sei. O que devo fazer para restaurar o fórum e remover plugins quebrados?

Restaurar sem usar um app.yml existente não deve instalar nenhum plugin, exceto os incluídos (que são todos oficiais).

No entanto, temas e componentes de tema estão incluídos no backup, então tente desativá-los.

Tente usar o modo de segurança e desative apenas temas e componentes para ter certeza de que seus problemas são causados por um deles.

2 curtidas

Obrigado, realmente funciona apenas sem temas, mas onde posso encontrar temas? No backup, vejo apenas dois itens: dump.sql.gz e a pasta uploads, que contém apenas mídia e arquivos do usuário.

Você pode simplesmente acessar os temas pela interface de administração. Você pode primeiro desativá-los todos e depois ativá-los um por um (ou o que for).

1 curtida