Custos de Armazenamento de Instância Mastodon Auto-hospedada: Números Reais
🔍 WiseChecker

Custos de Armazenamento de Instância Mastodon Auto-hospedada: Números Reais

Gerenciar uma instância Mastodon auto-hospedada exige entender os custos de armazenamento. Muitos administradores subestimam a rapidez com que arquivos de mídia de postagens federadas consomem espaço em disco. Sem planejamento, uma pequena instância comunitária pode ultrapassar 100 GB em meses, gerando contas inesperadas de hospedagem. Este artigo detalha o uso real de armazenamento para instâncias de diferentes tamanhos e explica o custo por usuário.

Principais Conclusões: Custos de Armazenamento do Mastodon para Instâncias Auto-hospedadas

  • Política de retenção de arquivos de mídia em Admin > Configurações do Servidor > Retenção de Mídia: Reduzir o período de retenção de “para sempre” para 30 dias reduz o armazenamento em até 70%.
  • Migração para armazenamento de objetos compatível com S3: Mover a mídia para Amazon S3 ou Backblaze B2 reduz a pressão no disco do servidor e dimensiona o custo de armazenamento por GB.
  • Armazenamento médio por usuário ativo por mês: Um usuário ativo típico gera 150–300 MB de dados de mídia e banco de dados por mês em uma instância federada.

Como o Uso de Armazenamento do Mastodon se Acumula em Instâncias Auto-hospedadas

O Mastodon armazena duas categorias principais de dados: o banco de dados PostgreSQL e arquivos de mídia. O banco de dados contém contas, toots e relacionamentos. Os arquivos de mídia incluem imagens, vídeos e emojis personalizados de usuários locais e postagens federadas. Os arquivos de mídia representam 80–90% do uso total de disco em uma instância típica.

O modelo de federação faz com que o armazenamento cresça mais rápido que o número de usuários locais. Quando um usuário local segue uma conta remota, o Mastodon baixa as postagens e mídias recentes dessa conta. Se 100 usuários locais seguirem 100 contas remotas cada, a instância armazena em cache até 10.000 perfis remotos. Esse efeito de amplificação significa que os custos de armazenamento se correlacionam mais com o número de contas remotas seguidas do que com a quantidade de usuários locais.

Padrões de Crescimento do Banco de Dados

O banco de dados PostgreSQL cresce cerca de 10–20 MB por usuário ativo por mês. Esse crescimento vem de textos de toots, favoritos, boosts e relacionamentos de seguidores. O tamanho do banco de dados raramente excede 10 GB, a menos que a instância tenha milhares de usuários ativos. A maioria dos administradores considera os custos do banco de dados insignificantes em comparação com o armazenamento de mídia.

Padrões de Crescimento de Arquivos de Mídia

Os arquivos de mídia se acumulam a uma taxa de 100–300 MB por usuário ativo por mês. A variação depende do comportamento do usuário. Usuários que postam muitas imagens ou vídeos geram mais dados. Usuários que seguem contas com muitas imagens fazem a instância baixar arquivos de mídia grandes. Um único vídeo de uma conta federada pode ter 50–100 MB.

O Mastodon não recodifica a mídia por padrão. Ele armazena o arquivo original conforme postado pelo servidor remoto. Isso significa que um vídeo em 4K enviado para uma instância remota será armazenado em tamanho original na sua instância após o primeiro usuário visualizá-lo.

Números Reais de Armazenamento por Tamanho de Instância

Os números a seguir são baseados em dados públicos de instâncias Mastodon e relatos de administradores. O uso real varia de acordo com os padrões de federação e atividade do usuário.

Instância Pequena: 10 Usuários Ativos

Uma instância pequena com 10 usuários ativos e configurações padrão geralmente usa 15–30 GB de armazenamento após seis meses. Os arquivos de mídia representam 12–25 GB. O banco de dados tem 1–2 GB. O crescimento mensal é de cerca de 2–5 GB.

Instância Média: 100 Usuários Ativos

Uma instância média com 100 usuários ativos e configurações padrão usa 150–300 GB após seis meses. Os arquivos de mídia representam 120–260 GB. O banco de dados tem 5–10 GB. O crescimento mensal é de cerca de 20–50 GB.

Instância Grande: 1.000 Usuários Ativos

Uma instância grande com 1.000 usuários ativos e configurações padrão usa 1,5–3 TB após seis meses. Os arquivos de mídia representam 1,2–2,6 TB. O banco de dados tem 30–60 GB. O crescimento mensal é de cerca de 200–500 GB.

Esses números assumem configurações padrão de retenção de mídia, que mantêm toda a mídia indefinidamente. Reduzir o período de retenção para 30 dias pode reduzir o armazenamento em 60–70% após o período inicial de 30 dias.

Passos para Estimar e Controlar os Custos de Armazenamento

Use estas etapas para medir o armazenamento atual da sua instância e aplicar controles de custo.

  1. Verifique o uso atual de armazenamento no painel de administração
    Vá em Admin > Configurações do Servidor > Retenção de Mídia. O painel mostra o armazenamento total de mídia, o número de anexos de mídia e a data da mídia em cache mais antiga.
  2. Calcule o custo por GB do seu provedor de hospedagem
    Verifique os preços do seu VPS ou servidor dedicado. Os preços típicos são $0,02–$0,10 por GB por mês para armazenamento em bloco. O armazenamento de objetos do Backblaze B2 custa $0,006 por GB por mês. O armazenamento padrão do Amazon S3 custa $0,023 por GB por mês.
  3. Defina uma política de retenção de mídia
    Em Admin > Configurações do Servidor > Retenção de Mídia, defina o número de dias para manter a mídia em cache. Um período de retenção de 30 dias equilibra a experiência do usuário com o custo de armazenamento. Altere o campo “Remover mídia em cache após” para 30.
  4. Migre a mídia para armazenamento de objetos
    Edite o arquivo .env.production para habilitar o armazenamento compatível com S3. Defina a variável S3_ENABLED=true e forneça o nome do bucket, chave de acesso e chave secreta. Execute RAILS_ENV=production bin/tootctl media refresh para mover a mídia existente para o novo armazenamento.
  5. Execute tarefas periódicas de limpeza de mídia
    Use o comando tootctl media remove para excluir mídia em cache mais antiga que um número especificado de dias. Exemplo: RAILS_ENV=production bin/tootctl media remove --days=30 remove mídia armazenada em cache há mais de 30 dias.
  6. Monitore o crescimento do armazenamento semanalmente
    Configure um cron job que execute du -sh /caminho/para/mastodon/public/system e envie o resultado por e-mail para você. Compare o valor a cada semana para detectar crescimento anormal.

Erros Comuns que Aumentam os Custos de Armazenamento

Manter as Configurações Padrão de Retenção Indefinidamente

A instalação padrão do Mastodon mantém toda a mídia em cache para sempre. Isso faz com que o armazenamento cresça sem limites. Altere o período de retenção para 30 ou 60 dias imediatamente após a configuração.

Não Usar Armazenamento de Objetos para Mídia

Armazenar mídia no disco local do servidor enche rapidamente a partição raiz. O armazenamento de objetos escala de forma independente e custa menos por GB para grandes volumes. Migre para S3 ou Backblaze B2 antes que a instância atinja 50 GB de mídia.

Ignorar a Amplificação da Federação

Um único usuário seguindo 500 contas remotas pode fazer sua instância baixar 500 imagens de perfil e as postagens mais recentes de cada conta. Limite o número de contas remotas que um novo usuário pode seguir durante a primeira semana.

Não Remover Anexos de Mídia Locais

Os anexos de mídia de usuários locais nunca são removidos automaticamente, a menos que você execute o comando tootctl media remove com a flag --include-media. Execute este comando semanalmente para manter a mídia local sob controle.

Item Armazenamento em Disco Local Armazenamento de Objetos (S3/B2)
Custo por GB por mês $0,02–$0,10 $0,006–$0,023
Limite de escalabilidade Capacidade do disco do servidor (normalmente 50–500 GB) Ilimitado (pague por GB)
Complexidade de configuração Nenhuma (padrão) Requer alterações no .env.production e criação de bucket
Controle de retenção de mídia Limpeza manual via tootctl Políticas de ciclo de vida automáticas podem excluir objetos antigos
Método de backup Snapshot do servidor ou rsync Replicação entre regiões ou versionamento

Auto-hospedar uma instância Mastodon exige gerenciamento ativo de armazenamento. Defina uma política de retenção de mídia de 30 dias, migre a mídia para armazenamento de objetos e execute tarefas de limpeza semanais. Essas três ações mantêm os custos de armazenamento previsíveis e evitam contas inesperadas de hospedagem. Para uma instância de 100 usuários, isso reduz os custos mensais de armazenamento de aproximadamente $15–$30 em disco local para $1–$3 no Backblaze B2.