14 pontos por GN⁺ 2025-10-07 | 3 comentários | Compartilhar no WhatsApp
  • Construção de um armazenamento S3 próprio com notebook Framework e JBOD, operando 10 TB a baixo custo e com funcionamento estável por 4 meses sem manutenção
  • Uso de um notebook Framework usado, sem tela, com ZFS e garage S3 instalados como servidor doméstico, servindo de grande volume de armazenamento para o projeto de rastreamento de SDKs da AppGoblin
  • Após 4 meses sem sequer olhar para o servidor, ao fazer login havia 10 TB em uso e uma atualização pendente aguardando reinicialização, e depois de reiniciar tudo continuou funcionando normalmente
  • O processo de upgrade do garage S3 da v1 para a v2 também foi concluído sem problemas, confirmando uma experiência de operação estável
  • Havia no início problemas com uma configuração não padrão de ZFS conectando notebook e JBOD por USB, mas isso foi resolvido ao mover os metadados para o armazenamento interno do notebook

Contexto e motivação do projeto

  • Decisão de hospedar o próprio S3 há 5 meses
    • Em andamento um trabalho de rastreamento de SDKs dos 100 mil principais apps Android e iOS da AppGoblin
    • Era necessário muito espaço de armazenamento, mas com foco em reduzir custos
    • Em vez de usar S3 em nuvem tradicional, foi escolhida uma abordagem self-hosted

Configuração de hardware

  • Uso de um notebook Framework
    • Compra barata de um notebook Framework usado e sem tela
    • Como era um modelo mais antigo, ele se mostrou adequado para uso como servidor doméstico
    • Aproveitamento da portabilidade e do baixo consumo de energia do notebook
  • Adição de um JBOD (Just a Bunch of Disks)
    • Array de discos externo para armazenamento de grande capacidade
    • Conectado ao notebook via USB

Stack de software

  • Sistema de arquivos ZFS
    • Oferece integridade de dados e recursos de snapshot
    • O JBOD foi configurado como um pool ZFS
  • garage S3
    • Solução leve e distribuída de armazenamento compatível com S3
    • Projeto open source desenvolvido pela Deuxfleurs
    • Fornece compatibilidade com a API do S3

Operação sem manutenção por 4 meses

  • Depois da instalação, o servidor ficou 4 meses sem qualquer atenção
    • Mesmo durante viagens, trabalho e a correria do dia a dia, o S3 continuou sendo usado continuamente
    • Não houve necessidade de pensar no servidor
  • O que foi encontrado ao fazer login
    • 10 TB de armazenamento estavam em uso
    • O sistema aguardava pacientemente uma reinicialização para aplicar upgrades
  • Resultado da reinicialização
    • A reinicialização foi feita com certa tensão
    • Tudo voltou a funcionar normalmente, trazendo alívio

Upgrade do garage S3

  • Upgrade da v1 para a v2
    • Foi encontrado um upgrade importante de versão pendente
    • O processo de upgrade ocorreu sem problemas
    • A avaliação foi de que foi um ótimo fim de semana

Alertas técnicos e solução

  • Reconhecimento de uma configuração não padrão de ZFS
    • Conectar notebook e JBOD por USB é um caso de uso um pouco fora do padrão para ZFS
    • Houve alertas da comunidade no Reddit sobre isso
  • Problema inicial
    • Surgiram problemas no ZFS quando o garage fazia muitas operações de leitura e escrita
    • Na configuração inicial, os metadados do SQLite também estavam armazenados no JBOD/ZFS
  • Solução do problema
    • Os metadados foram movidos para o armazenamento interno do notebook
    • Depois disso, os problemas com ZFS foram resolvidos e o sistema passou a operar de forma estável

3 comentários

 
shakespeares 2025-10-07

Só o fato de tentar fazer self-hosting já é impressionante.

 
rtyu1120 2025-10-07

Embora a faixa de preço seja bem diferente, parece que a placa-mãe da Framework se tornou a Raspberry Pi dos tempos modernos.

 
GN⁺ 2025-10-07
Comentários do Hacker News
  • Se você tiver só a placa-mãe, sem tela, também dá para colocá-la em um gabinete dedicado como o da CoolerMaster link do gabinete Framework da CoolerMaster
    • Eles são realmente muito legais, mas o que eu queria destacar é que este notebook em si funciona muito bem, não faz barulho de ventoinha e quase não esquenta, além de ter um consumo de energia muito bom quando a carga é baixa; acho que essas características fazem com que ele combine perfeitamente com esse uso
    • Compartilhando o link do gabinete no Marketplace da Framework link do gabinete no Marketplace da Framework já coloquei uma placa-mãe antiga nesse gabinete depois de fazer upgrade, usei como desktop PC preso atrás do monitor com montagem VESA e agora estou usando como HTPC (PC de home theater), estou muito satisfeito
    • Um mini rack de 10 polegadas também é uma boa alternativa DeskPi RackMate mini rack de 10 polegadas
  • Fiquei mais curioso com a parte técnica; não porque eu queira reproduzir exatamente igual, mas porque queria saber como foi feita a configuração do pool ZFS e se o Garage configura tudo sozinho, se há espelhamento envolvido ou se é apenas uma estrutura em que pools individuais sincronizam entre discos diferentes. Quero montar um NAS barato com 2 discos USB e estou na dúvida entre fazer espelho com ZFS, criar 2 pools independentes e usar um como backup do outro, ou partir para SnapRAID e misturar discos antigos para maximizar o aproveitamento do hardware
    • Se você está em dúvida entre espelho ZFS e pools independentes, com espelho você ganha proteção contra bit rot e recuperação automática (scrub), além de leitura mais rápida. Se tiver só dois HDs de tamanho parecido, também dá para adicionar um ZDEV espelhado com ZFS a um pool existente ou criar um novo pool de backup. Só os dois discos que entram no espelho precisam ter tamanho semelhante; não é necessário que todos os discos do pool sejam idênticos
    • O Garage não é preso a uma forma específica de fazer isso e funciona perfeitamente mesmo sem ZFS. Instalei o ZFS separadamente no Ubuntu e depois instalei o Garage. O ZFS foi configurado de forma simples, como RAID5/raidz1. Não sou especialista, mas como a capacidade útil fica perto de 33%, estou reconsiderando essa parte. Nessas reflexões, lembrei de um comentário quase mágico que vi no HN anos atrás: “Para alguns dados importantes, eu aceito perder algumas horas, então em vez de espelho uso dois pools independentes de 1 disco; tiro snapshots do pool principal a cada poucas horas e envio para o pool de backup com zfs send/recv”. Esse fluxo parece combinar melhor com o meu uso. A ideia original do RAID5 era me proteger contra a falha de um disco, mas montar a mesma estrutura em outro local custa bastante (~$1,000 USD), então ainda não consegui fazer isso
  • Foi a primeira vez que ouvi falar de Garage e achei bem interessante. No trabalho uso S3 com frequência e, para backups do meu homelab pessoal, tenho usado borg com borgbase. Fiquei pensando se daria para usar garage agora, ligando um nó local e o AWS Glacier, para ter armazenamento redundante barato para uma biblioteca grande de mídia, e também queria saber se todo o tráfego de leitura acontece a partir do nó local. No TFA não há muito relato de uso real do Garage, então queria ouvir a opinião de quem realmente o usa para self-hosting. Edit: descobri que não dá para usar com Glacier, porque ele precisa estar montado como sistema de arquivos na instância EC2 que executa o binário do Garage. É melhor simplesmente agendar backups para o Glacier com borg/restic
    • Outra alternativa é o ZeroFS, que pode armazenar dados diretamente no S3 ZeroFS GitHub
    • Você pode integrar com AWS S3 e aplicar políticas agressivas de ciclo de vida para mover os dados automaticamente para o Glacier após um curto período. Já montei isso em um emprego anterior: fazia com que os dados fossem do padrão para o Glacier depois de alguns dias. No seu caso, bastaria definir X como 1 dia
    • Nunca precisei lidar com o Garage diretamente; ferramentas de API S3 como awscli, s3cmd, rclone e Boto3 já foram suficientes para usar tudo normalmente. O Garage foi fácil de configurar com apenas alguns comandos e, depois de rodar uma vez, continuou funcionando sozinho por 4 meses. Fiquei muito satisfeito nesse aspecto
  • Eu só queria compartilhar um caso silencioso e bem-sucedido de self-hosting
    • Fiquei curioso se esse JBOD é composto por SSDs, porque com essa quantidade de HDDs ele pode ficar bem barulhento
    • Antigamente, era curioso pensar que “ter um computador próprio e rodar qualquer coisa nele” passaria a ser chamado de ‘self-hosting’. Dá a sensação de que vivemos numa era em que todos os computadores agora são de outra pessoa, e por isso é preciso destacar quando você realmente usa o seu próprio
  • Acho que eu me sentiria mais seguro com um Dell T30 antigo e 2 Seagate Exos de 10 TB em ZFS RAID1 (espelho). Com a abordagem proposta eu ficaria nervoso o tempo todo, mesmo com backup diário. O Dell T30 também não me deixa totalmente tranquilo, mas pelo menos é fácil conectar os discos em outro dispositivo e há menos preocupação com cabos se soltando. Ainda assim, obrigado por apresentar o Garage, parece bem interessante
    • Também uso ZFS há bastante tempo e cheguei à conclusão de que, para muitos dados, consigo tolerar algumas horas de perda. Então, em vez de espelho, criei dois pools independentes de 1 disco: snapshots automáticos no pool principal a cada poucas horas ⇒ replicação para o pool de backup com zfs send/recv. Isso permite misturar discos com flexibilidade (por exemplo, um SSD e um HDD), embora seja preciso aceitar concessões em velocidade de leitura e tempo de disponibilidade. Também dá para usar um HD externo como disco de backup e conectá-lo a cada poucos dias. Para dados realmente importantes, tenho um pool RAID espelhado separado. Muitos textos sobre ZFS focam em RAID, mas acho que faltam informações sobre essa configuração mais minimalista de hardware mencionada acima
  • Não sei se o Framework acrescenta algo de especial aqui; eu hospedo algo num nível parecido com um RPi5 com alguns discos conectados. Uso lvm2 em vez de ZFS, e funciona bem no RPi5. O ZFS usa RAM demais e não é adequado para esse caso de uso
  • Adoro o Garage, ele simplesmente funciona. Estou rodando Garage em alguns Odroid HC2 antigos para backups do Velero no k8s e, depois da configuração inicial, ficou abandonado lá sem precisar de manutenção e se mantém funcionando sozinho
  • Fico feliz em ver o Garage ser mencionado; eu também fiquei em dúvida entre Garage e SeaweedFS quando estava escolhendo uma alternativa self-hosted compatível com S3. Na minha experiência, o SeaweedFS foi mais conveniente porque exigiu menos configuração manual do que o Garage
  • Excelente resultado. Eu também estou tentando reaproveitar a placa-mãe do meu Framework depois de trocar por outra, para usá-la só como NAS de backup. Queria ouvir mais detalhes sobre o setup de zfs; quero usar apenas como espaço para snapshots, mas fico preocupado com a velocidade da conexão USB e com a possibilidade de perder dados se desconectar sem querer
  • Há uma discussão anterior sobre o Garage Discussão anterior no Hacker News