Como instalar o n8n na VPS com Docker e HTTPS

O n8n é uma plataforma de automação de fluxos de trabalho: conecta APIs, planilhas, CRMs, bots e modelos de IA sem precisar programar tudo do zero. Rodar o n8n no seu próprio servidor VPS dá execuções ilimitadas, controle total dos dados e custo fixo. Neste tutorial vamos instalá-lo com Docker Compose, atrás do Caddy, que gera e renova sozinho o certificado HTTPS do Let's Encrypt.

Antes de começar

Você precisa do Docker e do Docker Compose instalados (veja o tutorial Instalando Docker e Docker Compose) e de um endereço para o n8n:

  • Domínio próprio (recomendado): crie um registro DNS do tipo A, por exemplo n8n.seudominio.com, apontando para o IP do servidor;
  • Sem domínio: use o serviço gratuito sslip.io, trocando os pontos do IP por hífens. Para o IP 203.0.113.24, o endereço fica 203-0-113-24.sslip.io.
As portas 80 e 443 precisam estar livres e liberadas no firewall, se houver um ativo.

Criando os arquivos

Crie a pasta do projeto e o arquivo .env com o endereço escolhido (troque pelo seu):

# mkdir -p /root/n8n && cd /root/n8n
# echo "DOMINIO=n8n.seudominio.com" > .env
# nano Caddyfile
No Caddyfile, cole o conteúdo abaixo. Ele publica o n8n no seu endereço com HTTPS automático:

{$DOMINIO} {
    reverse_proxy n8n:5678
}
Em seguida, crie o compose.yaml:

# nano compose.yaml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: unless-stopped
    environment:
      - N8N_HOST=${DOMINIO}
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://${DOMINIO}/
      - GENERIC_TIMEZONE=America/Sao_Paulo
      - TZ=America/Sao_Paulo
    volumes:
      - n8n_data:/home/node/.n8n

  caddy:
    image: caddy:2
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    environment:
      - DOMINIO=${DOMINIO}
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data

volumes:
  n8n_data:
  caddy_data:
Ajuste o fuso horário (GENERIC_TIMEZONE e TZ) se precisar. Os dados do n8n ficam no volume n8n_data e os certificados no caddy_data, então sobrevivem a atualizações e reinícios.

Iniciando o n8n

# docker compose up -d
Em cerca de um minuto o Caddy obtém o certificado e o n8n fica disponível em https://seu-endereço.

Importante: abra o endereço logo em seguida e crie a conta de proprietário. O primeiro acesso define o dono do n8n, e robôs costumam visitar endereços novos com HTTPS poucos segundos depois de o certificado ser emitido.

Atualizando o n8n

O n8n lança versões com frequência, inclusive correções de segurança. Para atualizar, de dentro da pasta /root/n8n:

# docker compose pull
# docker compose up -d
Os fluxos e credenciais continuam salvos no volume. Para acompanhar os logs, use docker compose logs -f n8n.
Caso tenha alguma dificuldade, abra um ticket de suporte: Abrir ticket