n8n/Artigo

    Como fazer backup do n8n (e restaurar)

    Para fazer backup completo do n8n você precisa salvar dois componentes: o volume Docker com os dados da aplicação (workflows, credenciais, histórico) e, se estiver usando PostgreSQL, um dump do banco. Salvar apenas um dos dois não permite restauração total — um backup sem o outro está incompleto.

    O que entra no backup

    O n8n armazena dados em dois lugares dependendo da configuração de banco: no modo padrão usa SQLite (arquivo .db dentro do volume Docker); em produção usa PostgreSQL externo. Identifique qual modo está usando:

    bash
    # Ver variáveis de ambiente do container em execução
    docker inspect n8n | grep -i "DB_TYPE\|database"
    
    # Se DB_TYPE não aparecer, o n8n está usando SQLite (padrão)
    Dica
    Se DB_TYPE=postgresdb, você precisa dos dois: volume Docker (para arquivos de configuração) + dump PostgreSQL (para os dados dos workflows).

    Backup do volume Docker (SQLite e arquivos de configuração)

    O volume Docker contém o banco SQLite, credenciais encriptadas e configurações internas. Para um backup limpo, pare o container antes de copiar — assim evita inconsistência no arquivo do banco:

    bash
    # Parar apenas o n8n (mantém o banco Postgres rodando se existir)
    docker compose stop n8n
    
    # Criar arquivo tar do volume nomeado
    docker run --rm   -v n8n_data:/data   -v $(pwd):/backup   alpine tar czf /backup/n8n-backup-$(date +%F).tar.gz -C /data .
    
    # Reiniciar o n8n
    docker compose start n8n
    Dica
    Substitua n8n_data pelo nome real do seu volume (veja com docker volume ls). O arquivo gerado conterá todos os workflows, credenciais e configurações.

    Backup do PostgreSQL com pg_dump

    Se estiver usando PostgreSQL, faça o dump do banco em SQL portável. Você pode rodar pg_dump diretamente de dentro do container postgres:

    bash
    # Dump completo do banco n8n (rodar com o postgres ativo)
    docker compose exec postgres   pg_dump -U n8n -d n8n --no-password   > n8n-db-backup-$(date +%F).sql
    
    # Verificar o arquivo gerado
    ls -lh n8n-db-backup-*.sql
    Atenção
    Guarde o arquivo .sql em local externo (S3, rclone, rsync para outro servidor). Backup no mesmo disco da VPS não protege contra falha de disco.

    Automatizando o backup com cron

    Para backup diário automático, crie um script e agende via cron. O script abaixo salva volume + banco e mantém os últimos 7 dias:

    bash
    #!/bin/bash
    # /opt/n8n-backup.sh
    set -euo pipefail
    
    BACKUP_DIR="/opt/backups/n8n"
    DATE=$(date +%F)
    mkdir -p "$BACKUP_DIR"
    
    # Backup do volume
    docker run --rm   -v n8n_data:/data   -v "$BACKUP_DIR":/backup   alpine tar czf "/backup/volume-$DATE.tar.gz" -C /data .
    
    # Dump PostgreSQL (se aplicável)
    docker compose -f /opt/n8n/docker-compose.yml exec -T postgres   pg_dump -U n8n -d n8n > "$BACKUP_DIR/db-$DATE.sql"
    
    # Apagar backups com mais de 7 dias
    find "$BACKUP_DIR" -mtime +7 -delete
    
    echo "Backup concluído: $DATE"
    Dica
    Adicione ao cron com: crontab -e → 0 3 * * * /bin/bash /opt/n8n-backup.sh >> /var/log/n8n-backup.log 2>&1 (roda às 3h todo dia).

    Como restaurar o backup

    Para restaurar em caso de falha ou migração para outro servidor:

    bash
    # 1. Subir o stack sem o n8n (só o postgres)
    docker compose up -d postgres
    
    # 2. Restaurar o banco (se PostgreSQL)
    cat n8n-db-backup-2026-06-07.sql |   docker compose exec -T postgres   psql -U n8n -d n8n
    
    # 3. Restaurar o volume Docker
    docker run --rm   -v n8n_data:/data   -v $(pwd):/backup   alpine tar xzf /backup/n8n-backup-2026-06-07.tar.gz -C /data
    
    # 4. Subir o n8n
    docker compose up -d n8n

    $ runstack deploy --plan starter

    Não quer configurar manualmente?

    Não quer configurar manualmente? Implante o n8n em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.

    Perguntas frequentes