Antes de subir o NPM e emitir certificados TLS, o DNS precisa estar apontando para o IP público do servidor. Sem isso:
  • O Let’s Encrypt falha no desafio HTTP-01 (ele tenta bater em <subdominio>.example.com e não chega no servidor).
  • Você não consegue acessar https://n8n.example.com de fora.

Descobrir o IP público do servidor

Na máquina:
curl -s ifconfig.me; echo
# ou
curl -s https://api.ipify.org; echo
Anote — é o valor que vai nos registros DNS.

Escolher a estratégia de registros

Wildcard A

Um único A * para o IP. Qualquer subdomínio novo resolve automático. Menos trabalho, mas nem todo registrador/plano suporta (Cloudflare free sem ACM, por exemplo).

A + CNAMEs

Um A @ para o IP, depois um CNAME por subdomínio apontando pro apex. Se o IP mudar, atualiza só o @. É a rota usada aqui.

A por subdomínio

Um registro A para cada subdomínio. Mais controle, mais trabalho manual se o IP mudar.

Estratégia adotada (A + CNAMEs)

Registros atuais:
TipoNomeValorPara quê
A@<IP-servidor>domínio raiz aponta pro servidor
CNAMEn8nexample.comn8n.example.com segue o @
CNAMEnpmexample.comnpm.example.com segue o @
Ao adicionar um serviço novo: crie mais um CNAME com o nome do subdomínio apontando pra example.com. Notas:
  • Alguns painéis exigem ponto final no valor do CNAME (example.com.). Se der erro de validação, tente com o ponto.
  • Cloudflare users: deixe todos os registros em “DNS only” (nuvem cinza), não proxy laranja. O laranja intercepta TLS e quebra o desafio HTTP-01 do Let’s Encrypt quando o NPM tenta emitir o certificado.
  • CNAME no próprio apex (@) não funciona em DNS tradicional — por isso o apex usa A, não CNAME. Só os subdomínios podem ser CNAME.

Validar propagação

dig +short n8n.example.com
# deve retornar o IP do servidor
Se voltar vazio ou IP errado:
  • Pode ser só propagação — aguarde alguns minutos (até 1h dependendo do TTL configurado).
  • Compare com servidor DNS público: dig +short n8n.example.com @1.1.1.1.
  • Confira que salvou o registro no painel.
Do próprio servidor:
curl -I http://n8n.example.com
# esperado após subir NPM: HTTP/1.1 200 ou 502 (502 = DNS OK, mas proxy host ainda não configurado)
# Connection refused ou timeout = DNS ou firewall fora

Liberar portas no firewall

O servidor precisa aceitar tráfego nas portas 80 e 443 de qualquer origem:
# Se estiver usando UFW
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status
Em VPS (AWS, GCP, Oracle Cloud, Hetzner), também precisa liberar no security group do provedor — é separado do firewall local. A porta 81 (admin do NPM) será tratada separadamente depois que subirmos o NPM. Por ora, deixe bloqueada externamente — acessaremos localmente.

Checklist antes de prosseguir

  • IP público do servidor descoberto
  • Registros A criados no registrador (wildcard ou por subdomínio)
  • dig +short n8n.example.com retorna o IP correto
  • Portas 80 e 443 abertas no firewall local (UFW) e no security group do provedor
  • Se Cloudflare, proxy está em “DNS only” (cinza)
Com isso feito, siga para Primeiro deploy.