🚀 Guia Completo: Migrar n8n

Do Hostinger para Contabo - Poupa até 78% nos custos mensais

🎯 Introdução

Este guia explica como migrar uma instalação completa de n8n do Hostinger para o Contabo, poupando até 78% nos custos mensais (de ~20€ para 4,50€/mês).

✅ O que será migrado:
  • Todos os workflows
  • Todas as credenciais
  • Histórico de execuções
  • Configurações de conta

⏱️ Tempo estimado: 1-2 horas (para quem nunca fez)

💰 Investimento inicial: ~4,50€ (primeiro mês Contabo)

🆕 Para Iniciantes Absolutos

O que é um VPS?

VPS significa Virtual Private Server (Servidor Privado Virtual). É como ter um computador que está sempre ligado na internet.

Neste guia:

  • Hostinger = O teu VPS atual (onde está o n8n agora)
  • Contabo = O teu VPS novo (para onde vais migrar)

O que é SSH?

SSH é uma forma segura de "entrar" num servidor remoto através da internet. É como o Remote Desktop, mas usando comandos de texto em vez de janelas gráficas.

Preciso de saber programar?

NÃO! Vais copiar e colar comandos que já estão prontos. Só precisas de:

  • ✅ Saber copiar e colar texto
  • ✅ Seguir instruções passo-a-passo
  • ✅ Ter paciência (alguns passos demoram minutos)

🌐 Criar Conta no Contabo

Passo 1: Aceder ao site

1.1 Abre o browser e vai para: https://contabo.com

1.2 Clica em "Sign Up" ou "Register" no canto superior direito

Passo 2: Criar conta

Preenche o formulário de registo com email, password, nome completo e morada

Confirma o email (vê a caixa de entrada)

Faz login no site do Contabo

Passo 3: Comprar VPS

3.1 No painel do Contabo, procura por "VPS" ou "Cloud VPS"

3.2 Escolhe o plano "Cloud VPS S" ✅ RECOMENDADO

  • 💰 4,50€/mês
  • 💾 8GB RAM
  • 💿 200GB Storage

3.3 Configurações a escolher:

  • Região: EU (Europa) - mais perto de Portugal
  • Sistema Operativo: Ubuntu 22.04 LTS ⚠️ MUITO IMPORTANTE!
  • Storage: Deixa o padrão (200GB)

3.4 Clica em "Order" e finaliza a compra

Passo 4: Aguardar ativação e ANOTAR IP

4.1 Após o pagamento, o Contabo envia um email de ativação

⏱️ Tempo de espera: Entre 5 minutos e 2 horas. Vai beber um café! ☕

4.2 O email contém:

  • 📍 IP do servidor (ex: 203.0.113.50)
  • 🔑 Password de root
  • 📧 Link para o painel de controlo

4.3 ANOTA O IP NUM PAPEL OU NOTEPAD!

Vais precisar dele MUITAS vezes durante o guia!

💡 Como encontrar o IP depois:
1. Vai a https://my.contabo.com
2. Faz login
3. Clica no teu VPS
4. O IP está em destaque no topo (ex: 203.0.113.50)
✅ Checkpoint: Tens conta criada E anotaste o IP do servidor!

🔧 Preparar o Teu Computador

Se tens Windows:

Opção 1: PowerShell (RECOMENDADO)

  1. Pressiona tecla Windows (⊞)
  2. Escreve: PowerShell
  3. Clica em "Windows PowerShell"
  4. Abre janela azul escura ✅

Se tens Mac:

  1. Pressiona Cmd + Espaço
  2. Escreve: Terminal
  3. Pressiona Enter ✅

Testar SSH:

Na janela que abriste, escreve:

ssh

Se aparecer texto sobre SSH: ✅ Tudo OK!

📦 Parte 1: Fazer Backup na Hostinger

Passo 0: Anotar informações da Hostinger

0.1 Vai a https://hpanel.hostinger.com

0.2 Faz login e encontra o teu VPS

0.3 Procura por "SSH Access" e anota:

  • 📍 Hostname (ex: srv123456.hstgr.cloud)
  • 🔑 Password SSH

0.4 ANOTA O HOSTNAME NUM PAPEL!

Passo 1: Conectar via SSH

No PowerShell/Terminal, cola este comando (substituindo pelo TEU hostname):

ssh root@srv123456.hstgr.cloud

⚠️ Substitui srv123456.hstgr.cloud pelo TEU hostname da Hostinger!

Primeira vez? Se perguntar Are you sure you want to continue connecting?
👉 Escreve yes e pressiona Enter

Mete a password (não aparece nada ao escrever - é NORMAL por segurança!)

Se vires algo tipo root@srv123456:~# → ✅ Estás dentro!

Passo 2: Descobrir e padronizar nome do container

2.1 Ver que containers existem:

docker ps

2.2 Procura na coluna "NAMES" por algo com "n8n" (ex: root-n8n-1, n8n_n8n_1, etc)

2.3 Renomear para "n8n" (assim não precisas editar comandos depois!):

docker rename root-n8n-1 n8n

⚠️ Substitui root-n8n-1 pelo nome que VISTE no passo 2.2!

Se o teu container já se chama "n8n", salta este comando!

2.4 Verificar que mudou:

docker ps

Agora deve aparecer simplesmente "n8n" ✅

🎯 Objetivo alcançado: A partir de agora, TODOS os comandos usam simplesmente n8n!

Passo 3: Parar n8n temporariamente

docker stop n8n

⏱️ Demora 5-10 segundos

⚠️ O n8n está agora OFFLINE (temporariamente, para garantir backup seguro)

Passo 4: Criar backup

4.1 Criar pasta para backups:

mkdir -p /root/backup

4.2 Fazer o backup:

docker run --rm -v n8n_data:/data -v /root/backup:/backup alpine tar czf /backup/n8n_backup.tar.gz -C /data .
📋 Este é 1 único comando (mesmo sendo longo) - copia tudo junto e pressiona Enter

⏱️ Demora 30 segundos a 2 minutos (depende do tamanho dos dados)

Passo 5: Reiniciar n8n

docker start n8n

✅ O n8n volta online! Os workflows voltam a funcionar normalmente.

Passo 6: Verificar backup

ls -lh /root/backup/

Deve aparecer algo tipo:

-rw-r--r-- 1 root root 45M Oct 17 10:30 n8n_backup.tar.gz

✅ Se o tamanho for > 0, está tudo OK!

✅ Checkpoint Parte 1: Backup criado na Hostinger!

🖥️ Parte 2: Configurar Servidor Contabo

Passo 0: Ter o IP do Contabo à mão

Antes de começar, confirma que tens o IP do Contabo anotado!

Se não tens, vai ao email do Contabo ou:

  1. Acede a https://my.contabo.com
  2. Faz login
  3. Clica no teu VPS
  4. O IP está no topo (ex: 203.0.113.50)

ANOTA AGORA!

Passo 1: Conectar ao Contabo

1.1 Abre uma NOVA janela do PowerShell/Terminal (mantém a da Hostinger aberta!)

1.2 Cola este comando (substituindo pelo TEU IP):

ssh root@203.0.113.50

⚠️ Substitui 203.0.113.50 pelo IP do TEU Contabo!

Se perguntar Are you sure? → Escreve yes

Mete a password do email do Contabo

Pode pedir para mudar password na primeira vez - É normal! Cria uma nova e guarda bem.

Passo 2: Atualizar sistema

apt update && apt upgrade -y
📋 São 2 comandos ligados (update E upgrade) - copia tudo junto

⏱️ Demora 3-10 minutos. Vai beber água! 💧

Se aparecerem janelas rosa/perguntas, pressiona Enter

Passo 3: Instalar Docker

apt install docker.io docker-compose -y

⏱️ Demora 1-3 minutos

Passo 4: Criar pastas

mkdir -p /opt/n8n
cd /opt/n8n
São 2 comandos - podes copiar e colar tudo de uma vez

Passo 5: Criar .env

nano .env

Cola isto:

DOMAIN_NAME=contabo-vps.local
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Lisbon

Guarda: Ctrl+X, depois Y, depois Enter

Passo 6: Criar docker-compose.yml

nano docker-compose.yml

Cola isto:

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    container_name: n8n
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
      - NODE_ENV=production
      - WEBHOOK_URL=http://${SUBDOMAIN}.${DOMAIN_NAME}:5678/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - N8N_SECURE_COOKIE=false
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:
    external: false

Guarda: Ctrl+X → Y → Enter

✅ Checkpoint Parte 2: Contabo pronto para receber dados!

🔄 Parte 3: Transferir Backup

⚠️ IMPORTANTE: Precisas de 2 janelas de terminal abertas AO MESMO TEMPO:
1️⃣ Uma ligada à Hostinger
2️⃣ Outra ligada ao Contabo

Passo 0: Preparar terminais

Confirma que tens:

  • Terminal 1: Ligado à Hostinger (vês root@srv123456:~#)
  • Terminal 2: Ligado ao Contabo (vês root@vmi123456:~#)
  • IP do Contabo anotado

Passo 1: Iniciar receptor (Contabo)

No Terminal 2 (Contabo):

cd /root
nc -l -p 9999 > n8n_backup.tar.gz
⏸️ O TERMINAL VAI FICAR "PENDURADO"

Isto é COMPLETAMENTE NORMAL! O cursor desaparece e nada acontece.
O servidor está à espera de receber o ficheiro.

NÃO FECHES ESTA JANELA!
NÃO PRESSIONES Ctrl+C!
Deixa assim e passa para o Terminal 1 (Hostinger)

Passo 2: Enviar ficheiro (Hostinger)

No Terminal 1 (Hostinger):

2.1 Ir para a pasta do backup:

cd /root/backup

2.2 Enviar o ficheiro (substituindo pelo TEU IP do Contabo):

cat n8n_backup.tar.gz | nc 203.0.113.50 9999
📋 Este é 1 único comando - copia tudo junto

⚠️ Substitui 203.0.113.50 pelo IP do TEU Contabo!

⏱️ DURANTE A TRANSFERÊNCIA:

- Ambos os terminais ficam "pendurados" (sem output)
- Não há barra de progresso
- Parece que nada está a acontecer... MAS ESTÁ!

Tempo estimado:
- Ficheiro pequeno (< 50MB): 10-30 segundos
- Ficheiro médio (50-200MB): 1-3 minutos
- Ficheiro grande (> 200MB): 5-10 minutos

✅ Terminou quando: O cursor volta a aparecer no Terminal 1!

Passo 3: Verificar transferência

3.1 Quando o cursor voltar no Terminal 1 → ✅ Transferência completa!

3.2 Vai ao Terminal 2 (Contabo) e pressiona Ctrl+C

3.3 Verificar que o ficheiro chegou:

ls -lh /root/n8n_backup.tar.gz

Deve aparecer com tamanho similar ao da Hostinger ✅

❌ Se o ficheiro tiver 0 bytes ou não existir:
Volta ao Passo 1 e tenta de novo. Confirma que usaste o IP correto!
✅ Checkpoint Parte 3: Ficheiro transferido com sucesso!

🔓 Parte 4: Restaurar Dados no Contabo

💡 A partir daqui, trabalha só no Terminal do Contabo

Passo 1: Preparar volume

cd /opt/n8n
docker-compose down
docker volume create n8n_n8n_data
São 3 comandos - podes copiar e colar tudo de uma vez

Passo 2: Restaurar backup

⚠️ IMPORTANTE: Este comando tem VÁRIAS LINHAS mas é 1 SÓ comando!

docker run --rm \
  -v n8n_n8n_data:/data \
  -v /root:/backup \
  alpine tar xzf /backup/n8n_backup.tar.gz -C /data
📋 Este é 1 único comando em 4 linhas - copia TODAS as linhas juntas (incluindo as barras \)

⏱️ Demora 10-60 segundos

Passo 3: Iniciar n8n

docker-compose up -d

⏱️ Pode demorar 30 segundos a 2 minutos (a descarregar imagem Docker)

Passo 4: Ver logs

docker logs n8n --tail 50

Procura por: n8n ready on ::, port 5678

Passo 5: Testar no browser

5.1 Abre o browser

5.2 Na barra de endereços, escreve (usando o TEU IP):

http://203.0.113.50:5678

Substitui pelo IP do TEU Contabo!

5.3 Deve carregar a página de login do n8n! 🎉

5.4 Faz login com as MESMAS credenciais da Hostinger

5.5 Verifica:

  • ✅ Workflows aparecem?
  • ✅ Credenciais estão guardadas?
  • ✅ Consegues abrir um workflow?
✅ Checkpoint Parte 4: n8n funcional no Contabo com todos os dados! 🎉
⚠️ IMPORTANTE: Neste momento tens apenas HTTP (sem cadeado 🔒)
A próxima parte vai configurar HTTPS para segurança e webhooks!

🔒 Parte 5: Configurar HTTPS

Requisito: Precisas de um domínio próprio!
Compra em Cloudflare (a partir de 8€/ano) ou Namecheap

Passo 0: Anotar o teu domínio

Antes de começar, confirma:

  • ✅ Tens um domínio (ex: exemplo.com)
  • ✅ Sabes aceder ao painel DNS dele
  • ✅ Tens o IP do Contabo à mão

Vais criar: n8n.exemplo.com

Passo 1: Configurar DNS

1.1 No painel do teu domínio (Cloudflare, GoDaddy, etc), procura por "DNS"

1.2 Clica em "Add Record"

1.3 Preenche:

Type A
Name n8n
Value/IP 203.0.113.50 (o TEU IP!)
TTL Auto ou 3600
⚠️ CLOUDFLARE: Se o botão estiver 🟠 laranja (Proxied), clica para ficar ⚪ cinzento (DNS only)!

1.4 Guarda e aguarda 2-5 minutos

1.5 Testar (no teu computador):

nslookup n8n.exemplo.com

Substitui pelo teu domínio!

Se aparecer o IP do Contabo → ✅ DNS OK!

Passo 2: Atualizar docker-compose com Traefik

2.1 Parar o n8n:

cd /opt/n8n
docker-compose down
São 2 comandos - podes copiar tudo de uma vez

2.2 Fazer backup do ficheiro atual:

cp docker-compose.yml docker-compose.yml.backup

2.3 Editar:

rm docker-compose.yml
nano docker-compose.yml
São 2 comandos - podes copiar tudo de uma vez

2.4 Cola isto (e SUBSTITUI os valores marcados!):

services:
  traefik:
    image: traefik:latest
    restart: always
    command:
      - --api=false
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.web.http.redirections.entryPoint.to=websecure
      - --entrypoints.web.http.redirections.entrypoint.scheme=https
      - --entrypoints.websecure.address=:443
      - --certificatesresolvers.mytlschallenge.acme.tlschallenge=true
      - --certificatesresolvers.mytlschallenge.acme.email=teu-email@exemplo.com
      - --certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`n8n.exemplo.com`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.services.n8n.loadbalancer.server.port=5678
    environment:
      - N8N_HOST=n8n.exemplo.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.exemplo.com/
      - GENERIC_TIMEZONE=Europe/Lisbon
    volumes:
      - n8n_n8n_data:/home/node/.n8n

volumes:
  traefik_data:
  n8n_n8n_data:
    external: true
⚠️ SUBSTITUI ESTES 2 VALORES:

1. teu-email@exemplo.como TEU email real
2. n8n.exemplo.como TEU domínio (aparece 3 vezes!)

2.5 Guarda: Ctrl+X → Y → Enter

Passo 3: Iniciar com HTTPS

docker-compose up -d
⏱️ AGUARDA 2-3 MINUTOS!
O Traefik precisa de gerar o certificado SSL. Não tentes aceder imediatamente!

Passo 4: Testar HTTPS

4.1 Abre o browser

4.2 Acede a:

https://n8n.exemplo.com

(Substitui pelo TEU domínio!)

4.3 Verifica:

  • ✅ Página carrega?
  • ✅ Cadeado verde 🔒 aparece?
  • ✅ Consegues fazer login?
🎉 SE TUDO FUNCIONAR:
Parabéns! O teu n8n está com HTTPS ativo!

Podes agora desligar o VPS da Hostinger! 🎊
✅ Checkpoint Parte 5: HTTPS configurado com sucesso! 🔒✨

🔧 Troubleshooting

❌ "Connection refused"

Solução:

docker ps
docker logs n8n --tail 50
⚠️ Executa 1 de cada vez - vê o resultado do primeiro antes de executar o segundo

Se o container não estiver a correr: cd /opt/n8n && docker-compose up -d

❌ Workflows não aparecem

Verificar se o volume tem dados:

docker run --rm -v n8n_n8n_data:/data alpine ls -la /data

Se estiver vazio, repete Parte 4 - Passo 2

❌ Netcat não transfere

Tentar outra porta:

# No Contabo
nc -l -p 8888 > n8n_backup.tar.gz

# Na Hostinger
cat /root/backup/n8n_backup.tar.gz | nc TEU_IP_CONTABO 8888
⚠️ IMPORTANTE: Executa primeiro o comando do Contabo, DEPOIS o da Hostinger (são em terminais diferentes!)

❌ Certificado SSL não funciona

Soluções:

  1. Aguarda 5-10 minutos (pode demorar!)
  2. Verifica DNS: nslookup n8n.exemplo.com
  3. Cloudflare: proxy OFF (cinzento, não laranja)
  4. Ver logs Traefik: docker logs traefik --tail 100

✅ Checklist Final

Antes de desligar a Hostinger, confirma TUDO:

Funcionalidades Básicas

  • Consigo aceder ao n8n no browser
  • Login funciona
  • Todos os workflows aparecem
  • Credenciais estão guardadas
  • Pelo menos 1 workflow executa com sucesso

HTTPS e Segurança

  • Acesso via HTTPS (não HTTP)
  • Cadeado verde 🔒 aparece
  • Domínio funciona (n8n.exemplo.com)

Webhooks (se usares)

  • Testei um webhook
  • Atualizei URLs em serviços externos

✅ Tudo OK?

Podes cancelar o VPS da Hostinger e começar a poupar!

💰 Poupança anual: 186€!

📊 Comparação Final

Aspeto Hostinger Contabo Poupança
Mensal ~20€ 4,50€ 15,50€
Anual ~240€ 54€ 186€
RAM 4-8GB 8GB ✅ Igual ou melhor
Storage 50-100GB 200GB ✅ Dobro

🎉 Parabéns!

Migraste com sucesso o teu n8n para o Contabo!

Estás a poupar 186€ por ano! 💰

Precisas de ajuda? Junta-te ao Fórum n8n ou Discord