Meta descrição: Aprenda backup automático PostgreSQL n8n para S3 criptografado na VPS e opção Backblaze B2, com cron, GPG e restauração simples.

Manter o n8n rodando em uma VPS é libertador: você tem controle total, pode instalar nodes da comunidade e não depende de limites de execuções. Mas essa liberdade vem com uma responsabilidade que muita gente só percebe depois do primeiro susto: backup do banco de dados.
Quando o n8n usa PostgreSQL (o cenário mais comum em produção), é o banco que guarda praticamente tudo que importa: credenciais, execuções, histórico, configurações e dados internos de workflows. Se esse banco corromper, se o disco da VPS falhar ou se você fizer uma atualização ruim, pode ser que você “perca o n8n”, mesmo que os containers ainda estejam de pé.
Este guia é um passo a passo bem prático para você implementar backup automático PostgreSQL n8n para S3 criptografado. A ideia é simples e robusta:
- Gerar o dump do PostgreSQL (de forma consistente);
- Agendar o processo na VPS via cron para rodar sozinho;
- Criptografar o backup com GPG antes de sair do servidor (reduzindo risco de vazamento);
- Enviar para um storage compatível com S3, incluindo o Backblaze B2, e manter retenção/boas práticas.
Ao final, você vai ter uma rotina que roda todos os dias (ou no intervalo que fizer sentido), com arquivos criptografados, organizados e com um caminho claro de restauração. O objetivo é que você consiga recuperar seu n8n mesmo no pior cenário, sem depender de “eu acho que tinha um snapshot”.
Palavras-chave que você vai ver na prática: backup PostgreSQL do n8n para Backblaze B2, criptografar backup PostgreSQL com GPG, agendar backup PostgreSQL na VPS via cron.
Por que e quando fazer backup automático do PostgreSQL do n8n
Backup não é um “extra” em produção — é parte do produto. No caso do n8n, o PostgreSQL vira o coração da operação: se você usa o n8n para integrações, agentes de IA, automações de vendas, rotinas internas ou atendimento, perder o banco significa perder continuidade.
O que você realmente perde se não tiver backup
Mesmo que você mantenha os workflows exportados em JSON, isso raramente resolve tudo. Sem o PostgreSQL, você pode perder:
- Credenciais e tokens (muitas vezes rotacionar isso dá trabalho);
- Histórico de execuções (essencial para auditoria e debug);
- Dados internos do n8n (configurações, metadados e estado de algumas execuções);
- Pistas para troubleshooting: sem logs e histórico, fica mais difícil entender falhas.
Principais cenários de risco (mais comuns do que parecem)
1) Falha de disco/arquivos na VPS: pode acontecer com qualquer provedor.
2) Erros humanos: um docker compose down -v no lugar errado, uma limpeza de volume, uma migração apressada.
3) Atualizações e mudanças de versão: atualizar n8n, PostgreSQL, sistema operacional ou trocar arquitetura (ex.: standalone → queue mode) pode dar incompatibilidade.
4) Ataques e vazamentos: se alguém acessar sua VPS, além de causar indisponibilidade, pode comprometer dados. Aqui entra a importância do backup criptografado.
Quando automatizar (e com que frequência)
O ideal é automatizar desde o primeiro dia em que o n8n “passa a valer dinheiro” para você. Para iniciantes, uma boa regra é:
- Diário: para a maioria dos projetos pequenos e médios.
- A cada poucas horas: se você tem alto volume de execuções/atualizações e não pode perder mudanças recentes.
Além da frequência, pense em retenção (quantos dias manter) e em teste de restauração. Um backup que nunca foi testado é só uma sensação de segurança.
O que significa “backup bom” neste contexto
Para o objetivo de backup automático PostgreSQL n8n para S3 criptografado, um backup bom precisa ser:
- Automático (sem depender de alguém lembrar);
- Externo (fora da VPS);
- Criptografado (antes de enviar);
- Versionado/retido (vários pontos no tempo);
- Restaurável (procedimento claro e testado).
Se você seguir os próximos passos, vai cobrir todos esses pontos e reduzir muito a chance de ficar “na mão”.
🤖 Indicação que faz sentido se você usa n8n “pra valer”: Formação Agentes de IA (n8n)
Se você está chegando no ponto de se preocupar com backup automático do PostgreSQL do n8n, é um sinal de que seu n8n já está virando infraestrutura de verdade (e não só testes). Nesse momento, faz muita diferença ter um caminho guiado para montar automações e agentes com padrão mais profissional — inclusive em temas como instalação em VPS, integrações e boas práticas.
Uma opção que eu recomendaria como recomendaria para um amigo é a Formação Agentes de IA (n8n) da Hora de Codar: ela é bem mão na massa, voltada para iniciantes, e já tem 8.100+ alunos, 11+ cursos, 221+ aulas e 21+ projetos (com acesso vitalício e atualizações).
Se quiser dar uma olhada no conteúdo e ver se encaixa no que você quer construir com n8n e agentes de IA, o link é este:
https://app.horadecodar.com.br/lp/formacao-agentes-de-ia-n8n?utm_source=blog
Preparando o ambiente na VPS: pré-requisitos, ferramentas e configurações
Antes de pensar em cron, S3 e GPG, vale alinhar o básico: você precisa conseguir gerar um dump consistente do PostgreSQL e ter uma forma segura de enviar arquivos para um storage externo.
1) Identifique como o PostgreSQL do n8n está rodando
Os dois cenários mais comuns:
- PostgreSQL em container (Docker Compose), junto do n8n;
- PostgreSQL instalado direto na VPS.
Este guia funciona nos dois casos, mas os comandos mudam levemente. Em produção com Docker, normalmente você vai usar docker exec para rodar o pg_dump “de dentro” do container do banco.
2) Defina um diretório de backup e permissões
Crie um caminho padrão para armazenar temporariamente os arquivos antes do envio:
- Exemplo:
/opt/backups/n8n-postgres
Garanta que o usuário que roda o cron (geralmente root ou um usuário dedicado) tenha permissão de escrita. Também é uma boa prática não deixar esse diretório exposto em pastas servidas por web server.
3) Ferramentas essenciais
Você vai precisar de três coisas na VPS:
- pg_dump (cliente do PostgreSQL) para gerar o backup;
- GPG para criptografia;
- Cliente S3 para envio (duas opções comuns: AWS CLI ou rclone).
Em distribuições Debian/Ubuntu, você normalmente instala com apt. Em geral:
postgresql-client(ou versão compatível)gnupgawscliourclone
Atenção: o pg_dump deve ser compatível com a versão do seu PostgreSQL. Se você usa Postgres 15, tente usar cliente 15 para evitar surpresas.
4) Variáveis sensíveis e “onde guardar senhas”
Evite colocar senha do banco e chaves de storage diretamente em comandos soltos. Para backups via script, você tem três abordagens seguras:
- Usar arquivo
.envcom permissões restritas e carregar no script; - Usar variáveis exportadas para o ambiente do cron;
- Usar arquivos de configuração dedicados (por exemplo,
~/.aws/credentialspara AWS CLI).
Em todos os casos, o ponto é o mesmo: permissão 600, dono correto, e nada de deixar tokens em repositório.
5) Estruture naming e retenção desde já
Isso evita bagunça depois. Um padrão bom:
- Nome do sistema + banco + data/hora UTC
- Ex.:
n8n-postgres_2025-12-16_0300UTC.dump(ou.sql/.tar)
E já pense em retenção (ex.: manter 7, 14 ou 30 dias). Você pode fazer isso no storage (Lifecycle Rules) ou via script.
Com o ambiente pronto, no próximo passo você vai ver como fazer o backup PostgreSQL do n8n na prática e como agendar backup PostgreSQL na VPS via cron de forma confiável.
Vídeo recomendado: instalar n8n na VPS (base para seu setup de backup)
Se você ainda está montando seu ambiente (ou quer revisar a instalação), este vídeo ajuda a deixar o n8n rodando de forma rápida em uma VPS — o que facilita bastante na hora de padronizar volumes, banco PostgreSQL e, claro, implementar backups automáticos depois.
Assista aqui e aproveite para conferir o setup completo na prática:
Link direto: https://www.youtube.com/embed/VCKzXFk_XjM?si=eOBTMrjZNPj3q07Z
Como realizar backup PostgreSQL do n8n: comandos, agendamento via cron e automação
Aqui a meta é deixar um processo repetível: gerar dump, registrar logs e rodar em horário fixo. Vou mostrar uma forma bem “pé no chão” que funciona na maioria das VPS.
1) Gerando o dump com pg_dump (recomendado)
Para PostgreSQL, o comando padrão é pg_dump. Em produção, muita gente prefere o formato custom (-F c), porque ele é mais flexível para restaurar (permite pg_restore e ajustes finos).
Cenário A: PostgreSQL rodando direto na VPS
A ideia geral do comando:
- escolher host/porta/usuário/banco
- gerar um arquivo
Exemplo (modelo):
pg_dump -h 127.0.0.1 -p 5432 -U NOME_USUARIO -F c -f /opt/backups/n8n-postgres/n8n.dump NOME_BANCO
Você pode definir a senha via variável PGPASSWORD dentro do script (com cuidado) ou via .pgpass.
Cenário B: PostgreSQL em container
Aqui você geralmente executa dentro do container do Postgres:
docker exec -t CONTAINER_POSTGRES pg_dump -U NOME_USUARIO -F c NOME_BANCO > /opt/backups/n8n-postgres/n8n.dump
Dica prática: evite depender de nomes “quebradiços”. Se possível, use um nome fixo no docker-compose.yml.
2) Criando um script de backup (base para automação)
Em vez de colocar tudo dentro do cron, o ideal é um script, por exemplo:
/usr/local/bin/backup-n8n-postgres.sh
Esse script geralmente faz:
- cria pasta se não existir
- gera arquivo com timestamp
- grava log
- valida se o arquivo saiu com tamanho > 0
Um detalhe importante: se o backup falhar, o cron “até roda”, mas você fica sem perceber. Então vale redirecionar a saída para log e (se possível) integrar com alerta depois (Telegram/Slack/e-mail). Como estamos focando em iniciantes, comece com log local.
3) Agendando via cron
Para agendar backup PostgreSQL na VPS via cron, você edita o crontab do usuário que vai executar a rotina:
crontab -e
Um agendamento comum é diário às 03:00:
0 3 * * * /usr/local/bin/backup-n8n-postgres.sh >> /var/log/backup-n8n-postgres.log 2>&1
Boas práticas para cron:
- Use caminhos absolutos (cron tem PATH limitado);
- Redirecione stdout e stderr para log;
- Garanta permissões de execução:
chmod +x; - Teste o script manualmente antes de confiar no cron.
4) Como pensar na restauração (antes do desastre)
Se você usar -F c no dump:
- restaurar costuma ser
pg_restoreapontando para o arquivo.dump.
O ponto aqui não é decorar o comando agora, mas garantir que você guarde o tipo de dump e o procedimento. Anote no seu README interno (ou num arquivo no servidor). Isso faz diferença quando você estiver com pressa.
No próximo passo, vamos fortalecer a segurança: antes de enviar qualquer coisa para S3/Backblaze, você vai criptografar o backup PostgreSQL com GPG.
Como criptografar backup PostgreSQL com GPG antes do envio
Quando você envia backups para um storage compatível com S3 (seja AWS, Backblaze B2 ou outro), você está colocando um arquivo potencialmente sensível fora do seu servidor. Mesmo com HTTPS e com criptografia “em repouso” do provedor, criptografar antes do upload é uma camada extra muito forte, principalmente porque você controla a chave.
Por que GPG é uma boa escolha
GPG (GNU Privacy Guard) é uma ferramenta madura, bem documentada e amplamente usada para:
- criptografia assimétrica (chave pública/privada)
- criptografia simétrica (senha)
- assinatura/verificação
Para backup automatizado, a opção mais prática e segura costuma ser criptografia assimétrica: você usa a chave pública na VPS (para criptografar) e guarda a chave privada offline (para descriptografar/restaurar). Assim, mesmo que a VPS seja comprometida, o atacante não consegue descriptografar backups antigos só com o que está no servidor.
Fluxo recomendado (assimétrico)
1) Você cria um par de chaves GPG na sua máquina segura (ou em uma máquina administrativa).
2) Exporta a chave pública.
3) Importa a chave pública na VPS.
4) No script, após gerar o dump, você criptografa para o destinatário (recipient).
O comando mais comum fica assim (modelo):
gpg --encrypt --recipient "SEU_ID_OU_EMAIL" --output arquivo.dump.gpg arquivo.dump
Depois disso, você pode até apagar o arquivo não criptografado (.dump) e manter apenas o .gpg no disco, reduzindo exposição local.
Simétrica (quando faz sentido)
Se você está começando e quer algo mais rápido, dá para usar criptografia com senha:
gpg --symmetric --cipher-algo AES256 arquivo.dump
Mas aqui a senha precisa estar acessível ao script (ou ao ambiente), então a segurança depende de como você guarda essa senha. Para produção e auditoria, a assimétrica costuma ser mais tranquila.
Cuidados importantes (para não se enrolar)
- Teste a descriptografia antes de colocar em produção: pegue um backup, baixe, descriptografe e valide a restauração.
- Guarde a chave privada fora da VPS, com backup também (por exemplo, em um cofre de senhas).
- Se você fizer rotação de chaves, mantenha estratégia para descriptografar backups antigos.
Com o backup já criptografado, falta só enviar para um destino externo. A seguir, você vai ver como fazer o envio para S3 e também para Backblaze B2, mantendo organização e boas práticas de retenção.
💻 VPS para n8n com mais tranquilidade (e fácil de escalar): Hostinger + cupom
Como este guia é todo sobre rodar n8n em VPS (e manter o banco PostgreSQL protegido com backup e criptografia), vale comentar uma opção que costuma facilitar bastante a vida de quem é iniciante: a VPS da Hostinger. Ela tem planos que encaixam desde projetos pequenos até operações maiores, com boa performance (NVMe), escala simples quando o n8n cresce e uma experiência bem amigável para administrar.
Se você quiser conhecer os planos de VPS da Hostinger para rodar n8n, dá para acessar por aqui (link de indicação):
https://www.hostinger.com.br/horadecodar
E, se for contratar, use o cupom HORADECODAR para desconto.
Um detalhe legal: você consegue começar com um plano mais básico e ir subindo recursos (RAM/CPU/armazenamento) conforme suas automações e agentes forem aumentando, sem precisar “reinventar” o ambiente.
Enviando backups criptografados para S3 e Backblaze B2: passo a passo e boas práticas
Com o arquivo criptografado (.gpg) pronto, o próximo passo é enviar para um bucket S3 (AWS ou compatível) ou para o Backblaze B2 usando endpoint S3. A boa notícia: do ponto de vista do cliente (AWS CLI/rclone), o fluxo é bem parecido.
1) Estrutura de destino (organização ajuda muito)
Defina um “prefixo” por ambiente e por projeto. Por exemplo:
s3://meu-bucket/backups/n8n/prod/s3://meu-bucket/backups/n8n/staging/
Isso evita misturar backups e facilita fazer regras de retenção.
2) Envio com AWS CLI (genérico e bem difundido)
Se você já tem AWS CLI configurado na VPS, o upload é direto:
aws s3 cp /opt/backups/n8n-postgres/ARQUIVO.dump.gpg s3://SEU_BUCKET/backups/n8n/prod/
Para Backblaze B2 (modo S3), você normalmente configura:
- Access Key / Secret
- Endpoint S3 do B2
E passa esses parâmetros na configuração do profile ou via flags (dependendo do seu setup). O importante aqui é entender o conceito: o B2 expõe uma API compatível com S3, então o mesmo “jeito de pensar” funciona.
3) Envio com rclone (muito bom para múltiplos storages)
O rclone costuma ser a escolha preferida quando você quer flexibilidade (S3, B2, Google Drive etc.) com uma configuração consistente. Você configura um “remote” (por exemplo b2s3: ou s3:) e usa comandos de cópia/sincronização.
Exemplo mental do fluxo:
- gerar backup
- criptografar
rclone copypara o remote
4) Boas práticas que evitam dor de cabeça
Alguns cuidados simples elevam muito a confiabilidade:
- Retenção: mantenha vários dias de backup. Idealmente, combine diário + semanal + mensal, dependendo do valor do projeto.
- Imutabilidade (quando possível): alguns storages têm recursos tipo “Object Lock/WORM”. Se você puder, é ótimo contra ransomware.
- Verificação: valide tamanho e, se possível, checksum após upload.
- Log e monitoramento: registre falhas; depois, evolua para alertas em Slack/Telegram.
- Custo: Backblaze B2 costuma ser uma alternativa interessante em custo/armazenamento, e a compatibilidade S3 facilita a migração.
5) Roteiro simples de “restore” (para ter de cabeça)
O fluxo inverso (em alto nível) é:
1) baixar o arquivo .gpg do bucket
2) descriptografar com sua chave privada
3) restaurar no PostgreSQL com pg_restore (ou psql, dependendo do formato)
4) reiniciar serviços do n8n se necessário
Se você documentar esses 4 passos e testar uma vez, você vai dormir muito mais tranquilo. E isso fecha o ciclo do backup automático PostgreSQL n8n para S3 criptografado, com opção de backup PostgreSQL do n8n para Backblaze B2.
Como configurar o backup automático do PostgreSQL do n8n para o S3 de forma criptografada?
Para configurar o backup automático do PostgreSQL do n8n para o S3 de forma criptografada, é necessário criar um script que utilize o comando pg_dump para exportar o banco de dados, use o GPG para criptografar o arquivo gerado e, em seguida, envie para o S3 usando ferramentas como AWS CLI ou rclone. Programe o processo utilizando o cron na sua VPS para execução automática em intervalos definidos.
É possível usar Backblaze B2 em vez do S3 para armazenar os backups criptografados do PostgreSQL do n8n?
Sim, é possível utilizar o Backblaze B2 como alternativa ao S3 para armazenar os backups criptografados. Basta configurar uma ferramenta compatível, como o rclone, que suporta ambos os serviços de armazenamento. O procedimento de backup, criptografia e programação via cron permanece o mesmo. Só será necessário ajustar as configurações para conectar ao Backblaze B2.
Como restaurar um backup criptografado do PostgreSQL do n8n armazenado em S3 ou Backblaze?
Para restaurar um backup criptografado, baixe o arquivo criptografado do S3 ou Backblaze, utilize o GPG para descriptografar o arquivo e, em seguida, use o comando psql ou pg_restore para importar o banco de dados de volta ao PostgreSQL. Esses comandos são executados via terminal e exigem acesso à chave privada do GPG usada na criptografia.
Conclusão
Implementar backup automático PostgreSQL n8n para S3 criptografado é uma daquelas tarefas que parecem “infra chata” — até o dia em que você precisa restaurar. Com uma rotina simples (dump do Postgres + cron + criptografar backup PostgreSQL com GPG + upload para S3/Backblaze), você transforma um risco enorme em um procedimento controlado.
O caminho que seguimos aqui é bem direto: preparar a VPS, gerar backups consistentes, agendar backup PostgreSQL na VPS via cron, criptografar antes de enviar e manter organização/retenção no storage. Se você fizer só mais uma coisa depois de terminar este artigo, que seja: testar uma restauração com um backup real. Isso é o que separa “tenho backups” de “consigo recuperar”.
E se você optar por backup PostgreSQL do n8n para Backblaze B2, a compatibilidade S3 tende a deixar tudo mais simples: você muda o destino, mas mantém o mesmo processo e as mesmas boas práticas.

