Relays do Mastodon são servidores que encaminham postagens públicas de uma instância para muitas outras, aumentando a visibilidade da federação sem seguir manualmente. Se sua pequena instância do Mastodon tem dificuldade em descobrir conteúdo de outros servidores, um relay pode puxar postagens automaticamente. Este guia explica como configurar um relay compatível com Mastodon em um Raspberry Pi 4 ou 5 rodando Raspberry Pi OS. Ao final, você terá um relay funcional que sua instância e outras podem assinar.
Principais Pontos: Configuração de um Relay do Mastodon no Raspberry Pi
- Software Pub-Relay: O servidor relay de código aberto que encaminha postagens públicas entre instâncias do Mastodon.
- Raspberry Pi 4 ou 5 com 4 GB de RAM: Hardware mínimo recomendado para lidar com tráfego moderado do relay.
- Proxy reverso Nginx: Gerencia a terminação TLS e encaminha requisições para o serviço relay rodando na porta 8080.
- Arquivo de serviço systemd: Garante que o relay inicie automaticamente na inicialização e reinicie em caso de falha.
Por que Rodar um Relay do Mastodon em um Raspberry Pi
Um relay do Mastodon coleta postagens públicas de todas as instâncias conectadas e as redistribui para cada assinante. Isso significa que sua instância vê postagens de muitos servidores sem seguir manualmente cada um. Rodar um relay em um Raspberry Pi mantém sua federação independente de operadores de relay terceiros que podem desligar ou mudar políticas. O Raspberry Pi consome menos de 10 watts de energia, tornando-se um servidor de baixo custo e sempre ligado para essa tarefa. O software relay de referência oficial é o Pub-Relay, escrito em Python e projetado para funcionar com o protocolo ActivityPub.
Requisitos de Hardware
Recomenda-se um Raspberry Pi 4 ou 5 com pelo menos 4 GB de RAM. O processo do relay usa cerca de 500 MB a 1 GB de memória com algumas dezenas de instâncias conectadas. As necessidades de armazenamento são mínimas porque o relay não armazena postagens permanentemente — ele apenas as armazena em cache brevemente durante o encaminhamento. Um cartão microSD de 32 GB ou um SSD externo é suficiente. Um endereço IP estático ou um serviço de DNS dinâmico é necessário para que as instâncias possam alcançar seu relay.
Pilha de Software
O relay roda em Python 3.9 ou superior. O Nginx atua como proxy reverso para lidar com certificados HTTPS do Let’s Encrypt. O relay escuta na porta 8080 internamente, e o Nginx encaminha o tráfego HTTPS externo na porta 443 para essa porta interna. O Git é usado para clonar o repositório do Pub-Relay.
Passos para Instalar e Configurar o Relay do Mastodon
Siga estes passos em uma instalação nova do Raspberry Pi OS (Debian Bookworm ou posterior). Você precisa de acesso sudo e um nome de domínio apontando para o IP público do seu Pi.
- Atualizar pacotes do sistema e instalar pré-requisitos
Executesudo apt update && sudo apt upgrade -y. Depois instale Python 3, pip, git e Nginx comsudo apt install python3 python3-pip git nginx certbot python3-certbot-nginx -y. - Clonar o repositório do Pub-Relay
Executegit clone https://github.com/glitch-soc/mastodon-relay.git /opt/relay. Isso coloca o código do relay no diretório/opt/relay. - Criar um ambiente virtual Python e instalar dependências
Executecd /opt/relay && python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt. O ambiente virtual isola os pacotes Python do relay do sistema. - Criar um arquivo de configuração
Copie a configuração de exemplo:cp config.py.example config.py. Edite o arquivo comnano config.py. AltereRELAY_PORTpara8080. DefinaRELAY_DOMAINcom seu nome de domínio (por exemplo,relay.exemplo.com). DefinaPUBLIC_RELAYcomoTruese quiser que qualquer instância assine sem aprovação. Salve o arquivo. - Gerar uma chave secreta para o relay
Executepython3 -c "import secrets; print(secrets.token_hex(32))". Copie a saída. Emconfig.py, definaSECRET_KEYcom esse valor. Essa chave assina as mensagens do relay e evita falsificação. - Configurar o serviço systemd para inicialização automática
Crie um arquivo de serviço:sudo nano /etc/systemd/system/relay.service. Adicione o seguinte conteúdo:[Unit]
Description=Mastodon Relay
After=network.target
[Service]
Type=simple
User=pi
WorkingDirectory=/opt/relay
ExecStart=/opt/relay/venv/bin/python /opt/relay/run.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetSalve o arquivo. Execute
sudo systemctl daemon-reload && sudo systemctl enable relay && sudo systemctl start relay. - Configurar o Nginx como proxy reverso
Crie uma configuração de site do Nginx:sudo nano /etc/nginx/sites-available/relay. Adicione o seguinte:server {
listen 80;
server_name relay.exemplo.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name relay.exemplo.com;
ssl_certificate /etc/letsencrypt/live/relay.exemplo.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/relay.exemplo.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Substitua
relay.exemplo.compelo seu domínio real. Ative o site comsudo ln -s /etc/nginx/sites-available/relay /etc/nginx/sites-enabled/. Remova o site padrão se houver conflito:sudo rm /etc/nginx/sites-enabled/default. Teste a configuração comsudo nginx -te recarregue comsudo systemctl reload nginx. - Obter um certificado TLS com Certbot
Executesudo certbot --nginx -d relay.exemplo.com. Siga as instruções para obter um certificado gratuito do Let’s Encrypt. O Certbot atualiza automaticamente a configuração do Nginx. Verifique a renovação do certificado comsudo certbot renew --dry-run. - Testar o relay
Abra um navegador e acessehttps://relay.exemplo.com. Você deve ver uma resposta JSON com informações do relay. Se houver erro, verifique os logs do relay comsudo journalctl -u relay -f.
Problemas Comuns e Erros de Configuração
Relay Retorna Erro 502 Bad Gateway
Isso significa que o Nginx não consegue alcançar o processo do relay na porta 8080. Verifique se o serviço do relay está rodando com sudo systemctl status relay. Se estiver inativo, inicie com sudo systemctl start relay. Verifique se nenhum outro serviço está usando a porta 8080 com sudo ss -tlnp | grep 8080.
Instâncias Não Conseguem Assinar o Relay
O administrador da instância deve adicionar a URL do relay no painel Admin da instância, em Federação > Relays. A URL deve ser o endereço HTTPS completo, por exemplo https://relay.exemplo.com. Se o relay estiver configurado com PUBLIC_RELAY = False, a instância não será aceita automaticamente. Defina PUBLIC_RELAY = True em config.py e reinicie o relay com sudo systemctl restart relay.
Postagens Não Aparecem Após Assinar
O relay apenas encaminha postagens públicas de instâncias que também estão inscritas no relay. Cada instância deve ter o relay adicionado e ativado. Após assinar, aguarde até 15 minutos para o primeiro lote de postagens chegar. Verifique os logs do relay com sudo journalctl -u relay -f para erros de conexão.
Pub-Relay vs Federação Manual: Principais Diferenças
| Item | Pub-Relay no Raspberry Pi | Federação Manual (Seguindo Instâncias Individuais) |
|---|---|---|
| Esforço de configuração | Requer configuração de servidor e domínio | Nenhum servidor adicional necessário |
| Descoberta de conteúdo | Automática — recebe todas as postagens públicas das instâncias conectadas | Requer seguir manualmente contas ou instâncias específicas |
| Carga do servidor | Aumenta com o número de instâncias conectadas | A carga fica no worker de federação da própria instância |
| Largura de banda de rede | O relay envia todas as postagens públicas para cada assinante | A instância puxa apenas postagens de contas seguidas |
| Controle | Controle total sobre as políticas do relay (público ou restrito) | Depende das políticas de seguir do administrador da instância |
A abordagem do relay centraliza o fluxo de federação, facilitando que instâncias pequenas vejam uma ampla gama de conteúdo. A federação manual dá ao administrador da instância um controle mais fino sobre quais servidores seguir, mas requer mais gerenciamento ativo.
Agora você tem um relay do Mastodon auto-hospedado rodando no seu Raspberry Pi. Sua instância pode assinar este relay para puxar automaticamente postagens públicas de todas as outras instâncias conectadas. Para melhor desempenho, considere mover os dados do relay para um SSD externo em vez do cartão microSD. Você também pode ativar PUBLIC_RELAY = True para permitir que qualquer instância do Mastodon entre sem sua aprovação.