Como Verificar se uma Postagem Federada Alcançou Todos os Seus Seguidores
🔍 WiseChecker

Como Verificar se uma Postagem Federada Alcançou Todos os Seus Seguidores

Quando você publica uma postagem no Mastodon, o servidor a distribui pelo fediverso para seus seguidores em outras instâncias. Você pode notar que alguns seguidores nunca veem sua postagem, mesmo que você a tenha enviado com sucesso do seu próprio servidor. Isso acontece porque a federação depende de cada instância remota puxar a postagem do seu servidor, e atrasos ou bloqueios de servidor podem impedir a entrega. Este artigo explica os mecanismos técnicos por trás da federação de postagens e fornece etapas concretas para confirmar se uma postagem específica alcançou todos os seus seguidores.

Principais Conclusões: Como Verificar a Federação de Postagens no Mastodon

  • Verifique o URL da página da postagem para o ID da atividade federada: O ID único no URL confirma que a postagem foi criada no seu servidor e está disponível para federação.
  • Use o endpoint da API do Mastodon /api/v1/statuses/:id/favourited_by: Este endpoint mostra quais contas interagiram com a postagem, indicando que a receberam.
  • Monitore os logs do servidor para o status de entrega de saída: As entradas de log Sidekiq::Federation::DeliveryWorker mostram se as instâncias remotas aceitaram a postagem.

Como o Mastodon Distribui Postagens Entre Instâncias

O Mastodon usa o protocolo ActivityPub para enviar postagens entre instâncias. Quando você publica uma postagem, seu servidor cria um objeto Activity contendo o conteúdo da postagem e o envia para cada instância remota que tem um seguidor seu. A instância remota recebe essa atividade, armazena a postagem localmente e a exibe nas timelines de seus usuários que seguem você.

O processo de entrega é assíncrono. Seu servidor enfileira os trabalhos de entrega no Sidekiq, um processador de tarefas em segundo plano. Cada instância remota recebe uma requisição POST com o JSON da atividade. Se a instância remota aceitar a requisição, ela retorna HTTP 202 Accepted. Se a instância remota rejeitar a requisição devido a regras de moderação ou bloqueios de servidor, a entrega falha e a postagem nunca aparece nessa instância.

Para verificar se uma postagem alcançou todos os seguidores, você precisa checar três coisas: que seu servidor enviou a atividade para cada instância remota, que cada instância remota aceitou a atividade e que a postagem aparece nas timelines dos seguidores nessas instâncias. As seções a seguir explicam como realizar cada verificação.

Passos para Verificar se uma Postagem Federada Alcançou Seus Seguidores

  1. Abra a postagem em um navegador e copie o URL
    Na sua instância do Mastodon, navegue até a postagem que deseja verificar. Clique no timestamp da postagem para abrir sua página individual. O URL será parecido com https://suainstancia.social/@usuario/123456789012345678. O ID numérico no final é o ID da postagem. Copie esse URL completo.
  2. Verifique o ID da postagem no banco de dados
    Se você tiver acesso de administrador à sua instância, abra um console Rails no servidor. Execute o comando Status.find(123456789012345678) usando o ID da postagem do URL. Esse comando retorna o objeto status. Verifique se o campo uri contém o URI completo do ActivityPub. Se o URI estiver presente, a postagem foi criada com a federação habilitada. Se o URI for nulo, a postagem foi definida como não listada ou visibilidade privada, o que pode limitar a federação.
  3. Examine o status de entrega da postagem usando a API do Mastodon
    Envie uma requisição GET para o endpoint https://suainstancia.social/api/v1/statuses/123456789012345678 com um token de acesso que tenha o escopo read:statuses. A resposta inclui um campo visibility. Se a visibilidade for public ou unlisted, a postagem é elegível para federação. Se a visibilidade for private ou direct, a postagem só alcança seguidores na mesma instância e não pode ser verificada entre instâncias.
  4. Verifique os logs do servidor para tentativas de entrega
    No seu servidor Mastodon, abra os logs do Sidekiq. Procure por entradas contendo DeliveryWorker e o ID da postagem. Cada entrada mostra o URL da instância de destino e o código de resposta HTTP. Um código de resposta 202 indica entrega bem-sucedida. Um código de resposta 403 ou 410 indica rejeição. Se você não vir entradas para uma instância específica, seu servidor não tentou entregar para essa instância.
  5. Peça a um seguidor em uma instância remota para confirmar
    Envie uma mensagem direta para um seguidor em outra instância e peça para ele verificar sua timeline inicial para sua postagem. Se ele vir a postagem, a federação funcionou para essa instância. Se ele não vir a postagem, peça para verificar a timeline federada para sua postagem. Se aparecer na timeline federada, mas não na timeline inicial, o seguidor pode precisar atualizar a conexão com sua instância.
  6. Use o endpoint favourited_by para verificar interações
    Envie uma requisição GET para https://suainstancia.social/api/v1/statuses/123456789012345678/favourited_by. A resposta lista as contas que favoritaram a postagem. Se você vir contas de várias instâncias diferentes, essas instâncias receberam a postagem. Se você vir apenas contas da sua própria instância, a postagem pode não ter sido federada para outras instâncias.

Problemas Comuns que Impedem a Federação de Postagens

Visibilidade da postagem definida como privada ou direta

Postagens com visibilidade privada e direta não são enviadas para instâncias remotas. Apenas postagens públicas e não listadas são elegíveis para federação. Se você precisar verificar a entrega, altere a visibilidade da postagem para não listada antes de publicar.

Instância remota bloqueou sua instância

Bloqueios em nível de servidor impedem qualquer federação entre duas instâncias. Se uma instância remota suspendeu ou limitou sua instância, suas postagens nunca alcançarão seguidores nessa instância. Verifique a lista de servidores no painel de administração para ver se sua instância tem algum bloqueio conhecido.

Instância remota está com alta carga

Se uma instância remota estiver sob alta carga, ela pode rejeitar temporariamente atividades recebidas. O trabalho de entrega será repetido automaticamente pelo Sidekiq até 25 vezes. Se as repetições falharem, a postagem não alcançará essa instância. Você pode ver as contagens de repetição no painel do Sidekiq na aba Retries.

Conta do seguidor foi desativada ou suspensa

Se uma conta de seguidor foi desativada após você publicar a postagem, seu servidor ainda tentará a entrega. A instância remota retornará uma resposta 410 Gone, e a entrega falhará. Isso não afeta a entrega para outros seguidores na mesma instância.

Item Postagem Pública Postagem Não Listada
Federação para instâncias remotas Sim Sim
Aparece na timeline pública local Sim Não
Aparece na timeline federada Sim Não
Verificação de entrega via API Completa Completa

Agora você pode verificar se uma postagem federada alcançou todos os seus seguidores verificando o ID da postagem no banco de dados, examinando os logs do servidor e usando os endpoints da API do Mastodon. Para melhorar a confiabilidade da entrega, mantenha o software da sua instância atualizado e monitore a fila do Sidekiq para entregas com falha. Para rastreamento avançado, considere ativar o nível de log federation_delivery_worker para debug em config/settings.yml para capturar cada tentativa de entrega.