Rotinas de Manutenção Essenciais¶
A manutenção preventiva e regular é a chave para um servidor doméstico estável, seguro e com bom desempenho a longo prazo. Estabelecer rotinas para as tarefas descritas abaixo ajudará a evitar problemas inesperados, a manter seu sistema protegido contra vulnerabilidades e a garantir que seus dados estejam seguros.
Pense nisso como as "revisões periódicas" do seu carro; elas são essenciais para a longevidade e confiabilidade.
1. Atualizações de Software e Sistema Operacional¶
Manter todo o software atualizado é uma das tarefas de manutenção mais críticas, principalmente por questões de segurança (aplicação de patches para vulnerabilidades conhecidas) e também para obter novas funcionalidades e correções de bugs.
Host Proxmox VE¶
- Frequência Recomendada: Mensalmente, ou imediatamente se houver alertas de segurança críticos para o Debian ou componentes Proxmox.
- Procedimento (no shell do host Proxmox, como
rootou comsudo):- Leia as Notas de Release (Importante para atualizações maiores): Antes de grandes atualizações de versão do Proxmox VE (e.g., de 7.x para 8.x), é crucial verificar o fórum do Proxmox e as notas de release oficiais para quaisquer problemas conhecidos, breaking changes, ou procedimentos de upgrade específicos.
- Faça Backup das VMs: Certifique-se de que seus backups de VMs (verificação de backups e Estratégia de Backup) estão atualizados e funcionais antes de uma atualização do host.
- Execute a Atualização:
# Sincroniza a lista de pacotes com os repositórios apt update # Simula a atualização para ver o que será alterado (altamente recomendado) apt full-upgrade --simulate # ou # apt dist-upgrade --simulate # Realiza a atualização completa do sistema. # 'full-upgrade' (ou 'dist-upgrade') lida melhor com dependências e remoção # de pacotes obsoletos do que um simples 'apt upgrade'. apt full-upgrade -y - Leia Atentamente a Saída: Durante o
apt full-upgrade, preste atenção a quaisquer mensagens sobre pacotes que serão removidos, mudanças de configuração importantes, ou prompts que exijam sua confirmação. - Reboot do Host Proxmox (Geralmente Necessário): Se a atualização incluir um novo kernel Linux, atualizações do
pve-kernel, QEMU, ou outras bibliotecas de sistema críticas, um reboot do host Proxmox será necessário para que as mudanças tenham efeito completo. O sistema geralmente informa se um reboot é recomendado. Planeje este reboot para um momento de baixa utilização dos seus serviços. - Verificações Pós-Atualização e Pós-Reboot:
- Confirme se a interface web do Proxmox está acessível e funcionando.
- Verifique se todas as suas VMs iniciam corretamente.
- Confirme se os serviços do host (ZFS, NFS, rede) estão operacionais.
- Examine os logs do sistema (
journalctl -xe,dmesg) no host Proxmox por quaisquer novos erros ou avisos.
- Repositórios: Lembre-se que as atualizações do Proxmox virão do repositório
pve-no-subscription, que foi configurado pelo Ansible.
Máquinas Virtuais (VMs Ubuntu)¶
unattended-upgrades(Para Segurança):- Este pacote, instalado e configurado pelo role Ansible
common(Seção 4.1 do Manual de Implementação), deve cuidar da aplicação automática de atualizações de segurança para os pacotes do sistema operacional nas suas VMs Ubuntu.
- Este pacote, instalado e configurado pelo role Ansible
- Verificação dos Logs do
unattended-upgrades(Periodicamente):- Conecte-se a cada VM via SSH e verifique os logs para garantir que as atualizações automáticas estão ocorrendo sem erros:
/var/log/unattended-upgrades/unattended-upgrades-dpkg.log
- Conecte-se a cada VM via SSH e verifique os logs para garantir que as atualizações automáticas estão ocorrendo sem erros:
- Atualizações Manuais de Todos os Pacotes (Opcional, com mais controle):
- Se você preferir controlar quando todos os pacotes são atualizados (não apenas os de segurança), ou se
unattended-upgradesnão estiver configurado para cobrir todos os repositórios (e.g., repositórios de terceiros que você possa ter adicionado): - Reboot da VM: Um reboot da VM pode ser necessário após atualizações de kernel dentro da VM. O sistema geralmente avisa se um reboot é recomendado (e.g., o arquivo
/var/run/reboot-requiredexistirá).
- Se você preferir controlar quando todos os pacotes são atualizados (não apenas os de segurança), ou se
2. Atualizações de Imagens Docker e Aplicações Containerizadas¶
Manter suas imagens Docker e as aplicações rodando dentro dos containers atualizadas é tão crucial quanto atualizar os sistemas operacionais.
Consulte a seção Atualização Segura de Componentes Críticos da Infraestrutura para detalhes sobre como atualizar Traefik, Authelia e outras aplicações Docker individuais, incluindo os avisos de versão nova do Diun e o processo manual via Portainer (ou pelo Ansible, no caso da stack core).
Princípios Chave para Atualizar Containers:
1. Leia as Notas de Release da Aplicação/Imagem: Verifique por breaking changes ou passos de migração.
2. Backup dos Volumes de Dados: Antes de atualizar um container crítico, faça um snapshot ZFS do seu volume de dados.
3. Use Tags de Versão Específicas: Em seus docker-compose.yml, prefira tags de versão específicas (e.g., app:v1.2.3) em vez de app:latest para atualizações mais controladas. Atualize a tag manualmente quando quiser mudar para uma nova versão.
4. Teste Após a Atualização: Verifique os logs do container e a funcionalidade da aplicação.
3. Revisão Regular de Logs¶
Logs são seus olhos e ouvidos para o que está acontecendo no seu sistema. Uma revisão periódica pode ajudar a detectar problemas antes que se tornem críticos.
- Onde Encontrar Logs Detalhados: Consulte a seção "Ferramentas Essenciais de Diagnóstico" no Guia de Troubleshooting Comum.
- O Que Procurar:
- Mensagens de
ERROR,WARN(Aviso),FATAL,CRITICAL. - Tentativas de login falhas (nos logs do Authelia, SSH via
/var/log/auth.lognas VMs/host, logs de UIs de aplicações). - Padrões incomuns de tráfego de rede ou atividade de disco (via sua stack de monitoramento).
- Erros de disco, sistema de arquivos ou ZFS (
dmesg,zpool status, logs do sistema). - Certificados SSL prestes a expirar (embora Traefik com Let's Encrypt deva renovar automaticamente).
- Mensagens de
- Frequência Sugerida:
- Diariamente (Rápida Verificação): Logs de aplicações críticas, logs do Authelia, dashboard de monitoramento.
- Semanalmente (Mais Detalhada): Logs do sistema, logs de backups, status do ZFS scrub.
4. Monitoramento Contínuo da Saúde do Sistema¶
Utilize ativamente a Stack de Monitoramento (Prometheus, Grafana, Loki) — veja Deploy de Apps.
- Dashboards Grafana: Configure e consulte regularmente dashboards para visualizar:
- Uso de CPU, RAM, Espaço em Disco, Swap (para o Host Proxmox e cada VM).
- Tráfego de Rede (por interface, por VM).
- Status e Performance do Pool ZFS (saúde, capacidade, IOPS, latência, ARC stats).
- Métricas do Alloy de cada sistema (
node_*) e dos containers (container_*). - Status dos containers no painel Homepage e sondas do blackbox-exporter (ver Painel e Notificações).
- Métricas do Cloudflare Tunnel.
- Alertas (Grafana Alerting → n8n → Telegram):
- Configure alertas para condições críticas que exigem sua atenção imediata:
- Uso de disco acima de um limite (e.g., 85-90%).
- Uso de CPU ou RAM consistentemente muito alto.
- Serviço ou VM offline.
- Pool ZFS degradado ou com erros.
- Falha em backups.
- Configure alertas para condições críticas que exigem sua atenção imediata:
- Frequência: Verifique dashboards importantes diariamente ou configure alertas para ser notificado proativamente sobre problemas.
5. Verificação da Saúde do Pool ZFS (Host Proxmox)¶
Seu pool ZFS /data é o coração do armazenamento de dados.
- Verificação de Status Regular:
Verifique se o
statedo pool estáONLINEe se não há erros de leitura (READ), escrita (WRITE), ou checksum (CKSUM) listados para os discos. - Scrub Agendado:
Um "scrub" ZFS lê todos os dados no pool e verifica sua integridade contra os checksums, corrigindo erros em pools redundantes (como nosso espelho) se possível.
- Recomendação: Agende um scrub para rodar mensalmente.
- Comando para Iniciar Manualmente:
sudo zpool scrub data - Verificar Status do Scrub:
sudo zpool status data(mostrará o progresso). - Agendar com
cron(e.g.,sudo crontab -eno host Proxmox):0 2 1 * * /sbin/zpool scrub data # Roda às 2 AM no primeiro dia de cada mês
- Alertas de Saúde do ZFS:
- Um script simples de verificação (
zpool status -x) pode ser agendado no host e avisar peloscripts/notify.sh(ver snapshots ZFS na página de backups); o alertazfs-degradadodo Grafana já cobre o pool degradado. - Agende este script para rodar com frequência (e.g., a cada poucas horas ou diariamente).
- Um script simples de verificação (
6. Verificação e Teste de Backups¶
A Rotina de Manutenção MAIS IMPORTANTE!
Seus backups são sua última linha de defesa contra a perda de dados. Um backup que não foi testado é um backup em que você não pode confiar.
- Conclusão dos backups: você não precisa olhar todo dia. Os dumps dos bancos (
backup-<nome>-db) e o backup do host (backup-restic) avisam pelo alertatimer-falhouquando falham (backup). Uma vez por mês, confira no host Proxmox que os dois repositórios têm backups recentes: - Testes de restauração: a cada três meses, siga os testes de restauração: um arquivo de cada dataset vindo da nuvem, um dump de banco num Postgres descartável e o
checkde domingo sem erro. Anote o que faltou na página e corrija.
Estabelecer e seguir estas rotinas de manutenção, mesmo que pareçam trabalhosas inicialmente, é um investimento fundamental na estabilidade, segurança e longevidade do seu servidor doméstico. Automatize o que puder (atualizações, backups, verificações de saúde) e reserve tempo para as verificações manuais e testes.
Scripts de Validação¶
Ferramentas de diagnóstico versionadas em server/scripts/validation/:
| Script | Para que serve |
|---|---|
scripts/validation/validate_infrastructure.sh |
Valida a infraestrutura inteira após um deploy (hosts, serviços, stacks). |
scripts/validation/check_nfs_permissions.sh |
Diagnostica e corrige problemas comuns de permissão nos compartilhamentos NFS. |
scripts/validation/check_yaml_integrity.py |
Verifica a sintaxe de todos os YAML de ansible/ e docker/. |
A coerência entre esta wiki e o server/ é verificada por python tools/dev.py check (veja o AGENTS.md na raiz do repositório).