Formação AWS

← Todos os artigos

N8N na AWS: instalar na EC2 com Docker Compose e HTTPS

ContainersPor Henrylle Maia · 15 out 2026 · 8 min de leitura

O n8n é uma ferramenta low-code que liga serviços sem programar: Google Sheets, PostgreSQL, Gmail, OpenAI e outros. Aqui eu subo o n8n numa EC2 com Docker Compose, aponto um domínio no Route 53, abro com HTTPS e crio um workflow que recebe uma chamada de API. No fim, mostro por que esse modelo serve só para teste e como é o meu n8n em produção, num cluster ECS.

Para que eu uso o n8n

Tenho três workflows. No primeiro, o n8n lê uma planilha do Google Sheets com 1.226 respostas de pesquisa dos meus treinamentos gratuitos, trata os dados com um pouco de JavaScript e grava campo a campo numa tabela do PostgreSQL.

O segundo busca no Meta Ads quanto gastei por dia em anúncios e guarda num banco relacional. O terceiro é uma API que diz se um inscrito entrou num grupo de WhatsApp, sem eu escrever código.

Para quem paga ferramentas que cobram por operação, como o Make, rodar o n8n na própria conta tira esse custo e deixa a comunicação com o banco dentro da mesma rede.

O que você precisa ter antes

O n8n sobe em container, então Docker e Docker Compose são pré-requisito. Se ainda não mexeu com eles, comece por Docker na EC2 e Docker Compose na prática.

Uso uma EC2 na região da Virgínia e na VPC default, para não entrar em complexidade de rede. A documentação do n8n oferece EC2 e EKS (Kubernetes), mas no EKS você já começa pagando o control plane, caro para uma ferramenta simples.

1Criar o security group com a porta 443

O n8n atende por HTTPS, então preciso da porta 443. No console da EC2, crie um security group (aqui, bia-dev-aula-youtube, com a descrição "acesso do n8n para aula do youtube") e adicione uma regra de entrada do tipo HTTPS, porta 443. Na aula deixei a origem em "Anywhere", ou seja, 0.0.0.0/0.

A regra de entrada do security group: HTTPS, porta 443, origem Anywhere (0.0.0.0/0), com o nome bia-dev-aula-youtube e a descrição acesso do n8n para aula do youtube
A regra de entrada do security group: HTTPS, porta 443, origem Anywhere (0.0.0.0/0), com o nome bia-dev-aula-youtube e a descrição acesso do n8n para aula do youtube

2Lançar a EC2 com Docker pelo user data

Lance a instância com estas escolhas:

  • Nome: n8n-aula-youtube.
  • Imagem: Amazon Linux 2023, 64 bits.
  • Tipo: t3.micro, da Free Tier.
  • Par de chaves: nenhum. Eu entro pelo Session Manager (SSM), que é mais seguro e simples. Veja Conectar na EC2 pelo navegador.
  • Rede: a VPC default e o security group do passo 1.
  • Armazenamento: 15 GB. Pode ser mais.
  • Perfil de instância (IAM instance profile): uma role com a policy AmazonSSMManagedInstanceCore e relação de confiança com a EC2. A minha se chama acesso-ssm. Para criar, vá em IAM, Create role, AWS service, EC2 e anexe essa policy.

No campo user data, no fim das configurações avançadas, uso o user_data_ec2_zona_a.sh da pasta scripts do projeto BIA (github.com/henrylle/bia). Ele instala o Docker e o Git, coloca os usuários no grupo docker, ativa o serviço e instala o Docker Compose. Cole o conteúdo no campo e lance a instância.

O começo do script de user data do projeto BIA: atualiza a máquina, instala Git e Docker, coloca ec2-user e ssm-user no grupo docker e ativa o serviço
O começo do script de user data do projeto BIA: atualiza a máquina, instala Git e Docker, coloca ec2-user e ssm-user no grupo docker e ativa o serviço

3Preparar o compose.yml e o .env

Com a instância no ar, abra o Session Manager (aba "Session Manager" na tela de conexão, botão Connect). Troque para o ec2-user, o usuário padrão do Amazon Linux, entre na pasta home dele e crie a pasta do projeto:

bash
mkdir n8n
cd n8n

Copie o compose.yml da documentação do n8n e cole num arquivo novo:

bash
nano compose.yml

Ele já traz o roteamento do serviço, as portas, as variáveis de ambiente e dois volumes, um para o Traefik e outro para o n8n. Salve com Ctrl+X, Y e Enter.

O .env também vem da documentação:

bash
nano .env

São quatro valores:

  • Domínio: o meu, da Formação AWS.
  • Subdomínio: yt.
  • Timezone: America/Sao_Paulo.
  • E-mail: o meu, usado para o certificado SSL.

4Subir o n8n

bash
docker compose up -d

Na primeira tentativa o Compose reclamou de volumes externos, o do Traefik. Eu queria os volumes na própria instância, então tirei a opção de volume externo dos dois volumes no compose.yml e rodei o comando de novo. Aí subiu.

5Apontar o domínio no Route 53

Pegue o IPv4 público da instância. Na zona hospedada do domínio no Route 53, crie um registro do tipo A, com o nome igual ao subdomínio do .env (yt) e o IP da instância como valor.

Abra yt. seguido do seu domínio no navegador. No meu primeiro acesso, o firewall do meu computador reclamou. Liberei, e a página carregou.

6Criar a conta e o primeiro workflow

A tela inicial pede a conta de dono: e-mail, nome e senha. Depois você cria um workflow do zero ou parte de um template pronto.

Como exemplo, montei uma entrada de API com um nó de Webhook:

  1. Escolha quando o webhook responde. "Quando o último nó terminar" dá uma API síncrona, que devolve o resultado. "Imediatamente" dá uma API assíncrona, que só confirma o recebimento e processa depois (útil para carregar uma planilha no banco).
  2. Clique em escutar. O n8n mostra a URL de teste.
  3. Peça ao ChatGPT o comando curl para essa URL, do tipo POST, enviando nome e e-mail, e troque o método do webhook para POST.
  4. Rode o curl no terminal. O nó mostra o nome e o e-mail recebidos.

Dali você mapeia cada campo. Com um PostgreSQL conectado, arrasta a coluna de cada campo, e um nó de código em JavaScript formata o que precisar.

Por que isso não vai para produção

O que subi é uma demonstração, boa para uma prova de conceito. Se a instância morrer, você perde a aplicação, e os dados do n8n ficam na própria máquina. Num serviço que recebe webhooks é pior: se ele estiver fora, o dado que chegou não tem para onde ir.

O n8n que uso de verdade roda num cluster ECS. No CloudWatch, em Container Insights, o mapa mostra o cluster, os services e as task definitions do n8n e do Metabase.

O mapa do Container Insights: o cluster cluster-seattle, com os services e as task definitions do n8n e do Metabase
O mapa do Container Insights: o cluster cluster-seattle, com os services e as task definitions do n8n e do Metabase

O n8n roda com uma task. Se ela cair, o ECS lança outra. Para alta disponibilidade, basta trocar para duas tasks. O cluster não tem custo. O meu tem duas instâncias, uma delas Spot, e na frente um load balancer com regras que mandam cada requisição para o target group do n8n, do Metabase ou do WordPress, em HTTP e HTTPS. O banco não fica na instância: uso um RDS.

É uma arquitetura sem Kubernetes, bem mais barata que um EKS. Veja Amazon ECS na prática e Docker com alta disponibilidade na AWS.

O caminho da instalação: porta 443 liberada, EC2 com Docker, n8n no Compose e o domínio apontado no Route 53Security groupporta 443EC2Docker e Compose pelo user datan8n e Traefikcompose.yml e .envRoute 53registro A para o IP
O caminho da instalação: porta 443 liberada, EC2 com Docker, n8n no Compose e o domínio apontado no Route 53

Checklist

  • Security group criado só com a porta 443.
  • EC2 Amazon Linux 2023 t3.micro, sem par de chaves, com a role de SSM e o user data que instala Docker e Compose.
  • Conexão pelo Session Manager e pasta n8n com compose.yml e .env da documentação.
  • Volumes sem a opção de externo e docker compose up -d rodando.
  • Registro A no Route 53 apontando o subdomínio para o IP da instância.
  • Conta de dono criada.
  • Instância terminada ao fim do teste, para não gerar custo.

O que os alunos dizem

  • “Depois do layoff, percebi que o mercado exigia AWS e eu não sabia nem por onde começar.”

    Gisele, Desenvolvedora Java Sênior

    Ver depoimento
  • “A metodologia da Formação AWS mudou tudo pra mim. Foi ela que consolidou meu conhecimento, me deu segurança e me levou a conquistar a vaga de Engenheiro de Cloud dentro da minha própria empresa.”

    Harnon Ramalho, Engenheiro de Cloud

    Ver depoimento
  • “A Formação AWS me deu a prática, a segurança e a clareza que eu nunca encontrei em nenhum outro curso.”

    Jhon Wilame, SRE / DevOps Engineer

    Ver depoimento

Formação AWS

Aprenda AWS e IA na prática, com projeto real e acompanhamento. Converse com o time sobre a Formação AWS.

Agende uma conversa

Prefere assistir?

A aula completa (39 min) está no canal Domine AWS. O vídeo toca aqui mesmo.

Leia também

Compartilhe este post