Instalação com Docker
O n8n recomenda o uso do Docker na maioria dos cenários de hospedagem própria. Ele oferece um ambiente limpo e isolado, evitando problemas de incompatibilidade com o sistema operacional e a cadeia de ferramentas, além de simplificar o gerenciamento de banco de dados e variáveis de ambiente.
Você também pode usar o Docker Compose para executar o n8n no Docker. Arquivos de configuração do Docker Compose para diversas arquiteturas estão disponíveis no repositório n8n-hosting.
Conhecimentos prévios para hospedagem própria
A hospedagem própria do n8n exige conhecimentos técnicos, incluindo:
- Configuração e gerenciamento de servidores e contêineres
- Gerenciamento e escalabilidade de recursos da aplicação
- Reforço de segurança do servidor e da aplicação
- Gerenciamento de configurações do n8n
O n8n recomenda a hospedagem própria apenas para usuários experientes. Erros de operação podem resultar em perda de dados, problemas de segurança ou interrupção do serviço. Se você não tiver experiência com administração de servidores, recomendamos utilizar o n8n Cloud.
Você também pode seguir nosso guia em vídeo:
Pré-requisitos
Antes de começar, instale o Docker:
- Docker Desktop está disponível para Mac, Windows e Linux. O Docker Desktop inclui o Docker Engine e o Docker Compose.
- O Docker Engine e o Docker Compose também podem ser instalados como pacotes independentes no Linux. Essa opção é ideal para servidores Linux sem interface gráfica ou quando você prefere não usar a interface do Docker Desktop.
Versões estáveis e beta
O n8n lança uma nova versão secundária quase toda semana. A versão stable é adequada para ambientes de produção, enquanto a versão beta corresponde à versão mais recente e pode não ser totalmente estável. Caso encontre problemas, use o fórum da comunidade para relatar.
- Versão
stableatual: 2.10.2 - Versão
betaatual: 2.11.1
Iniciando o n8n
Execute o seguinte comando no terminal, substituindo o marcador <YOUR_TIMEZONE> pelo seu fuso horário:
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="`<YOUR_TIMEZONE>`" \
-e TZ="`<YOUR_TIMEZONE>`" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
Esse comando cria um volume para armazenar dados persistentes, baixa a imagem necessária do n8n e inicia o contêiner com as seguintes configurações:
- Mapeia e expõe a porta
5678do contêiner para o host. - Define o fuso horário do contêiner:
- A variável de ambiente
TZdefine o fuso horário do sistema, controlando o comportamento de comandos comodate. - A variável
GENERIC_TIMEZONEdefine o fuso horário correto para nós orientados a agendamento, como o nó Schedule Trigger.
- A variável de ambiente
- Aplica permissões seguras aos arquivos de configuração do n8n.
- Habilita os runners (executores), que são a forma recomendada de executar tarefas no n8n.
- Monta o volume
n8n_datano diretório/home/node/.n8n, garantindo a persistência dos dados mesmo após reinicializações do contêiner.
Após a inicialização, abra seu navegador e acesse http://localhost:5678 para usar o n8n.
Usando PostgreSQL
Por padrão, o n8n usa SQLite para armazenar credenciais, histórico de execuções e fluxos de trabalho. No entanto, o n8n também oferece suporte ao PostgreSQL, que pode ser configurado por meio de variáveis de ambiente, conforme descrito abaixo.
Persistência do diretório .n8n ainda é recomendada
Ao usar PostgreSQL, o n8n não precisa mais armazenar o banco de dados SQLite no diretório .n8n. No entanto, esse diretório ainda contém dados importantes, como chaves de criptografia, logs da instância e ativos relacionados ao controle de versão do código-fonte. Embora seja possível contornar algumas dessas dependências (por exemplo, definindo a variável de ambiente N8N_ENCRYPTION_KEY), é altamente recomendável continuar montando um volume persistente para esse diretório, a fim de evitar problemas futuros.
Para usar o n8n com PostgreSQL, execute o seguinte comando, substituindo os marcadores entre colchetes angulares (como <nome do banco>) pelos valores reais:
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="`<YOUR_TIMEZONE>`" \
-e TZ="`<YOUR_TIMEZONE>`" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-e DB_TYPE=postgresdb \
-e DB_POSTGRESDB_DATABASE=<nome do banco> \
-e DB_POSTGRESDB_HOST=<endereço do host> \
-e DB_POSTGRESDB_PORT=<número da porta> \
-e DB_POSTGRESDB_USER=<nome de usuário> \
-e DB_POSTGRESDB_SCHEMA=<nome do esquema> \
-e DB_POSTGRESDB_PASSWORD=<senha> \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
Você pode encontrar um arquivo completo do docker-compose para PostgreSQL no repositório n8n-hosting.
Atualização
Para atualizar o n8n, no Docker Desktop, navegue até a aba Images (Imagens) e selecione Pull (Puxar) no menu de contexto para baixar a imagem mais recente do n8n:

Você também pode usar a linha de comando para puxar a versão mais recente ou uma versão específica:
# Puxar a versão mais recente (stable)
docker pull docker.n8n.io/n8nio/n8n
# Puxar uma versão específica
docker pull docker.n8n.io/n8nio/n8n:1.81.0
# Puxar a versão next (instável)
docker pull docker.n8n.io/n8nio/n8n:next
Após puxar a imagem atualizada, pare seu contêiner do n8n e reinicie-o. Você também pode fazer isso via linha de comando. Nos comandos abaixo, substitua <ID_DO_CONTÊINER> pelo ID obtido no primeiro comando:
# Encontrar o ID do seu contêiner
docker ps -a
# Parar o contêiner com <ID_DO_CONTÊINER>
docker stop <ID_DO_CONTÊINER>
# Remover o contêiner com <ID_DO_CONTÊINER>
docker rm <ID_DO_CONTÊINER>
# Iniciar o contêiner
docker run --name=<nome_do_contêiner> [opções] -d docker.n8n.io/n8nio/n8n
Atualização com Docker Compose
Se você estiver executando o n8n com um arquivo Docker Compose, siga estas etapas para atualizá-lo:
# Acesse o diretório que contém o arquivo docker-compose
cd <seu_diretório>
# Puxe a versão mais recente
docker compose pull
# Pare e remova a versão antiga
docker compose down
# Inicie os contêineres
docker compose up -d
Usando o n8n com túnel
Perigo
Use apenas para desenvolvimento e testes locais. Não é adequado para ambientes de produção.
Ferramenta de desenvolvimento
A funcionalidade de túnel é uma ferramenta conveniente para desenvolvimento local, mas sua implementação interna pode mudar entre versões do n8n.
Para que nós de gatilho de serviços externos (como o GitHub) possam usar webhooks, o n8n precisa ser acessível pela internet. O n8n oferece um serviço de túnel baseado no cloudflared, que redireciona requisições da internet para sua instância local do n8n. Essa funcionalidade requer o Docker.
Existem duas formas de usar o túnel, dependendo de como você executa o n8n:
Pilha completa (Full stack)
Nessa abordagem, o n8n e o cloudflared são executados juntos em um contêiner. A URL do túnel é exibida durante a inicialização, e tudo é conectado automaticamente:
pnpm stack --tunnel
Apenas serviços (Services only)
Se você preferir executar o n8n localmente com pnpm dev ou pnpm start, pode iniciar o cloudflared como um serviço independente:
# Terminal 1: iniciar o serviço de túnel cloudflared
pnpm --filter n8n-containers services --services cloudflared
# Terminal 2: iniciar o n8n localmente
pnpm dev
O comando services realiza as seguintes ações:
- Inicia o cloudflared apontando para
host.docker.internal:5678(seu n8n local). - Obtém a URL pública do túnel a partir do endpoint de métricas do cloudflared.
- Cria um arquivo
.envempackages/cli/bin/.envcontendo as variáveisWEBHOOK_URLeN8N_PROXY_HOPS=1. - Os comandos
pnpm devepnpm startcarregam automaticamente esse arquivo.envpor meio do dotenv.
Para limpar os recursos após o uso:
pnpm --filter n8n-containers services:clean
Próximos passos
- Consulte o arquivo README das imagens Docker para obter mais informações sobre configuração com Docker.
- Aprenda como configurar e escalar o n8n.
- Explore o uso do n8n: experimente o guia de início rápido.