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.
- Instale Docker e Docker Compose
Execute o script oficial de instalação do Docker para Ubuntu ou Debian. Após a instalação, verifique comdocker --versionedocker compose version. - Clone o repositório do ActivityRelay
Executegit clone https://github.com/breunigs/activityrelay.gite entre no diretório comcd activityrelay. - Crie o arquivo de ambiente
Copie.env.production.samplepara.env. Edite o arquivo e definaLOCAL_DOMAINpara o domínio do seu relay. DefinaSECRET_KEY_BASEcomo uma string longa aleatória gerada comopenssl rand -hex 64. DefinaPOSTGRES_PASSWORDeREDIS_PASSWORDcom valores seguros. - Inicie os contêineres
Executedocker 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. - Execute a migração do banco de dados
Executedocker compose exec web bundle exec rails db:migrate. Isso cria as tabelas necessárias para o relay. - 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. - Verifique se o relay está funcionando
Visitehttps://seu-dominio-relay/.well-known/nodeinfoem 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.
- Defina OPEN_REGISTRATION como true para modo aberto
Abra.enve adicione ou edite a linhaOPEN_REGISTRATION=true. Reinicie os contêineres comdocker compose restart. - Defina OPEN_REGISTRATION como false para modo fechado
Altere o valor parafalse. Neste modo, você deve aprovar inscrições através da interface de administração do relay. Acesse o painel de administração emhttps://seu-dominio-relay/admin. Faça login com as credenciais que você definiu em.env. - 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.
- Faça login como administrador na instância Mastodon
Vá parahttps://sua-instancia-dominio/admin/settings/relays. - Insira a URL do relay
Digitehttps://seu-dominio-relayno campo e clique em Adicionar Relay. O Mastodon enviará uma solicitação de inscrição para o relay. - 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. - 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.