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.
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.
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
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?
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).