O que você leva
Um handbook com scripts que você pode rodar, para quem publica um app Node ou Go (com SQLite ou Postgres) em um único servidor Debian ou Ubuntu e quer que ele aguente deploys, reboots e erros.
- 15 capítulos curtos e um runbook de uma página para imprimir ("o site caiu" e "restaurar do backup").
- 17 scripts aprovados no shellcheck: criar usuário, reforçar o sshd, firewall, atualizações de segurança automáticas, deploy com pasta de releases e rollback automático, rollback, backup com restic com dumps consistentes de SQLite e Postgres, drill de restauração, checagens de disco e de saúde, swap, auditoria de segredos, uma demonstração de migration e um drill de recuperação de desastre em Docker.
- Templates de configuração: unit do systemd, Caddyfile, drop-in do sshd, limites do journald, logrotate, cron e arquivos de env.
- Checklists para imprimir: primeiro dia, semanal, antes do deploy e antes de sair de uma VPS só.
Capítulos que a maioria dos guias pula: notas de produção para Postgres (o que o pg_dump entrega e o que não entrega), limites de log e de journald para que um disco cheio não derrube o servidor, memória, swap e o OOM killer, migrations expand/contract seguras para deploy, segredos em uma máquina só e critérios claros para saber quando sair de uma VPS única.
O drill de recuperação, com cronômetro
Um script monta um servidor de "produção" (app, SQLite, Postgres, uploads), faz backup dele com restic para um volume fora do servidor, destrói o servidor, reconstrói tudo em um container Debian limpo e confere se os dados estão intactos (contagem de linhas e um checksum sobre todos os uploads).
| Poucos dados | Mais dados | |
|---|---|---|
| Dados | 100k linhas por banco, 200 x 100 KB de uploads | 2M linhas por banco, 500 x 1 MB de uploads |
| Recuperação total por script | 29.8 s | 34.3 s |
Instalação via apt | 24.1 s | 23.0 s |
restic restore | 1.6 s | 3.3 s |
pg_restore | 2.6 s | 4.9 s |
Uma execução de cada, em um notebook arm64 com Docker Desktop. A instalação dos pacotes variou de 21 s a 57 s entre as execuções, então os totais ficaram entre cerca de 27 s e 62 s. Criar um servidor de verdade no provedor e trocar o DNS não entram na conta.
O que foi verificado, e como
Cada script e cada capítulo rodou em containers Debian 12 limpos:
- um sshd e um cliente ssh de verdade (o login por chave funciona; o login como root e por senha é recusado)
- ufw, testado com tráfego real entre dois containers
- systemd como PID 1: a unit é validada, reinicia depois de um
kill -9, assume uma nova release depois da troca do symlink e aplica oMemoryMax - o pacote do Caddy no Debian fazendo proxy para o app e devolvendo 502 quando o app está parado
- backups e restaurações com restic e PostgreSQL 15, incluindo os casos de falha (banco corrompido, senha errada, dumps desatualizados)
- limites do journald e do logrotate, disco cheio, OOM kill, migrations em SQLite e Postgres
Um comando (verify/run.sh, exige Docker) refaz toda a verificação na sua máquina.
Escopo
Um servidor e um app. Sem autoscaling, sem Kubernetes, sem multirregião. Se você precisa disso, o último capítulo mostra como reconhecer a hora.
Perguntas frequentes
Em que formato vem?
Markdown, shell scripts e arquivos de configuração. Leia onde quiser e copie os comandos. Sem DRM de PDF e sem conta.
Serve só para Debian?
Os comandos são de Debian e Ubuntu, verificados no Debian 12.
Qual a diferença para o VPS Deploy & Backup Kit?
O kit é um pacote de scripts testados (deploys blue/green, backups, alertas). O handbook traz o conhecimento e os scripts em volta: preparar o servidor, systemd, HTTPS, logs, memória, migrations, segredos e o drill de recuperação. Os dois se sobrepõem no básico de deploy e backup.
Preciso de Docker?
Só para refazer a verificação. Os scripts em si rodam em um servidor comum.
Qual é a licença?
Uso nos seus próprios servidores e no seu time. Não revenda nem redistribua os arquivos.
Changelog
- 0.2.0: capítulos 1 a 3 e 7 verificados em containers, drill de recuperação de desastre cronometrado, capítulos novos sobre Postgres, logs, memória, migrations, segredos e sair de uma VPS só, 17 scripts testados, runbook.
- 0.1.0: primeira release.
Ler mais
- How to write a restore runbook you can follow at 3 a.m. (em inglês)
- systemd or pm2 for a small Node app on one VPS? (em inglês)
- SSH, ufw and fail2ban basics for a single VPS (em inglês)
- When a restore succeeds and hands you the wrong data (em inglês)
- Monitor one VPS without Prometheus, Grafana or a stack (em inglês)
- Find what filled your VPS disk and keep it from happening (em inglês)
- Harden a fresh Debian VPS in the first hour, step by step (em inglês)
- I destroyed my server on purpose and timed the recovery (em inglês)
- Caddy or nginx for a one-person VPS stack, compared (em inglês)
Quero este
Pagamento, impostos e notas fiscais ficam com a Polar, que atua como merchant of record. Você recebe o link de download assim que concluir a compra.