Auto-hospedagem do n8n no Hetzner Cloud: tutorial completo de configuração com Docker
A automação de fluxos de trabalho se tornou essencial para empresas modernas, mas soluções SaaS podem se tornar caras conforme as equipes crescem. Vamos mostrar como configurar sua própria instância do n8n no Hetzner Cloud por cerca de €6/mês mais os custos de domínio (em outubro de 2026), oferecendo fluxos de trabalho ilimitados e controle total sobre sua plataforma de automação.
O que você vai construir
Ao final deste tutorial, você terá:
- Instalação do n8n totalmente funcional com HTTPS
- Certificados SSL automáticos via Let's Encrypt
- Integração de e-mail para contas de usuário
- Inicialização automática após reinicializações do servidor
- Uma base sólida para uso profissional, que você pode reforçar para produção
Custo mensal: €5,99 (servidor CX23, sem IVA, incluindo um endereço IPv4 primário, em outubro de 2026) + custos de domínio
Pré-requisitos
- Nome de domínio apontando para o IP do seu servidor
- Conhecimento básico de linha de comando
- Conta no Hetzner Cloud
Passo 1: configuração do servidor
Criar servidor Hetzner Cloud
- Faça login no Console do Hetzner Cloud
- Crie um novo projeto
- Adicione um servidor com estas especificações:
- Imagem: Ubuntu 24.04 LTS
- Tipo: CX23 (2 vCPU, 4 GB de RAM, 40 GB de disco); a Hetzner retirou o CX11 dos novos pedidos em setembro de 2024, e a disponibilidade dos planos de custo otimizado varia conforme a localização
- Localização: Escolha a mais próxima dos seus usuários
- Chave SSH: Adicione sua chave pública
Configuração inicial do servidor
Conecte-se ao seu servidor:
ssh root@YOUR_SERVER_IP
Atualize o sistema:
apt update && apt upgrade -y
Passo 2: instalar o Docker
Instale o Docker e o Docker Compose:
# Install dependencies
apt install apt-transport-https ca-certificates curl software-properties-common gnupg -y
# Add Docker GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Add Docker repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker
apt update
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# Create Docker network for our services
docker network create proxy
Verifique a instalação do Docker:
docker --version
docker compose version
Passo 3: configurar proxy reverso Traefik
Crie a estrutura de diretórios:
mkdir -p /opt/traefik/data
cd /opt/traefik
Crie o arquivo de configuração do Traefik:
nano /opt/traefik/data/traefik.yml
Adicione esta configuração:
api:
dashboard: false
entryPoints:
http:
address: ":80"
http:
redirections:
entryPoint:
to: https
scheme: https
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
certificatesResolvers:
letsencrypt:
acme:
email: [email protected] # Altere isso!
storage: acme.json
httpChallenge:
entryPoint: http
Crie o arquivo acme.json para certificados SSL:
touch /opt/traefik/data/acme.json
chmod 600 /opt/traefik/data/acme.json
Crie o arquivo do Docker Compose do Traefik:
nano /opt/traefik/docker-compose.yml
Adicione esta configuração:
version: '3'
services:
traefik:
image: traefik:v3.4
container_name: traefik
restart: always
ports:
- "80:80"
- "443:443"
networks:
- proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/etc/traefik/traefik.yml
- ./data/acme.json:/acme.json
labels:
- "traefik.enable=true"
networks:
proxy:
external: true
Passo 4: configurar retransmissão SMTP (opcional mas recomendado)
Crie o diretório do servidor de e-mail:
mkdir -p /opt/mailserver
cd /opt/mailserver
Crie o arquivo do Docker Compose:
nano /opt/mailserver/docker-compose.yml
Adicione esta configuração:
version: '3'
services:
mailserver:
image: bytemark/smtp
restart: always
networks:
- proxy
environment:
- RELAY_HOST=smtp.gmail.com # Altere para seu provedor SMTP
- RELAY_PORT=587
- [email protected] # Altere isso
- RELAY_PASSWORD=your-app-password # Altere isso
- MAILNAME=mail.yourdomain.com # Altere isso
networks:
proxy:
external: true
Nota: O n8n acessa o relay pela rede compartilhada proxy, portanto o relay não publica nenhuma porta. As portas publicadas pelo Docker contornam as regras do UFW, então adicione uma apenas se outro host precisar enviar mensagens pelo relay. MAILNAME define o nome de host de e-mail do relay. Para Gmail, você precisará:
- Habilitar autenticação de dois fatores
- Gerar uma senha de app
- Usar a senha de app (não sua senha habitual)
Passo 5: configurar o n8n
Crie o diretório do n8n. O contêiner do n8n é executado como o usuário node (UID 1000), portanto garanta que esse usuário tenha permissão de escrita na pasta data montada por bind mount, por exemplo com mkdir -p /opt/n8n/data && chown -R 1000:1000 /opt/n8n/data:
mkdir -p /opt/n8n
cd /opt/n8n
Crie o arquivo do Docker Compose:
nano /opt/n8n/docker-compose.yml
Adicione esta configuração:
version: '3'
services:
n8n:
image: n8nio/n8n:1.95.2
restart: always
environment:
- N8N_HOST=n8n.yourdomain.com # Altere isso!
- NODE_ENV=production
- N8N_PROTOCOL=https
- N8N_PORT=5678
- N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com # Altere isso!
# Email configuration
- N8N_EMAIL_MODE=smtp
- N8N_SMTP_HOST=mailserver
- N8N_SMTP_PORT=25
- N8N_SMTP_SSL=false
- N8N_SMTP_USER=
- N8N_SMTP_PASS=
- [email protected] # Altere isso!
# Important fixes for proxy setup
- N8N_PROXY_HOPS=1
- N8N_RUNNERS_ENABLED=true
volumes:
- ./data:/home/node/.n8n
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.n8n.rule=Host(`n8n.yourdomain.com`)" # Altere isso!
- "traefik.http.routers.n8n.entrypoints=https"
- "traefik.http.routers.n8n.tls.certresolver=letsencrypt"
- "traefik.http.services.n8n.loadbalancer.server.port=5678"
networks:
proxy:
external: true
Passo 6: criar serviços systemd para inicialização automática
Serviço Traefik
nano /etc/systemd/system/traefik-docker.service
Adicione esta configuração:
[Unit]
Description=Traefik Docker Compose
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/traefik
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
[Install]
WantedBy=multi-user.target
Serviço do servidor de e-mail
nano /etc/systemd/system/mailserver-docker.service
Adicione esta configuração:
[Unit]
Description=Mailserver Docker Compose
Requires=docker.service
After=docker.service
Before=n8n-docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/mailserver
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
[Install]
WantedBy=multi-user.target
Serviço n8n
nano /etc/systemd/system/n8n-docker.service
Adicione esta configuração:
[Unit]
Description=n8n Docker Compose
Requires=docker.service
After=docker.service traefik-docker.service mailserver-docker.service
Wants=network-online.target
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/n8n
ExecStartPre=/bin/bash -c 'until docker container inspect traefik > /dev/null 2>&1; do sleep 2; done'
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
Restart=on-failure
RestartSec=30
TimeoutStartSec=180
[Install]
WantedBy=multi-user.target
Habilitar e iniciar serviços
# Reload systemd daemon
systemctl daemon-reload
# Enable services to start on boot
systemctl enable traefik-docker.service
systemctl enable mailserver-docker.service
systemctl enable n8n-docker.service
# Start services
systemctl start traefik-docker.service
sleep 10
systemctl start mailserver-docker.service
sleep 10
systemctl start n8n-docker.service
Passo 7: configuração DNS
Aponte seu domínio para seu servidor:
- Acesse seu registrador de domínio/provedor DNS
- Crie um registro A:
- Nome: n8n
- Tipo: A
- Valor: IP_DO_SEU_SERVIDOR
- TTL: 300 (ou mínimo permitido)
Aguarde a propagação DNS (pode levar até 24 horas, geralmente é muito mais rápido).
Passo 8: testar sua instalação
Verifique se os serviços estão em execução:
docker ps
Você deve ver três contêineres em execução: traefik, mailserver e n8n.
Acesse sua instância do n8n:
https://n8n.yourdomain.com
Você deve ver a página de configuração do n8n por HTTPS, com o navegador indicando um certificado válido.
Resolução de problemas comuns
Certificado SSL não funciona
Verifique os logs do Traefik:
docker logs traefik
Causas comuns:
- DNS não apontando para o servidor
- Firewall bloqueando portas 80/443
- Domínio errado na configuração
n8n não acessível
Verifique os logs do n8n:
docker logs n8n-n8n-1
Correções comuns:
- Verifique se a configuração de domínio corresponde em todos os arquivos
- Verifique se todos os contêineres estão na mesma rede
- Se os registros mostrarem
ERR_ERL_UNEXPECTED_X_FORWARDED_FOR, confira seN8N_PROXY_HOPS=1está definido como na configuração acima; o n8n documenta essa variável para execução atrás de um proxy reverso
E-mail não funciona
Verifique os logs do servidor de e-mail:
docker logs mailserver-mailserver-1
Verifique as credenciais e configurações SMTP.
Serviços não iniciam após reinicialização
Verifique o status do serviço:
systemctl status traefik-docker.service
systemctl status n8n-docker.service
Reinicie se necessário:
systemctl restart traefik-docker.service
systemctl restart n8n-docker.service
Manutenção e atualizações
Manutenção regular
Verificações semanais:
# Check container status
docker ps
# Check disk space
df -h
# Check logs for errors
docker logs n8n-n8n-1 | grep -i error
Atualizações mensais:
# Update container images
cd /opt/n8n && docker compose pull && docker compose up -d
cd /opt/traefik && docker compose pull && docker compose up -d
cd /opt/mailserver && docker compose pull && docker compose up -d
# Clean up old images
docker system prune -f
Backup dos seus dados
Crie um script de backup. O banco de dados SQLite padrão é copiado enquanto o n8n está em execução, portanto pare o n8n brevemente ou execute o backup em um período de pouca atividade para evitar uma cópia inconsistente, e teste uma restauração antes de confiar no backup:
nano /opt/backup-n8n.sh
Adicione este conteúdo:
#!/bin/bash
mkdir -p /opt/backups
tar -czf /opt/backups/n8n-backup-$(date +%Y%m%d).tar.gz /opt/n8n/data
find /opt/backups -name "n8n-backup-*.tar.gz" -mtime +30 -delete
Torne-o executável e adicione ao cron:
chmod +x /opt/backup-n8n.sh
# Add to crontab (daily backup at 2 AM)
crontab -e
# Add this line:
0 2 * * * /opt/backup-n8n.sh
Reforço de segurança
Configurar firewall
# Install UFW
apt install ufw
# Set defaults
ufw default deny incoming
ufw default allow outgoing
# Allow SSH
ufw allow 22
# Allow HTTP/HTTPS
ufw allow 80
ufw allow 443
# Enable firewall
ufw enable
Proteger SSH
Edite a configuração SSH:
nano /etc/ssh/sshd_config
Faça estas alterações:
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
Reinicie o SSH:
systemctl restart ssh
Configurar Fail2Ban
apt install fail2ban
# Copy default configuration
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Enable and start
systemctl enable fail2ban
systemctl start fail2ban
Detalhamento de custos
Custos mensais:
- Servidor Hetzner CX23: €5,99 (sem IVA, incluindo um endereço IPv4 primário, em outubro de 2026)
- Domínio (anual, varia): ~€10-15/ano
- Total: ~€7/mês
Compare com n8n Cloud:
- n8n Starter: €20/mês com cobrança anual (2.500 execuções, em outubro de 2026)
- n8n Pro: €50/mês com cobrança anual (10.000 execuções)
- Economia: cerca de €150–520/ano
Escalando sua configuração
Múltiplas instâncias do n8n
Você pode executar múltiplas instâncias do n8n isoladas para diferentes equipes:
Crie /opt/n8n-team2/docker-compose.yml:
version: '3'
services:
n8n-team2:
image: n8nio/n8n:1.95.2
restart: always
environment:
- N8N_HOST=team2.yourdomain.com
# ... rest of configuration
volumes:
- ./data:/home/node/.n8n
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.n8n-team2.rule=Host(`team2.yourdomain.com`)"
- "traefik.http.routers.n8n-team2.entrypoints=https"
- "traefik.http.routers.n8n-team2.tls.certresolver=letsencrypt"
- "traefik.http.services.n8n-team2.loadbalancer.server.port=5678"
networks:
proxy:
external: true
Upgrade de recursos do servidor
Se precisar de mais potência, faça upgrade do seu servidor Hetzner:
- CX33: 4 vCPU, 8 GB de RAM (€8,99/mês sem IVA, incluindo um endereço IPv4 primário, em outubro de 2026)
- CX43: 8 vCPU, 16 GB de RAM (€16,49/mês sem IVA, incluindo um endereço IPv4 primário)
Conclusão
Você agora tem uma instalação do n8n em funcionamento que custa uma fração das soluções hospedadas enquanto oferece controle total. A configuração inclui HTTPS automático, funcionalidade de e-mail e gerenciamento robusto de serviços.
Principais benefícios desta abordagem:
- Econômico: Economize centenas de euros anualmente em comparação com o n8n Cloud
- Controle total: Sem cotas de execuções; os limites dependem dos recursos do seu servidor e da Sustainable Use License do n8n
- Privacidade: Os dados dos fluxos de trabalho e das execuções permanecem no seu servidor, exceto os dados que seus fluxos enviam a serviços externos
- Personalizável: Modifique e estenda conforme necessário
Nós já utilizamos esta configuração em produção. Os exemplos de n8n e Traefik fixam as versões das imagens; para atualizar, aumente essas tags em cada docker-compose.yml antes de executar os comandos de atualização. Para usos críticos para o negócio, teste a restauração dos backups e adicione monitoramento.
Sobre a tva
A tva assegura o gerenciamento abrangente de infraestrutura de sistemas de banco de dados, ambientes em nuvem e cadeias de suprimentos globais. Nossa abordagem metódica combina protocolos rigorosos de segurança com otimização de desempenho, enquanto os serviços de consultoria estratégica permitem a coordenação precisa de recursos digitais e ativos físicos — mantendo os mais altos padrões de excelência operacional e conformidade em todos os projetos.
Visite tva.sg para mais informações sobre nossos serviços.
Artigos relacionados
Leitura complementar
Auto-hospedagem do Windmill no Ubuntu: tutorial completo de configuração com Docker com resolução de problemas do PostgreSQL
Hetzner Cloud no fim de 2026: planos e preços para hospedar n8n, Windmill, Twenty e Ollama por conta própria
Guia completo de solução de problemas do n8n auto-hospedado em 2025: tamanho dos dados de execução e webhooks com Traefik