Problemas com Discourse 3.5.0.beta2-dev - SMTP e trabalhos em segundo plano

O relatório a seguir foi preparado para mim pelo ChatGPT, com base na minha experiência real de instalação do Discourse (como não sou muito entendido em tecnologia, tenho contado com a IA para obter ajuda em tarefas que considero difíceis). Não preciso de ajuda no momento, mas espero que o relatório possa ser um feedback útil sobre a versão 3.5.0.beta2-dev.

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

Prezados membros da equipe do Discourse,

Gostaria de compartilhar alguns detalhes de solução de problemas sobre questões de e-mail que enfrentei ao executar o Discourse 3.5.0.beta2-dev. Não preciso de assistência direta, pois decidi reverter para a versão 3.4.0.beta4-dev, mas espero que este relatório seja útil para identificar possíveis problemas com a versão de desenvolvimento mais recente.


1. Resumo do Problema

Realizei uma instalação limpa do Discourse em uma nova instância Vultr, usando o serviço SMTP da 20i (smtp.stackmail.com). No entanto, os e-mails nunca foram entregues, apesar de:

  • Um teste de conectividade SMTP bem-sucedido (openssl s_client -connect smtp.stackmail.com:587 -starttls smtp).
  • Nenhum erro aparecendo nos logs de e-mail da 20i (sugerindo que o Discourse não estava realmente enviando e-mails).
  • O Sidekiq falhando ao processar trabalhos de e-mail.

Isso foi inesperado porque, algumas semanas atrás, instalei com sucesso o Discourse 3.4.0.beta4-dev em uma instância idêntica sem problemas de e-mail.

Após uma depuração completa, descobri que minha instalação atual havia instalado inesperadamente o Discourse 3.5.0.beta2-dev, o que provavelmente contribuiu para os problemas.


2. Principais Problemas Identificados

A. E-mails Não Foram Entregues

  • As configurações de SMTP estavam corretas, verificadas por meio de testes manuais (testes swaks e openssl foram bem-sucedidos).
  • Os e-mails foram enfileirados no Sidekiq, mas nunca recebidos.
  • Os logs de e-mail da 20i mostraram nenhuma rejeição ou tentativa de entrega (sugerindo que as mensagens nunca saíram do Discourse).
  • Nenhum erro relacionado a e-mail apareceu no production.log (grep "smtp" não retornou nada).

B. Problemas com Sidekiq e Redis

  • Inicialmente, o Sidekiq não estava em execução (Sidekiq::Workers.new.size retornou 0).
  • Reiniciar o Sidekiq manualmente (sv restart sidekiq) falhou porque o Sidekiq estava faltando como um serviço.
  • O Redis estava em execução (redis-cli ping retornou PONG), mas os logs do Discourse ainda mostravam erros de conexão do Redis (Errno::ECONNREFUSED).
  • Os logs do Sidekiq indicavam falhas de trabalho devido a problemas de conexão do Redis, mesmo que o Redis estivesse confirmado como ativo.
  • Iniciar o Sidekiq manualmente (bundle exec sidekiq) permitiu que os trabalhos fossem processados, mas os e-mails ainda não eram enviados.

C. Incompatibilidade de Versão Entre Instalações

  • Minha instalação anterior (que funcionou) foi na versão 3.4.0.beta4-dev.
  • Minha instalação atual instalou inesperadamente a versão 3.5.0.beta2-dev, apesar de usar o mesmo método de configuração.
  • Como o e-mail funcionou perfeitamente na versão 3.4.0.beta4-dev, suspeito de uma regressão ou alteração incompatível na versão 3.5.

3. Ações Tomadas (Todas Falharam)

Tentamos sistematicamente as seguintes soluções:

:white_check_mark: Conectividade SMTP confirmada com:

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

:white_check_mark: Verificado se os e-mails foram enfileirados:

Jobs.enqueue(:user_email, type: :test_message, to_address: 'masden@kumagaku.ac.jp')  # Retornou um ID de trabalho
Sidekiq::Queue.new("default").size  # Retornou 0 (indicando que o trabalho foi processado)

:white_check_mark: Verificado os logs do Discourse:

grep "smtp" /shared/log/rails/production.log  # Nenhum erro relacionado a SMTP
  • Falhas de conexão do Redis (Errno::ECONNREFUSED em production.log).

:white_check_mark: Reiniciados e acionados manualmente os serviços:

sv restart sidekiq  # Falhou, serviço ausente
redis-cli ping  # Confirmado em execução
bundle exec sidekiq  # Trabalhos processados, mas nenhum e-mail enviado

:white_check_mark: Verificado se os e-mails estavam sendo bloqueados pela 20i:

  • Nenhuma rejeição ou tentativa de entrega nos logs de e-mail da 20i.
  • Se os e-mails estivessem sendo rejeitados, deveria haver uma entrada de log, mas nada apareceu.

4. Conclusão: Revertendo para a versão 3.4.0.beta4-dev

Após extensa solução de problemas, decidi limpar a instalação e reinstalar a versão 3.4.0.beta4-dev, pois minha instalação anterior funcionou perfeitamente nessa versão.

Embora eu não precise de ajuda direta, queria relatar esses problemas porque:

  • O processamento de e-mail pode ter mudado na versão 3.5, impedindo a entrega via SMTP.
  • O serviço ausente do Sidekiq e os erros do Redis sugerem problemas de processamento de trabalhos em segundo plano na versão 3.5.
  • Como consegui instalar a versão 3.4.0.beta4-dev sem problemas, isso sugere uma possível regressão na versão 3.5.

Espero que este relatório seja útil para identificar possíveis problemas na versão Discourse 3.5.0.beta2-dev.

Atenciosamente,
Kirk

2 curtidas

{“translation”: "[quote=“Kirk Masden, post:1, topic:354732, username:Kirk”]
temporariamente instalou Discourse 3.5.0.beta2-dev
[/quote]

Isso era esperado, porque essa é atualmente a versão.

Muitos estão usando a mesma última versão, e o sidekiq funciona, e portanto os e-mails também.

Então você pode precisar de ajuda, porque então você não consegue reconstruir também.

E é muito melhor saber que pode assumir esse assunto, mas eu diria que temos tópicos aqui sobre o sidekiq parado. A busca pode ajudar."}

4 curtidas

Estou continuando a ter dificuldades em instalar o Discourse. Aqui está outro relatório compilado pelo ChatGPT. Acredito que ele representa com precisão a minha experiência.

Relatório: Problemas com a Instalação do Discourse e Serviço Sidekiq Ausente

Contexto:
Tentamos uma instalação limpa do Discourse em uma instância Vultr, com a intenção de configurar uma implantação estável e funcional. No entanto, encontramos problemas significativos, particularmente com serviços ausentes como o Sidekiq, que impediram a entrega de e-mails e o processamento de tarefas em segundo plano.


Resumo dos Problemas Encontrados

  1. Versão Inesperada Instalada
  • Em vez da versão esperada v3.4.0.beta4-dev, a instalação padrão foi para tests-passed, puxando uma versão potencialmente instável.
  • O arquivo VERSION estava ausente, tornando incerto qual versão exata foi instalada.
  1. Serviço Sidekiq Ausente
  • O diretório /etc/service/sidekiq estava ausente dentro do contêiner do Discourse.
  • Isso impediu a execução de todas as tarefas em segundo plano (e-mails, notificações, tarefas agendadas).
  1. Problemas no Repositório Git do Discourse
  • Executar git rev-parse --abbrev-ref HEAD dentro do contêiner retornou tests-passed, confirmando que uma versão não intencional foi instalada.
  • O Git lançou um erro de “propriedade duvidosa detectada”, exigindo intervenção manual (git config --global --add safe.directory /var/www/discourse).
  1. Potenciais Problemas de Dependência
  • Mesmo que uma versão mais antiga do Discourse seja verificada, há a preocupação de que dependências mais recentes (Ruby, Redis, Sidekiq) possam ser puxadas durante a instalação, potencialmente causando problemas de compatibilidade.
  • Se as dependências do Discourse não forem fixadas corretamente, a instalação pode se comportar de forma inconsistente entre os ambientes.
  1. Limitação de Taxa do Certificado SSL
  • Uma tentativa de obter um novo certificado SSL Let’s Encrypt falhou devido à excedência do limite de taxa.
  • Isso fez com que o Nginx falhasse ao iniciar, pois não conseguia carregar o arquivo de certificado esperado.

Próximos Passos Planejados

  1. Realizar uma Limpeza Completa e Reinstalação
  • Remover /var/discourse completamente e clonar o repositório novamente.
  • Verificar manualmente uma versão estável (por exemplo, v3.4.1) antes de executar a instalação.
  • Usar ./discourse-setup em vez de confiar nos padrões para garantir parâmetros corretos.
  1. Garantir a Instalação do Sidekiq
  • Antes de reconstruir, verificar se o serviço sidekiq está corretamente incluído no processo de compilação.
  • Se o Sidekiq estiver ausente após a reconstrução, verificar manualmente sua instalação via bundle list | grep sidekiq.
  1. Fixar Dependências para Versões Estáveis
  • Evitar problemas relacionados a dependências usando explicitamente uma imagem Docker do Discourse conhecida por ser estável (por exemplo, discourse/discourse:2.0.20240101).
  • Bloquear as versões das gems dentro do contêiner (bundle install --deployment --without test development).
  1. Reintentar a Emissão do Certificado SSL
  • Aguardar a redefinição do limite de taxa do Let’s Encrypt e tentar gerar o certificado SSL novamente.
  • Se os problemas persistirem, considere usar um certificado autoassinado temporariamente para solução de problemas.

Solicitação de Feedback

Diante desses desafios, gostaríamos de receber a opinião da equipe e da comunidade do Discourse sobre:

  • Sidekiq ausente em /etc/service/ em uma instalação limpa – Alguém mais encontrou esse problema?
  • Melhores práticas para garantir a estabilidade das dependências – Existe uma maneira recomendada de fixar as versões das dependências para instalações do Discourse?
  • Potenciais problemas com tests-passed sendo instalado por padrão – Poderia haver um problema na forma como as versões estão sendo recuperadas?

Qualquer insight seria útil antes de prosseguirmos com a reinstalação. Agradecemos antecipadamente!

Na verdade, não é instável. É o padrão para todos os fóruns agora. O Discourse não colocará um branch instável como padrão.

Hmm… o que você vê quando acessa /sidekiq no seu fórum?

Qual branch você pretende instalar? Talvez este guia ajude?

3 curtidas

Acho que, seja qual for a necessidade, é importante ter alguns detalhes sobre a configuração do seu VPS. CPU, RAM, espaço em disco e o sistema operacional, ou seja, Ubuntu LTS 24.

Quando você diz que testou o email, você usou o teste do Discourse e recebeu um email?

No meu arquivo app.yml, na sua instalação do XP, você deve ter 3 linhas de configuração principal para o SMTP:

  • Nome de usuário:
  • Senha
  • PORTA

Agora, pelo que você disse, isso estava funcionando em uma instalação anterior do Discourse?

Como mencionado, a versão ‘Tests-Passed’ é a recomendada para instalação. Pelo que entendi, a versão ‘Stable’ é mais indicada para pessoas com plugins e temas personalizados - o que pode exigir atualizações mais frequentes para evitar quebras.

Você pode compartilhar um log de reconstrução com erros? Lembre-se de rolar para cima ao capturar o log, pois o erro final pode ser apenas um resultado de falha. Sempre pode redigir dados sensíveis, como detalhes do usuário e senha do SMTP.

Existem também alguns tópicos sobre problemas com SMTP de email que podem ter soluções.

1 curtida

Desculpe pela minha resposta tardia. Como escrevi em resposta a outro comentário, não consigo responder com detalhes sobre minha última tentativa fracassada porque apaguei muito do software para tentar novamente. Relatarei assim que puder.

Obrigado pelos seus comentários detalhados. Peço desculpas pela minha resposta lenta.

Estou tentando outra instalação com versões anteriores de vários softwares. Isso torna difícil para mim responder às suas perguntas sobre minha tentativa anterior frustrada. Assim que eu puder concluir minha próxima instalação, entrarei em contato.

1 curtida

Algo a considerar como um teste extra, se necessário. Crie uma conta gratuita em https://www.brevo.com; eles têm um nível gratuito de 300 e-mails por dia. Eu uso este no momento.

Se você tiver problemas para enviar e-mails, isso pode ajudar a testar se o problema está relacionado ao seu provedor de e-mail.

2 curtidas

TL;DR não confie no ChatGPT, todos esses são alarmes falsos.

É bom pedir ajuda, é uma má ideia confiar nela, como mostrarei abaixo.
Obrigado por garantir que não ficarei desempregado pelo ChatGPT tão cedo. :wink:

beta4-dev é tão potencialmente instável quanto tests-passed

Não existe tal arquivo.

Não deveria existir tal diretório.

Duvido disso.

Isso é esperado.

Este é o comportamento normal se você usar git em um diretório sem ser o proprietário.

Isso não faz sentido. E tests-passed é mais novo do que o que você ‘esperava’, não mais velho.

Isso ocorreu porque você tentou muitas vezes.

6 curtidas

Quero enfatizar isso.
Na maioria das vezes, se você sugerir ao ChatGPT que há problemas a serem encontrados, ele encontrará problemas, mesmo que não existam. Ele também é rápido em nos fazer entrar em um loop infinito de “correções” que ele sugere continuamente.

5 curtidas

Muito obrigado!

Em relação à IA, está claro que o ChatGPT não tem sido um guia confiável. Por outro lado, tenho achado a depuração difícil, então a tentação de confiar nele é grande para alguém como eu.

Acabei de concluir uma instalação bem-sucedida. O ChatGPT (versão paga) não conseguiu me levar ao objetivo, mas o Claude da Anthropic (também versão paga; eu uso ambos) finalmente o fez. Ele me ajudou a corrigir problemas que o ChatGPT havia introduzido.

Tentarei escrever de volta com mais detalhes sobre minha experiência mais tarde. Obrigado por todos os seus comentários úteis!

2 curtidas

Concordo. Pelo meu uso, o Claude é muito mais confortável e geralmente dá uma resposta correta imediatamente.

Fico feliz que você tenha conseguido!

5 curtidas

Obrigado! É notável como eles podem ser diferentes para certas tarefas – quase como pessoas com personalidades diferentes. Claude parece ser mais “pensativo”, enquanto o ChatGPT tende a tirar conclusões precipitadas e se precipitar um pouco mais. Já estive em situações em que o ChatGPT foi melhor, no entanto. Espero que AMBOS melhorem. A IA me ajudou a escrever muitos scripts que realmente funcionam, mesmo que eu não seja um escritor de scripts. Ela tem o potencial de ser uma ótima ferramenta para pessoas com dificuldades tecnológicas como eu, mas definitivamente precisa melhorar. É realmente frustrante ser levado a um beco sem saída. :frowning:

4 curtidas

Aqui está um breve relatório sobre minha instalação bem-sucedida com uma pergunta sobre como prosseguir.

Ainda não tenho certeza por que tive problemas com o SMTP nas tentativas recentes. Na verdade, minha primeira tentativa algumas semanas atrás foi bem-sucedida, mas eu estava usando um servidor Vultr que decidi ser maior do que eu precisava e a única maneira de fazer o downgrade era obter um novo servidor menor e depois apagar o maior.

De acordo com um e-mail que recebi, a versão do Discourse que instalei algumas semanas atrás era 3.4.0.beta4-dev. O e-mail recomendava que eu atualizasse para 3.4.0.beta4.

Como tive problemas com o SMTP na versão 3.4.0.beta4-dev, pensei em tentar instalar uma versão estável anterior do Discourse. Em discussão com o ChatGPT (pouco confiável, eu sei), decidimos tentar instalar a versão 3.4.1. Pensei que essa versão seria estável. Veja o que acabamos instalando:

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

Acho que, independentemente da nossa intenção (ou seja, minha intenção auxiliada por IA) de instalar versões estáveis anteriores, acabamos instalando o Discourse 3.5.0.beta2-dev, afinal.

Foi difícil (muitos recomeços e uso de comandos dados por IA para consertar coisas que não estavam funcionando), mas meu Discourse finalmente está funcionando.

Aqui estão algumas perguntas:

  1. Salvo engano, os usuários atuais ainda não estão sendo incentivados a atualizar para a versão 3.5.0, presumivelmente porque ainda não foi totalmente testada. Se for o caso, por que novatos como eu são mais ou menos forçados a instalá-la?

  2. Acho que minha versão do Docker está desatualizada (depreciada). Devo apenas usar o terminal para atualizar para a versão mais recente? O Discourse está funcionando agora e, como tive tantos problemas para chegar a este ponto, não quero fazer nada que possa estragar tudo.

  3. Acho que as outras versões de software são bem novas. Se você vir algo que possa ser problemático ou que precise de atualização, por favor, me avise.

  4. Existe uma página ou seção desta comunidade que aborde questões técnicas de “cuidados e manutenção”? Quero manter minha comunidade saudável e funcionando e estar preparado com backups, etc. para quaisquer problemas que possam surgir.

2 curtidas

Acabei de concluir uma restauração de backup da comunidade Discourse anterior. Parece que correu bem e pode ter atualizado o Docker (problema mencionado acima) também:

Fico a pensar nesta mensagem, que recebo imediatamente após a restauração: “O e-mail de saída foi desativado para utilizadores não administradores.”

Consultando outro tópico aqui:

Encontrei onde alterar a configuração.

Portanto, agora presumo que estou pronto para prosseguir, mas se possível, agradeceria confirmação. “Não” é a configuração correta, certo? Acho que os utilizadores normais têm de receber notificações por e-mail, por isso estou um pouco intrigado com a configuração de desativação. Pergunto-me que tipo de situações exigiriam que o e-mail fosse desativado.

Tive um problema semelhante com e-mails não sendo enviados em uma instalação nova do Discourse, que detalhei aqui:

O problema foi que o endereço de e-mail notifications em app.yml não havia sido autenticado com meu provedor SMTP (SendGrid).

Nada apareceu nos logs principais do Discourse, nem nos logs do SendGrid. O erro foi exibido ao executar discourse-doctor:

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

Se você ainda não o fez, sugiro executar discourse-doctor, pois ele pode fornecer mais informações sobre por que os e-mails não estão sendo enviados.

2 curtidas

Muito obrigado!!

Excelente conselho. Eu não estava ciente do Discourse-doctor, mas acho que ele pode ter me poupado muito tempo.

Vou me lembrar dele caso eu encontre outros problemas. :slight_smile:

1 curtida