Recuperação de Falha em Relay do Mastodon: Como Reinscrever Automaticamente
🔍 WiseChecker

Recuperação de Falha em Relay do Mastodon: Como Reinscrever Automaticamente

Quando a conexão de um relay do Mastodon é interrompida, sua instância para de receber postagens públicas de servidores federados que dependem desse relay. Isso geralmente acontece porque o servidor relay ficou offline, alterou seu endpoint ou o token de assinatura expirou. Sem um relay funcionando, sua timeline local fica mais silenciosa e os usuários podem perder conteúdo em alta de outras instâncias. Este artigo explica por que as assinaturas de relay falham e fornece um método passo a passo para reinscrever automaticamente usando um script e um agendador do sistema, para que você não precise readicionar relays manualmente toda vez que eles falharem.

Principais Conclusões: Automação de Reinscrição de Relay

  • Admin > Relays > Adicionar novo relay: Inscreva-se manualmente em um relay inserindo sua URL e ativando a opção de assinatura.
  • Tootctl relays subscribe: Comando CLI que reinscreve em todos os relays configurados em uma única operação.
  • cron job ou Agendador de Tarefas: Automatiza o comando tootctl para ser executado diariamente e reinscrever relays com falha sem intervenção manual.

ADVERTISEMENT

Por que as Assinaturas de Relay do Mastodon Falham

Um relay do Mastodon é um servidor especializado que redistribui postagens públicas de uma instância para muitas outras. Sua instância se inscreve em um relay enviando uma solicitação de assinatura. O relay então envia novas postagens públicas para sua instância. Se o relay ficar offline por um período, sua instância marca a assinatura como falha. Quando o relay volta, sua instância não reinscreve automaticamente.

As razões mais comuns de falha são:

Indisponibilidade do Servidor Relay

Se o servidor relay parar de responder por mais de alguns minutos, o Mastodon marca a assinatura como morta. O administrador do relay pode reiniciar o servidor, mas sua instância não reinscreverá até que você readicione o relay manualmente ou execute o comando de inscrição.

Tokens de Assinatura Expirados

Alguns relays exigem um token de assinatura que expira após 24 a 48 horas. O Mastodon não renova esses tokens automaticamente. Quando o token expira, o relay rejeita sua instância e a assinatura se torna inativa.

URL do Endpoint do Relay Alterada

Se o operador do relay mover o relay para um novo domínio ou caminho, sua instância ainda aponta para a URL antiga. O comando de inscrição falha silenciosamente até que você atualize a URL do relay no painel de administração.

Passos para Reinscrever em um Relay do Mastodon Automaticamente

Siga estes passos para configurar a reinscrição automática usando a CLI do Mastodon e um cron job no Linux ou Agendador de Tarefas no Windows. Este método funciona para instâncias do Mastodon em qualquer sistema operacional que suporte cron ou uma tarefa agendada.

Passo 1: Identificar o Status da Assinatura do Relay

  1. Acesse o painel de administração do Mastodon
    Vá para https://suainstancia.com/admin/settings/relays. Você verá uma lista de todos os relays aos quais sua instância já se inscreveu. Cada relay mostra um indicador de status: verde para ativo, vermelho para falha e cinza para pendente.
  2. Anote as URLs dos relays
    Para cada relay com status vermelho, copie a URL completa do relay. Você precisará dessas URLs posteriormente para o script automatizado.

Passo 2: Criar o Script de Reinscrição

  1. Abra um terminal no seu servidor Mastodon
    Use SSH ou o console do servidor para acessar a máquina que executa sua instância do Mastodon.
  2. Crie um novo arquivo de script shell
    Execute nano /home/mastodon/resubscribe_relays.sh. Substitua mastodon pelo nome de usuário sob o qual o Mastodon é executado no seu sistema.
  3. Escreva o conteúdo do script
    Cole as seguintes linhas no arquivo. Substitua /home/mastodon/live pelo caminho real do diretório de instalação do Mastodon.
    #!/bin/bash
    cd /home/mastodon/live
    RAILS_ENV=production bin/tootctl relays subscribe --all
    
  4. Salve e saia
    Pressione Ctrl+X, depois Y, depois Enter para salvar o arquivo.
  5. Torne o script executável
    Execute chmod +x /home/mastodon/resubscribe_relays.sh.

Passo 3: Testar o Script Manualmente

  1. Execute o script
    Execute sudo -u mastodon bash /home/mastodon/resubscribe_relays.sh. Substitua mastodon pelo usuário real do sistema Mastodon.
  2. Verifique a saída
    O script exibirá uma mensagem para cada relay: “Inscrito no relay” ou “Já inscrito.” Se você vir erros, verifique as URLs dos relays no painel de administração e garanta que o usuário do Mastodon tenha permissões de escrita no diretório live.
  3. Verifique no painel de administração
    Atualize a página de relays no seu navegador. O status dos relays que falharam anteriormente agora deve estar verde ou cinza. Se permanecer vermelho, o relay pode ainda estar offline.

Passo 4: Agendar Execução Automática

  1. Abra o crontab do usuário do Mastodon
    Execute sudo -u mastodon crontab -e. Se for a primeira vez, selecione um editor de texto quando solicitado.
  2. Adicione uma linha de cron job
    Insira a seguinte linha no final do arquivo:
    0 6 /home/mastodon/resubscribe_relays.sh
    Isso executa o script todos os dias às 6:00. Ajuste o horário conforme sua preferência. Use uma calculadora de tempo cron, se necessário.
  3. Salve e saia
    Pressione Ctrl+X, depois Y, depois Enter. O cron confirmará que o novo job foi instalado.

Passo 5: Verificar a Tarefa Agendada

  1. Liste os cron jobs ativos
    Execute sudo -u mastodon crontab -l. Você deve ver a linha que adicionou.
  2. Aguarde a execução agendada
    Permita que o cron job seja executado no horário configurado. Após a execução, verifique o status dos relays no painel de administração. O script deve ter reinscrito todos os relays que estavam marcados como falha.

ADVERTISEMENT

Se a Reinscrição Automatizada Ainda Falhar

URL do Relay Está Incorreta

Se o script for executado, mas o status do relay permanecer vermelho, a URL do relay armazenada no painel de administração pode estar desatualizada. Vá para Admin > Relays e clique no botão de editar ao lado do relay com falha. Verifique se a URL corresponde ao endpoint atual do relay. Se o operador do relay alterou a URL, você deve remover o relay antigo e adicionar o novo manualmente. Após atualizar, execute o script novamente.

Relay Está Permanentemente Offline

Alguns relays são desligados permanentemente. O script não pode reinscrever em um relay que não existe mais. Verifique a página de status do relay ou entre em contato com o operador. Se o relay não existir mais, remova-o do painel de administração e encontre um relay alternativo no registro de relays do Mastodon em https://relaylist.com.

Permissão Negada ao Executar o Script

Se você vir erros de “Permissão negada”, o usuário do Mastodon não tem permissão de execução no script ou o caminho do script está incorreto. Execute ls -l /home/mastodon/resubscribe_relays.sh para confirmar que o script existe e tem permissões executáveis. Certifique-se de que a linha do cron job use o caminho absoluto completo para o script.

Reinscrição Manual vs Script Automatizado

Item Reinscrição Manual Script Automatizado com Cron
Tempo de configuração 30 segundos por relay 10 minutos uma vez
Confiabilidade Depende da memória humana Executa diariamente independentemente
Tratamento de erros Nenhum Registra saída no syslog
Velocidade de recuperação Horas a dias Em até 24 horas
Requer acesso ao servidor Não Sim

A reinscrição automatizada é a melhor escolha para administradores de instância que gerenciam vários relays e não podem monitorá-los constantemente. A reinscrição manual funciona para instâncias pequenas com um ou dois relays que raramente falham.

Após configurar o cron job, sua instância do Mastodon reinscreverá automaticamente qualquer relay com falha em até 24 horas. Verifique o status dos relays uma vez por semana para confirmar que o script é executado sem erros. Se você gerencia várias instâncias, considere centralizar o gerenciamento de relays com um script compartilhado executado em cada servidor.

ADVERTISEMENT