Como Executar um Relay Mastodon Auto-hospedado com ActivityRelay
🔍 WiseChecker

Como Executar um Relay Mastodon Auto-hospedado com ActivityRelay

Executar um relay Mastodon ajuda instâncias a descobrirem postagens públicas de outras instâncias sem que cada usuário precise pesquisar manualmente por contas remotas. Um relay atua como um hub central que recebe postagens públicas de instâncias inscritas e as redistribui para todos os outros assinantes. Este guia explica como configurar seu próprio relay usando o software ActivityRelay em um servidor Linux. Você aprenderá as etapas de instalação, configuração e como conectar sua instância Mastodon ao relay.

Principais conclusões: Executar um Relay Mastodon com ActivityRelay

  • Instalação do ActivityRelay: Implante o servidor relay baseado em Ruby em um VPS Linux com Docker ou a partir do código-fonte.
  • Variáveis de ambiente: Defina LOCAL_DOMAIN, SECRET_KEY_BASE e credenciais do banco de dados em um arquivo .env.
  • Inscrição da instância: Administradores do Mastodon se inscrevem no relay inserindo a URL do relay no painel de administração.

O que um Relay Mastodon Faz e Por Que Você Pode Querer Um

Um relay Mastodon é um serviço que coleta postagens públicas de todas as instâncias inscritas e as encaminha para todos os outros assinantes. Sem um relay, uma instância só vê postagens públicas de instâncias que seus usuários seguem explicitamente. Isso pode fazer com que a timeline federada pareça vazia para instâncias pequenas ou novas.

ActivityRelay é uma implementação de relay de código aberto escrita em Ruby. Ele usa o mesmo protocolo ActivityPub que o Mastodon usa. O relay em si não armazena postagens permanentemente. Ele apenas as repassa em tempo real. Isso significa que o servidor relay pode ser relativamente leve, desde que tenha largura de banda suficiente para lidar com o tráfego de todos os assinantes.

Como o Relay Melhora a Federação

Quando sua instância se inscreve em um relay, o relay envia para sua instância todas as postagens públicas que recebe de outros assinantes. Em troca, sua instância envia suas postagens públicas para o relay. Isso cria um fluxo bidirecional de conteúdo. O resultado é que sua timeline federada é preenchida com postagens de muitas instâncias, não apenas daquelas que seus usuários seguem manualmente.

Pré-requisitos para Auto-hospedar um Relay

Você precisa de um servidor Linux rodando Ubuntu 20.04 ou superior, ou Debian 11 ou superior. O servidor deve ter pelo menos 2 GB de RAM e um endereço IP público com as portas 80 e 443 abertas. Você também precisa de um nome de domínio apontado para o servidor. O Mastodon em si não precisa estar instalado no servidor relay. O relay roda como um serviço independente.

Instalando o ActivityRelay com Docker

A maneira mais fácil de executar o ActivityRelay é com Docker e Docker Compose. Este método empacota o relay e suas dependências em contêineres. Você evita instalar Ruby, PostgreSQL e Redis diretamente no sistema host.

  1. Instale Docker e Docker Compose
    Execute o script oficial de instalação do Docker para Ubuntu ou Debian. Após a instalação, verifique com docker --version e docker compose version.
  2. Clone o repositório do ActivityRelay
    Execute git clone https://github.com/breunigs/activityrelay.git e entre no diretório com cd activityrelay.
  3. Crie o arquivo de ambiente
    Copie .env.production.sample para .env. Edite o arquivo e defina LOCAL_DOMAIN para o domínio do seu relay. Defina SECRET_KEY_BASE como uma string longa aleatória gerada com openssl rand -hex 64. Defina POSTGRES_PASSWORD e REDIS_PASSWORD com valores seguros.
  4. Inicie os contêineres
    Execute docker compose up -d. Isso inicia PostgreSQL, Redis e o serviço web do relay. Aguarde cerca de 30 segundos para o banco de dados inicializar.
  5. Execute a migração do banco de dados
    Execute docker compose exec web bundle exec rails db:migrate. Isso cria as tabelas necessárias para o relay.
  6. Configure um proxy reverso com Nginx ou Caddy
    Aponte seu domínio para o servidor e faça proxy das requisições para http://localhost:3000. Use Let’s Encrypt para TLS. O relay requer HTTPS para funcionar.
  7. Verifique se o relay está funcionando
    Visite https://seu-dominio-relay/.well-known/nodeinfo em um navegador. Você deve ver uma resposta JSON com metadados do relay.

Configurando o Relay para Uso Público ou Privado

O ActivityRelay suporta dois modos: aberto e fechado. No modo aberto, qualquer instância Mastodon pode se inscrever sem aprovação. No modo fechado, você deve aprovar manualmente cada solicitação de inscrição. Você controla isso através da variável de ambiente OPEN_REGISTRATION no arquivo .env.

  1. Defina OPEN_REGISTRATION como true para modo aberto
    Abra .env e adicione ou edite a linha OPEN_REGISTRATION=true. Reinicie os contêineres com docker compose restart.
  2. Defina OPEN_REGISTRATION como false para modo fechado
    Altere o valor para false. Neste modo, você deve aprovar inscrições através da interface de administração do relay. Acesse o painel de administração em https://seu-dominio-relay/admin. Faça login com as credenciais que você definiu em .env.
  3. Limite o relay a instâncias específicas
    No modo fechado, você pode bloquear ou permitir instâncias manualmente a partir do painel de administração. Isso impede que conteúdo indesejado entre no seu relay.

Conectando uma Instância Mastodon ao Seu Relay

Depois que seu relay estiver funcionando, administradores de instâncias Mastodon podem se inscrever nele. O processo é o mesmo para qualquer instância Mastodon, incluindo a sua.

  1. Faça login como administrador na instância Mastodon
    Vá para https://sua-instancia-dominio/admin/settings/relays.
  2. Insira a URL do relay
    Digite https://seu-dominio-relay no campo e clique em Adicionar Relay. O Mastodon enviará uma solicitação de inscrição para o relay.
  3. Aprove a inscrição se estiver usando modo fechado
    No painel de administração do relay, vá para a aba Pendente e clique em Aprovar para a instância solicitante.
  4. Verifique a conexão
    De volta ao administrador do Mastodon, o status do relay deve mostrar Ativado. Postagens públicas de outras instâncias inscritas devem começar a aparecer na timeline federada em alguns minutos.

Problemas Comuns ao Executar um Relay Mastodon

Relay Não Encaminha Postagens

Se as postagens não estão fluindo, verifique os logs do relay com docker compose logs web. Procure por erros relacionados à validação do certificado SSL. O relay deve ter um certificado TLS válido. Verifique também se o domínio do relay resolve corretamente a partir do servidor da instância inscrita.

Instância Não Consegue se Inscrever no Relay

A instância inscrita deve ter acesso HTTPS de saída ao domínio do relay. Verifique se nenhum firewall bloqueia a porta 443. Certifique-se também de que o LOCAL_DOMAIN do relay corresponde ao domínio na URL de inscrição. Se o domínio não corresponder, o handshake falha.

Relay Consome Muita Largura de Banda

Um relay público com muitos assinantes pode transferir grandes quantidades de dados. Considere limitar o relay a um pequeno grupo de instâncias confiáveis. Você também pode reduzir a carga de trabalho do relay definindo MAX_THREADS no .env para um número menor, como 5. Isso limita o número de entregas simultâneas de saída.

ActivityRelay vs Outras Soluções de Relay

Item ActivityRelay Conexão Manual
Complexidade de configuração Requer Docker e proxy reverso Nenhum software extra necessário
Distribuição de conteúdo Encaminhamento bidirecional automático Apenas postagens de contas seguidas
Recursos do servidor Mínimo 2 GB de RAM Nenhum além do próprio Mastodon
Controle sobre assinantes Registro aberto ou fechado Não se aplica

Agora você tem um relay Mastodon auto-hospedado usando ActivityRelay. O relay distribuirá automaticamente postagens públicas entre todas as instâncias inscritas. Comece inscrevendo sua própria instância no relay e verifique se as postagens aparecem. Para melhor desempenho, monitore os logs do relay semanalmente e ajuste MAX_THREADS se a CPU do servidor permanecer acima de 80 por cento.