1 pontos por GN⁺ 6 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • Para reduzir o peso de operar um Homelab pessoal, a configuração foi concentrada em um único servidor e em atualizações automáticas, eliminando a maior parte das tarefas rotineiras de manutenção
  • Ao consolidar vários servidores em um só, a complexidade do ambiente diminuiu, e a manutenção baseada na quantidade de servidores caiu 75%
  • O Raspberry Pi 4 fica com o Home Assistant OS, e a rede é deixada para as atualizações automáticas e agendadas da UniFi, reduzindo os pontos de administração manual
  • Os serviços Docker são atualizados por um crontab que executa docker compose pull e docker compose up -d uma vez por semana, enquanto o crontab do root é usado principalmente para backups
  • Sem emergências, a manutenção mensal leva cerca de 15 minutos, e adiar apt update e reinicializações quase não afeta os serviços de imediato

Infraestrutura simplificada

  • Os serviços do Homelab foram consolidados de vários equipamentos em um único servidor
    • Antes eram usados 4 servidores, mas agora os serviços ficam reunidos em um único servidor físico
    • Em vez de cluster, hipervisor ou nuvem híbrida, tudo roda em um único equipamento físico no porão
    • Com essa simplificação, o volume de manutenção por servidor caiu 75%
  • Há um Raspberry Pi 4 separado, mas o Home Assistant OS cuida das próprias atualizações, então a carga de administração é pequena
    • Tecnicamente, ele se aproxima de um servidor, mas na prática a experiência de uso é mais parecida com a de um dispositivo IoT automantido
  • Os equipamentos de rede operam em uma configuração UniFi em um mini rack
    • Inclui UniFi Dream Machine Pro, switch e vários APs
    • Como há suporte a atualizações automáticas e agendadas, também não é necessário mexer manualmente nos equipamentos de rede com frequência

Atualizações de software e backups automatizados

  • As atualizações dos serviços Docker são executadas semanalmente por uma única entrada de crontab no servidor
    • 0 0 * * 0 docker-update
    • docker-update executa sudo docker compose pull e sudo docker compose up -d em cada diretório sob ~/docker/*/
  • O crontab do usuário root é usado principalmente para backups
    • Gera um relatório diário do sistema
    • Gera dumps do PostgreSQL do Immich e do Piped
    • Faz backup com rsync para um pool ZFS dos arquivos do Plex, do servidor web, das configurações do Nginx, dos diretórios Docker e dos arquivos SSH
    • No backup dos diretórios Docker, exclui bancos de dados, caches, arquivos temporários e alguns caminhos de logs
  • As tarefas manuais restantes são executar apt update, apt upgrade, apt autoremove e reiniciar quando necessário
    • Essa tarefa leva cerca de 60 segundos
  • Sem emergências, o tempo de manutenção fica em torno de 15 minutos por mês
    • Mesmo sem acessar por SSH para atualizar durante um mês, não há impacto real nos serviços
    • É possível que nada quebre mesmo ficando mais de 6 meses sem mexer, mas não há planos de testar isso de propósito
  • A configuração atual oferece um equilíbrio entre privacidade, segurança e conveniência, mesmo em meio a uma agenda corrida

1 comentários

 
GN⁺ 6 시간 전
Opiniões no Lobste.rs
  • Também opero meu servidor doméstico de forma parecida
    Ativo upgrades de segurança automáticos no Debian, rodo tudo em contêineres rootless com versões fixadas, e o systemd gerencia tudo via Podman Quadlet
    O auto-update do Podman cuida das atualizações dos contêineres, e timers do systemd ficam responsáveis por tarefas recorrentes como backups e limpeza de imagens
    Só entro para reiniciar quando há upgrade de kernel ou quando aumento a versão de uma imagem; esse trabalho é feito pelo Ansible

    • A parte em que “versão fixada” e “Podman auto-update” aparecem juntas me confundiu
      Eu entendia que fixar a versão significava não buscar atualizações automaticamente, mas parece que, na prática, há atualizações acontecendo, então não sei bem se são alvos diferentes que estão sendo atualizados
    • Uso uma configuração quase igual há mais de 10 anos e faço upgrade para a versão stable mais recente a cada dois anos
      O único equipamento que gerencio separadamente é um roteador, que é OpenBSD, então faço upgrade a cada cerca de 6 meses, quando sai uma nova versão
      Ambos são estáveis a ponto de serem entediantes
  • Parecido, mas não atualizo nada até surgir alguma funcionalidade que eu queira
    O lado bom do software auto-hospedado é poder atualizar no meu próprio ritmo
    Se tudo está funcionando bem, só é acessado via Tailscale e não fica exposto diretamente à internet, então, tirando falha de hardware, dá para simplesmente deixar como está com estabilidade

    • Fico curioso sobre por que uma aplicação exposta diretamente à internet seria diferente de uma exposta via Tailscale
      Os dados que chegam à aplicação acabam sendo os mesmos, então não seria possível explorar as mesmas vulnerabilidades?
  • Se está nesse estado, é uma situação bem boa
    Eu também estou tentando chegar lá, mas ainda não consegui totalmente
    Upgrades major do Debian ainda exigem trabalho manual a cada 2 anos: "Issues to be aware of for trixie", "Obsolescence and deprecation", "Cleanup after the upgrade"
    Versões antigas do Ansible não conseguem lidar com sistemas Debian recentes, então, quando atualizo o servidor Debian, também preciso atualizar a versão do Ansible e, no fim, ajustar os playbooks para o novo Ansible
    Agora estou tentando reduzir isso com mais uso de contêineres Docker, mas acho difícil substituir completamente o Ansible
    Também há serviços online que não quero hospedar eu mesmo, como freeDNS e dynv6.net, e eles também introduzem mudanças incompatíveis de vez em quando
    Ainda assim, no geral, está bem aceitável
    Para ser sincero, a administração de um homelab “sem manutenção” acaba sendo delegada aos desenvolvedores open source do mundo todo que mantêm os softwares, pacotes e imagens Docker que usamos

  • Hesito em chamar minha configuração de “homelab”, mas é um NAS unRAID rodando vários contêineres Docker
    Um dos motivos pelos quais fico satisfeito em pagar pelo unRAID é que o suporte a Docker é razoavelmente bom, plugins permitem atualização automática de contêineres, e outras tarefas de manutenção também são bem simples

  • Pessoalmente, “lab” me soa mais como um lugar para experimentos, e me incomoda um pouco a ideia de que o experimento em si não precise ser mantido
    O uso de contêineres tem prós e contras
    Em alguns projetos, contêineres são um meio de distribuição de primeira classe, então dá para receber atualizações corretamente por esse caminho
    Mas muita gente parece rodar contêineres com manutenção duvidosa, e acho que muitos problemas vão surgir daí
    O ponto principal é identificar qual é o caminho oficial para receber atualizações no software que você usa
    Eu opero principalmente clones do RHEL com atualizações automáticas, e o Nagios me avisa quando é preciso reiniciar
    A maioria dos serviços está no RHEL ou no EPEL, então a manutenção é bem pequena

  • Para a manutenção do meu homelab, pyinfra ficou exatamente no nível certo de preguiça
    Dá para registrar o processo de configuração como código, especialmente útil para coisas como arquivos de configuração, e, se necessário, chamar apt sem ficar pensando em como eu faria isso no nix
    Não é uma ferramenta superinteligente, mas é melhor do que um único script de shell, e quero evoluir mais isso daqui para frente
    Para quem usa codificação agentic, há ainda o bônus de poder mostrar ao Claude os arquivos pyinfra e receber ajuda para depurar a configuração

  • Uso NixOS no servidor e atualizo de vez em quando, quando lembro
    Na maior parte das vezes se resume a nix flake update && nix run .#deploy, então não me preocupo muito

  • Estou numa situação muito parecida e, embora eu não goste de admitir, boa parte disso se deve, no fim, ao fato de a configuração ter ficado mais simples
    Antes eu gostava de ter uma stack de observabilidade completa, até com logs rotacionados, mas todos os aborrecimentos recentes por mais de 2 anos vieram de probleminhas causados por essa complexidade
    Coisas como disco enchendo por causa de logs e métricas
    A solução é muito fácil, mas hoje não quero mais lidar com esse tipo de coisa

  • Gosto do Watchtower para manter configurações docker-compose atualizadas
    https://hub.docker.com/r/nickfedor/watchtower
    As opções de configuração que permitem continuar subindo versões e, ao mesmo tempo, levar em conta em certa medida mudanças importantes são bem boas
    O sistema operacional base é Debian LTS com apenas atualizações automáticas ativadas, e entro para reiniciar quando sai um novo kernel
    Realmente não dá muito trabalho, e concordo com a estimativa de menos de 15 minutos por mês