Como Hospedar um Relay do Mastodon em um Raspberry Pi
🔍 WiseChecker

Como Hospedar um Relay do Mastodon em um Raspberry Pi

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.

ADVERTISEMENT

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.

  1. Atualizar pacotes do sistema e instalar pré-requisitos
    Execute sudo apt update && sudo apt upgrade -y. Depois instale Python 3, pip, git e Nginx com sudo apt install python3 python3-pip git nginx certbot python3-certbot-nginx -y.
  2. Clonar o repositório do Pub-Relay
    Execute git clone https://github.com/glitch-soc/mastodon-relay.git /opt/relay. Isso coloca o código do relay no diretório /opt/relay.
  3. Criar um ambiente virtual Python e instalar dependências
    Execute cd /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.
  4. Criar um arquivo de configuração
    Copie a configuração de exemplo: cp config.py.example config.py. Edite o arquivo com nano config.py. Altere RELAY_PORT para 8080. Defina RELAY_DOMAIN com seu nome de domínio (por exemplo, relay.exemplo.com). Defina PUBLIC_RELAY como True se quiser que qualquer instância assine sem aprovação. Salve o arquivo.
  5. Gerar uma chave secreta para o relay
    Execute python3 -c "import secrets; print(secrets.token_hex(32))". Copie a saída. Em config.py, defina SECRET_KEY com esse valor. Essa chave assina as mensagens do relay e evita falsificação.
  6. 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.target

    Salve o arquivo. Execute sudo systemctl daemon-reload && sudo systemctl enable relay && sudo systemctl start relay.

  7. 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.com pelo seu domínio real. Ative o site com sudo 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 com sudo nginx -t e recarregue com sudo systemctl reload nginx.

  8. Obter um certificado TLS com Certbot
    Execute sudo 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 com sudo certbot renew --dry-run.
  9. Testar o relay
    Abra um navegador e acesse https://relay.exemplo.com. Você deve ver uma resposta JSON com informações do relay. Se houver erro, verifique os logs do relay com sudo journalctl -u relay -f.

ADVERTISEMENT

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.

ADVERTISEMENT