🎯 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).
- 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
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!
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)
🔧 Preparar o Teu Computador
Se tens Windows:
Opção 1: PowerShell (RECOMENDADO)
- Pressiona tecla Windows (⊞)
- Escreve:
PowerShell - Clica em "Windows PowerShell"
- Abre janela azul escura ✅
Se tens Mac:
- Pressiona Cmd + Espaço
- Escreve:
Terminal - 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!
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" ✅
n8n!
Passo 3: Parar n8n temporariamente
docker stop n8n
⏱️ Demora 5-10 segundos
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 .
⏱️ 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!
🖥️ 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:
- Acede a https://my.contabo.com
- Faz login
- Clica no teu VPS
- 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
Passo 2: Atualizar sistema
apt update && apt upgrade -y
⏱️ 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
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
🔄 Parte 3: Transferir Backup
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
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
⚠️ Substitui 203.0.113.50 pelo IP do TEU Contabo!
- 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 ✅
Volta ao Passo 1 e tenta de novo. Confirma que usaste o IP correto!
🔓 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
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
\)
⏱️ 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?
A próxima parte vai configurar HTTPS para segurança e webhooks!
🔒 Parte 5: Configurar HTTPS
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 |
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
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
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
1.
teu-email@exemplo.com → o TEU email real2.
n8n.exemplo.com → o TEU domínio (aparece 3 vezes!)
2.5 Guarda: Ctrl+X → Y → Enter
Passo 3: Iniciar com HTTPS
docker-compose up -d
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?
Parabéns! O teu n8n está com HTTPS ativo!
Podes agora desligar o VPS da Hostinger! 🎊
🔧 Troubleshooting
❌ "Connection refused"
Solução:
docker ps
docker logs n8n --tail 50
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
❌ Certificado SSL não funciona
Soluções:
- Aguarda 5-10 minutos (pode demorar!)
- Verifica DNS:
nslookup n8n.exemplo.com - Cloudflare: proxy OFF (cinzento, não laranja)
- 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 |