Persistência de Assinatura de Relay no Mastodon: Como Verificar Após a Atualização
🔍 WiseChecker

Persistência de Assinatura de Relay no Mastodon: Como Verificar Após a Atualização

Após atualizar seu servidor Mastodon, as assinaturas de relay podem parar de funcionar sem nenhum erro visível. A conexão do relay pode ser interrompida silenciosamente, fazendo com que sua instância perca conteúdo federado dos relays inscritos. Isso geralmente acontece porque o processo de atualização redefine conexões internas do banco de dados ou altera o protocolo de handshake do relay. Este artigo explica como verificar se suas assinaturas de relay sobreviveram à atualização e como restabelecê-las se não sobreviveram.

Principais Conclusões: Verificando Conexões de Relay do Mastodon Após uma Atualização do Servidor

  • Página Administração > Relays: Exibe o status atual de cada assinatura de relay como ativada ou desativada após uma atualização.
  • Filas do Sidekiq (scheduler, pull): Mostra se jobs relacionados a relay estão na fila ou falhando, indicando uma assinatura quebrada.
  • Comando no console Rails Relay.find_each(&:subscribe!): Reativa todas as assinaturas de relay em lote sem necessidade de reinserção manual.

ADVERTISEMENT

Por que as Assinaturas de Relay do Mastodon Quebram Durante uma Atualização

Os relays do Mastodon funcionam trocando solicitações de assinatura entre sua instância e um servidor relay. O servidor relay então envia postagens públicas de todas as instâncias inscritas para a sua. Quando você atualiza o Mastodon, várias coisas podem interromper essa conexão.

A migração de banco de dados executada durante a atualização pode redefinir o sinalizador enabled nos registros de relay. Isso acontece porque alguns scripts de atualização descartam e recriam tabelas ou alteram tipos de colunas. Se a migração não preservar o estado da assinatura existente, o relay aparece como ativado no banco de dados, mas o handshake real da assinatura é perdido.

Outra causa comum é que a atualização altera a forma como o Mastodon se comunica com serviços externos. Por exemplo, uma mudança no algoritmo de assinatura HTTP ou na versão do protocolo ActivityPub pode fazer com que o relay rejeite a solicitação de assinatura da sua instância. O servidor relay vê uma assinatura inválida e descarta a conexão silenciosamente.

Por fim, o processo Sidekiq que gerencia a renovação da assinatura do relay pode reiniciar durante a atualização. Se o job de renovação falhar ao ser executado após a reinicialização, a assinatura expira. O relay então para de enviar novo conteúdo para sua instância.

Passos para Verificar o Status da Assinatura de Relay Após uma Atualização

Siga estes passos em ordem para verificar se suas assinaturas de relay ainda estão ativas. Comece pela interface web e prossiga para a linha de comando se necessário.

  1. Abra a página de administração de Relays
    Faça login na sua instância Mastodon como administrador. Vá para Preferências > Administração > Relays. Esta página lista todos os servidores relay aos quais sua instância está inscrita. Verifique a coluna de status. Se um relay mostrar “Ativado”, mas a data do último contato for superior a 24 horas, a assinatura pode estar quebrada.
  2. Verifique o Sidekiq para falhas de jobs relacionados a relay
    Abra o painel do Sidekiq em https://sua-instancia/sidekiq. Olhe na aba Queues para as filas scheduler e pull. Se você vir um alto número de retentativas ou jobs mortos relacionados a RelayWorker ou ActivityPub::FetchRelayActorService, a atualização provavelmente quebrou a assinatura.
  3. Teste a conexão do relay manualmente
    No console Rails, execute Relay.find_each { |r| puts "#{r.id}: #{r.state}" }. Isso imprime o estado interno de cada relay. Um estado de "enabled" significa que a assinatura deve estar ativa. Um estado de "disabled" ou nil significa que a assinatura está quebrada.
  4. Reative todas as assinaturas de relay
    Se algum relay mostrar um estado quebrado, execute Relay.find_each(&:subscribe!) no console Rails. Isso envia uma nova solicitação de assinatura para cada relay. Aguarde 5 minutos e verifique a página de Relays novamente. O timestamp do último contato deve ser atualizado para a hora atual.
  5. Verifique o conteúdo recebido do relay
    Abra a timeline federada na sua instância. Procure por postagens de contas que pertencem a outras instâncias conhecidas por usar o mesmo relay. Se você vir novas postagens dessas instâncias dentro de 10 minutos, a assinatura do relay está funcionando corretamente.

ADVERTISEMENT

Se o Mastodon Ainda Tiver Problemas Após a Correção Principal

Relay mostra como ativado, mas nenhum conteúdo chega

Isso geralmente significa que o servidor relay bloqueou sua instância devido a uma incompatibilidade de assinatura. Verifique os logs do Mastodon com tail -f log/production.log | grep relay. Se você vir mensagens “HTTP signature verification failed”, a atualização alterou a chave privada da sua instância ou o algoritmo de assinatura. Entre em contato com o operador do relay e peça para ele readicionar sua instância. Em seguida, execute Relay.find_each(&:subscribe!) novamente.

Fila do Sidekiq cresce com jobs de retentativa de relay

Se o Sidekiq mostrar centenas de retentativas para jobs de relay, o servidor relay pode estar temporariamente offline ou limitando a taxa da sua instância. Aguarde 30 minutos e verifique novamente. Se as retentativas continuarem, remova a assinatura do relay da página de Relays e adicione-a novamente manualmente. Isso força um novo handshake.

Assinatura de relay desaparece da página de administração

Isso é raro, mas pode acontecer se a migração de atualização excluiu os registros de relay. Verifique o banco de dados diretamente com psql -d mastodon_production -c "SELECT * FROM relays;". Se a tabela estiver vazia, você deve adicionar cada assinatura de relay novamente usando a interface web. Use o botão Adicionar relay na página de Relays e cole a URL do relay.

Persistência de Assinatura de Relay no Mastodon: Renovação Manual vs Automatizada

Item Reinscrição manual Comando automatizado no console Rails
Método Remover e readicionar cada URL de relay via interface web Executar Relay.find_each(&:subscribe!) após a atualização
Tempo necessário 2-5 minutos por relay 30 segundos para todos os relays
Risco de perda de dados Nenhum, mas você precisa saber a URL de cada relay Nenhum, mas requer acesso ao console Rails
Melhor usado quando Lista de relays está vazia após a atualização Relays ainda aparecem no banco de dados, mas estão quebrados

Após verificar suas assinaturas de relay, você pode confirmar que sua instância está recebendo conteúdo federado novamente verificando a timeline federada em busca de novas postagens de instâncias relayadas. Se você gerencia vários relays, considere escrever um cron job que execute Relay.find_each(&:subscribe!) semanalmente para evitar desvios futuros de assinatura. Este comando é seguro para executar mesmo em assinaturas funcionais, pois o Mastodon ignora solicitações de assinatura duplicadas.

ADVERTISEMENT