Introdução
A automação não deve ser difícil – ou arriscada. Se você já tentou unir ferramentas com scripts personalizados ou zaps SaaS pagos, você conhece o problema: lógica frágil, dependência de fornecedor e custos crescentes. n8n corrige isso. É uma plataforma de automação auto-hospedada e de código aberto que conecta seus aplicativos e APIs com um construtor visual limpo, ao mesmo tempo que oferece controle total.
Neste guia, você aprenderá como instalar o n8n no macOS com Docker Desktop da maneira certa: armazenamento persistente, PostgreSQL (não SQLite), credenciais criptografadas, webhooks seguros e rotinas limpas de atualização/backup. Manteremos as coisas rápidas e fáceis de usar para iniciantes, sem pular os detalhes de nível de produção. No final, você terá um hub de automação local confiável que poderá usar para trabalho real – testar webhooks, criar fluxos de captura de leads ou orquestrar pipelines de IA – e depois promover para um servidor com confiança.
O que você construirá
- Uma instância local n8n em execução em contêineres Docker
- Banco de dados PostgreSQL para armazenamento durável
- Uma pasta de projeto organizada com volumes para backups e exportações compatíveis com Git
- Um webhook funcional e uma automação simples que você pode reutilizar em qualquer lugar
- Extras opcionais (trabalhadores de fila Redis, HTTPS, túnel para webhooks públicos)
Para quem se destina este guia
- Desenvolvedores que desejam um ambiente local seguro para criar e testar automações
- Criadores e profissionais de marketing que precisam de fluxos de trabalho no estilo Zapier sem a fatura mensal
- Equipes que planejam auto-hospedar n8n mais tarde, mas desejam começar em um Mac hoje
Pré-requisitos
- macOS (Apple Silicon ou Intel)
- Docker Desktop instalado e funcionando
- Conforto básico do terminal
- (Opcional) Homebrew para instalar extras como ngrok ou Cloudflare Tunnel
O panorama geral (por que Docker + Postgres)
Por que Docker? Consistência. Você obtém o mesmo ambiente localmente e em produção – sem drama de “funciona na minha máquina”. Por que PostgreSQL? Ele é robusto e preferido para produção. SQLite é adequado para testes rápidos, mas o Postgres mantém seus fluxos de trabalho, logs de execução e credenciais sólidos e recuperáveis. Por que local primeiro? Você pode iterar com segurança. Assim que seu fluxo de trabalho estiver estável, você poderá mover a configuração exata para um VPS quase sem alterações.
Etapa 1: Crie um projeto limpo
Abra o Terminal e crie uma pasta dedicada:
mkdir -p ~/n8n-stack/{n8n_data,db_data}
cd ~/n8n-stack
n8n_dataarmazena configuração, credenciais e exportações n8ndb_dataarmazena seus arquivos de banco de dados PostgreSQL- Mantê-los lado a lado simplifica os backups (basta copiar a pasta)
Etapa 2: Adicionar variáveis de ambiente
Crie um arquivo .env em ~/n8n-stack. Esses valores configuram seus contêineres e mantêm os segredos fora do controle de versão.
# ---- núcleo n8n ----
N8N_HOST=localhost
N8N_PORT=5678
N8N_PROTOCOL=http
NODE_ENV=produção
# Use uma string longa e aleatória (armazene em seu gerenciador de senhas)
N8N_ENCRYPTION_KEY=CHANGE_ME_TO_A_LONG_RANDOM_64_CHAR_STRING
# Configurações de privacidade e UX
N8N_USER_MANAGEMENT_DISABLED=falso
N8N_DIAGNOSTICS_ENABLED=falso
N8N_PERSONALIZATION_ENABLED=falso
# Limpeza de execução (mantém o banco de dados reduzido)
EXECUTIONS_DATA_PRUNE=verdadeiro
EXECUTIONS_DATA_MAX_AGE=336 # horas (14 dias)
EXECUTIONS_DATA_PRUNE_MAX_COUNT=10000
# ---- banco de dados ----
DB_TYPE=postgredb
DB_POSTGRESDB_HOST=db
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n_user
DB_POSTGRESDB_PASSWORD=CHANGE_THIS_STRONG_PASSWORD
# ---- modo de fila (opcional) ----
N8N_EXECUTIONS_MODE=normal
QUEUE_BULL_REDIS_HOST=redis
QUEUE_BULL_REDIS_PORT=6379
Dica profissional: Gere uma chave segura diretamente no Terminal:
python3 - <<'PY'
importar segredos, string
alfabeto = string.ascii_letras + string.dígitos + string.pontuação
print(''.join(secrets.choice(alfabeto) para _ no intervalo(80)))
PA
Cole a saída em N8N_ENCRYPTION_KEY.
Etapa 3: Crie o arquivo Docker Compose
Adicione um docker-compose.yml na mesma pasta:
versão: "3.8"
serviços:
n8n:
imagem: n8nio/n8n:mais recente
reiniciar: a menos que seja parado
arquivo_env: .env
portos:
- "5678:5678"
ambiente:
- WEBHOOK_URL=${N8N_PROTOCOL}://${N8N_HOST}:${N8N_PORT}/
volumes:
- ./n8n_data:/home/node/.n8n
depende_de:
- banco de dados
banco de dados:
imagem: postgres:15
reiniciar: a menos que seja parado
ambiente:
-POSTGRES_USER=${DB_POSTGRESDB_USER}
-POSTGRES_PASSWORD=${DB_POSTGRESDB_PASSWORD}
-POSTGRES_DB=${DB_POSTGRESDB_DATABASE}
volumes:
- ./db_data:/var/lib/postgresql/data
# Opcional: habilite mais tarde para execuções paralelas/enfileiradas
#redis:
#imagem: redis:7-alpino
#reiniciar: a menos que seja interrompido
Por que esse layout funciona:
- O contêiner n8n persiste tudo que é importante dentro de
./n8n_data - Os dados do Postgres residem em
./db_data env_filemantém segredos fora do YAML e fora do Git
Etapa 4: iniciar n8n
De ~/n8n-stack:
docker compor -d
abra http://localhost:5678
Você verá a tela configuração do proprietário. Crie sua conta de administrador com uma senha forte.
Etapa 5: bloqueie suas configurações básicas
Vá em Configurações → Geral e confirme:
- Fuso horário: defina seu horário local
- URL do Webhook:
http://localhost:5678/para testes locais - Execuções: remoção habilitada (já definida via
.env)
Salve as alterações.
Etapa 6: Smoke Test um Webhook (sua primeira automação)
-
Clique em Criar fluxo de trabalho → Começar do zero
-
Adicione o nó Webhook
- Método HTTP:
POST - Caminho:
hello(ou deixe o caminho automático)
- Método HTTP:
-
Adicione o nó Responder ao Webhook
-
Resposta: JSON
-
Corpo:
{ "ok": verdadeiro, "recebido": "{{$json.body.ping || 'pong'}}" }
-
-
Conecte Webhook → Responder ao Webhook
-
Clique em Ouvir evento de teste no nó Webhook
-
No Terminal:
curl -X POST "http://localhost:5678/webhook-test/<seu-id>" \
-H "Tipo de conteúdo: aplicativo/json" \
-d '{"ping":"pong"}'
Você verá a solicitação chegar na saída do nó e receberá uma resposta JSON 200.
Clique em Ativar para obter um URL de produção que você pode chamar mesmo quando o editor não estiver ouvindo.
Etapa 7: exponha seu webhook publicamente (opcional, prático)
Quando você quiser testar webhooks de serviços externos (formulários, Stripe, GitHub), use um túnel seguro.
Opção A — ngrok
preparar instalar ngrok/ngrok/ngrok
ngrok http://localhost:5678
Opção B — Cloudflare Tunnel (gratuito, estável)
preparar instalar cloudflare/cloudflare/cloudflared
túnel cloudflared --url http://localhost:5678
Copie o URL HTTPS fornecido. Em n8n Configurações → Geral, defina temporariamente Webhook URL com esse valor para que seus URLs de produção usem HTTPS.
Etapa 8: Construa uma automação simples, mas significativa
Aqui está um começo real e útil: Uptime & Error Watchdog.
- A cada 5 minutos: execute ping em uma lista de URLs
- Se algum retornar
>= 400, envie um alerta do Slack com a URL e o código de status
Importe o fluxo de trabalho abaixo (n8n → Importar → colar JSON). Em seguida, edite a lista de URLs e o canal do Slack.
{
"name": "Tempo de atividade e monitoramento de erros",
"nós": [
{
"parâmetros": {
"triggerTimes": { "item": [ { "mode": "everyX", "unit": "minutos", "valor": 5 } ] }
},
"id": "Cron",
"nome": "Cron (a cada 5m)",
"tipo": "n8n-nodes-base.cron",
"typeVersion": 1,
"posição": [220, 280]
},
{
"parâmetros": {
"functionCode": "const urls = [\n 'https://www.ramlit.com/',\n 'https://www.colorpark.io/',\n 'https://www.xcybersecurity.io/',\n 'https://www.mejba.me/'\n];\nreturn urls.map(u => ({ url: u }));"
},
"id": "Semente",
"nome": "URLs iniciais",
"type": "n8n-nodes-base.function",
"typeVersion": 2,
"posição": [440, 280]
},
{
"parâmetros": {
"url": "={{$json.url}}",
"responseFormat": "string",
"opções": { "ignoreResponseCode": verdadeiro, "tempo limite": 10000 }
},
"id": "HTTP",
"nome": "Verificação HTTP",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"posição": [660, 280]
},
{
"parâmetros": {
"condições": {
"número": [ { "valor1": "={{$json.statusCode}}", "operação": "maiorEqual", "valor2": 400 } ]
}
},
"id": "SE",
"nome": "Erro SE (>=400)",
"tipo": "n8n-nodes-base.if",
"typeVersion": 1,
"posição": [880, 280]
},
{
"parâmetros": {
"canal": "#alertas",
"text": "Alerta de tempo de atividade: {{$json.url}} retornou HTTP {{$json.statusCode}}"
},
"id": "Folga",
"nome": "Alerta de folga",
"type": "n8n-nodes-base.slack",
"typeVersion": 1,
"posição": [1100, 240],
"credenciais": { "slackApi": { "id": "replace-in-ui" } }
}
],
"conexões": {
"Cron (a cada 5m)": { "main": [ [ { "node": "Seed URLs", "type": "main", "index": 0 } ] ] },
"URLs iniciais": { "main": [ [ { "node": "Verificação HTTP", "type": "main", "index": 0 } ] ] },
"Verificação HTTP": { "main": [ [ { "node": "IF error (>=400)", "type": "main", "index": 0 } ] ] },
"Erro IF (>=400)": { "main": [ [ { "node": "Slack Alert", "type": "main", "index": 0 } ], [] ] }
}
}
Por que isso é valioso: você detectará rapidamente tempos de inatividade ou erros de roteamento, antes que os clientes o façam. Estenda-o registrando falhas no Planilhas Google ou no Notion.
Etapa 9: Credenciais, privacidade e princípios básicos de segurança
Mesmo localmente, trate os segredos com cuidado:
- Armazene tokens de API em Credenciais (eles são criptografados com seu
N8N_ENCRYPTION_KEY). - Para webhooks de entrada, adicione um cabeçalho secreto (por exemplo,
X-Webhook-Secret) e verifique-o com um nó Function. - Mantenha diagnósticos e personalização desativados para privacidade.
- Use um gerenciador de senhas para armazenar seus segredos
.env– não os envie para o Git.
Etapa 10: Backups e exportações de fluxo de trabalho
Seus ativos mais importantes estão em dois lugares:
~/n8n-stack/n8n_data(configuração n8n e armazenamento de credenciais)~/n8n-stack/db_data(dados Postgres)
Backup manual rápido:
- Pare os contêineres:
docker compose down - Copie toda a pasta
~/n8n-stackpara uma unidade segura ou S3 - Comece de novo:
docker compose up -d
Exporte fluxos de trabalho para um único arquivo JSON (ótimo para Git):
docker exec -it $(docker ps --filter nome=n8n -q) \
exportação n8n: fluxo de trabalho --all --output=/home/node/.n8n/exports.json
# O arquivo aparecerá dentro de ./n8n_data
Etapa 11: Atualizando n8n com segurança
- Exporte seus fluxos de trabalho (
exports.json) - Faça uma cópia rápida das pastas
n8n_dataedb_data - Extraia a imagem mais recente e recrie:
docker compor puxar
docker compor -d
Se algo parecer errado, você pode reverter trocando suas pastas de backup novamente.
Etapa 12: Aumento de desempenho opcional (Workers + Redis)
Quando os fluxos de trabalho ficarem pesados (chamadas de IA, uploads de arquivos, APIs lentas), mude para o modo de fila e gere trabalhadores.
-
Remova o comentário do serviço
redisemdocker-compose.yml -
Definido em
.env:N8N_EXECUTIONS_MODE=fila -
Iniciar serviços e um trabalhador:
docker compor -d
docker compor execute --no-deps --name n8n-worker-1 \
-e N8N_EXECUTIONS_MODE=fila \
-e QUEUE_BULL_REDIS_HOST = redis\
n8n n8n trabalhador
Você pode executar vários trabalhadores para execução paralela.
Etapa 13: Do Mac à produção (quando estiver pronto)
A beleza do Docker é que a promoção é simples. Em um VPS (ou em Kubernetes):
- Reutilize as mesmas imagens e variáveis de ambiente
- Coloque n8n atrás de Caddy/Nginx com HTTPS (Let’s Encrypt)
- Adicione o Cloudflare Access ou seu SSO para obter uma UI de administração segura
- Agende backups regulares do banco de dados Postgres e
n8n_data
Seus aprendizados locais acompanham você, sem necessidade de reconstrução.
Armadilhas comuns (e soluções rápidas)
“Porta já em uso.”
Altere N8N_PORT em .env e o mapeamento de ports em docker-compose.yml e, em seguida, docker compose up -d.
“Permissão negada” em volumes. Corrija propriedade/permissões:
chmod -R 775 ~/n8n-stack/n8n_data ~/n8n-stack/db_data
Erros de URL de teste do Webhook.
- Use o URL de teste somente enquanto “Ouvir evento de teste” estiver ativo.
- Após clicar em Ativar, use o URL de produção.
Grande crescimento do banco de dados.
- Continue podando (já configurado).
- Evite salvar grandes dados binários em nós; use S3/Drive sempre que possível.
Comparações: Por que n8n vs. Zapier/Make?
- Controle de custos: o n8n é de código aberto e auto-hospedável — escalonável sem penalidades por zap.
- Flexibilidade: lógica em nível de código por meio de nós de função; crie nós personalizados, se necessário.
- Controle de dados: execute em seu hardware; alinhar-se com a conformidade ou com as demandas do cliente.
- Portabilidade: A configuração Dockerizada reflete a produção – altere os ambientes facilmente.
Casos de uso do mundo real que você pode criar a seguir
- Ingestão de leads: Webhook → Normalizar → Notificação do Slack → Anexo do Planilhas Google
- Daily AI Digest: Cron → API de pesquisa → Resumo OpenAI → Postar no Notion
- Roteamento de incidentes: GitHub/CI Webhook → Analisar logs → Alerta Slack/PagerDuty
- Operações financeiras: Importação de CSV → limpar dados → armazenar no Postgres → relatório por e-mail
- Operações de vendas: Evento Stripe → enriquecer com CRM → notificar e marcar no Slack
Cada um deles pode ser iniciado no seu Mac e produzido posteriormente com filas e HTTPS.
Marcadores / Conclusões rápidas
- Docker + Postgres oferece um n8n estável e semelhante a produção no macOS.
- Criptografe credenciais com
N8N_ENCRYPTION_KEYe evite cometer segredos. - Use URLs de teste enquanto ouve; URLs de produção após ativação.
- Faça backup de
n8n_dataedb_dataou exporte fluxos de trabalho regularmente. - Adicione Redis + trabalhadores quando os fluxos ficarem mais pesados; você ganhará paralelismo.
- Túneis (ngrok/Cloudflare) tornam os testes de webhook externos simples e seguros.
- A promoção para um VPS consiste principalmente em copiar e colar: mesmo arquivo do Compose, perímetro mais forte.
Chamada para ação
Se você leva automação a sério, não pare no “olá, mundo”. Escolha um processo – entrada de leads, alertas de tempo de atividade ou um relatório diário de IA – e envie-o hoje mesmo. Quer um fluxo de trabalho inicial personalizado (Slack + Sheets ou resumo de IA → Notion)? Diga-me suas ferramentas de destino e fornecerei um JSON pronto para importação que você pode executar imediatamente.
🤝 Contrate/Trabalhe comigo:
- 🔗 Fiverr (construções personalizadas, integrações, desempenho): https://www.fiverr.com/s/EgxYmWD
- 🌐 Portfólio Pessoal Mejba: https://www.mejba.me
- 🏢 Ramlit Limitada: https://www.ramlit.com
- 🎨 Agência Criativa ColorPark: https://www.colorpark.io
- 🛡 Serviços Globais xCyberSecurity: https://www.xcybersecurity.io
Perguntas frequentes
1) Posso usar SQLite em vez de Postgres? Você pode, mas não é ideal para nada além de experimentos rápidos. Postgres é mais confiável, mais fácil de fazer backup e recomendado para trabalhos reais.
2) Preciso de HTTPS no meu Mac? Para o desenvolvimento local, não. Se você expor webhooks publicamente, use um túnel (ngrok/Cloudflare). Para produção, coloque n8n atrás de um proxy reverso com HTTPS.
3) Como mantenho meus fluxos de trabalho seguros durante atualizações?
Exporte fluxos de trabalho para JSON, faça backup de n8n_data e db_data e, em seguida, atualize. Se algo quebrar, reverta as pastas.
4) Por que meu URL de teste não funciona depois de um minuto? URLs de teste funcionam apenas enquanto o editor escuta eventos. Clique em “Ouvir evento de teste” novamente ou use o URL de produção após a ativação.
5) Posso executar vários fluxos de trabalho em paralelo no meu Mac? Sim. Mude para o modo de fila com Redis e inicie um ou mais trabalhadores.
6) Como me conecto ao Slack, ao Planilhas Google ou ao Notion?
Crie credenciais em Credenciais (OAuth ou token) e selecione-as no arquivo node. n8n os armazena criptografados usando seu N8N_ENCRYPTION_KEY.
7) O n8n é adequado para empresas? Sim, quando auto-hospedado adequadamente com SSO/OIDC, HTTPS, backups e acesso baseado em função. A configuração do seu Mac reflete a arquitetura que você usará na produção.
8) E quanto aos fluxos de trabalho de IA? n8n integra-se com OpenAI e outros provedores. Adicione nós de função para prompts personalizados ou APIs de cadeia (pesquisar → resumir → publicar) com novas tentativas e tempos limite.
Pronto. Você instalou o n8n no seu Mac com Docker Desktop, verificou webhooks e aprendeu uma maneira voltada para a produção de criar automações nas quais você pode confiar. Agora coloque-o para funcionar.