Como instalar o n8n em uma VPS
O n8n conecta APIs e serviços por meio de fluxos de trabalho visuais que você pode operar na sua própria infraestrutura. Este guia executa o n8n com PostgreSQL e Docker Compose, mantém o editor privado atrás de HTTPS e aborda as configurações necessárias para webhooks confiáveis.
Pré-requisitos
Use uma VPS Ubuntu 22.04 ou 24.04 limpa, com SSH, IP público e pelo menos 2 GB de RAM. Reserve mais memória se os fluxos executarem código, processarem arquivos ou rodarem simultaneamente. Crie um registro A, como n8n.example.com, apontando para a VPS e reserve as portas 80 e 443 para o proxy reverso.
Você precisa do Docker Engine, do plugin Compose, de um destino para backups e de uma chave de criptografia gerada. Não cole tokens de API no arquivo Compose. Armazene-os nas credenciais do n8n ou em um gerenciador de segredos.
Etapa 1, conectando-se ao servidor
Atualize o servidor e crie um diretório privado para a aplicação:
ssh root@SERVER_IP
apt update && apt upgrade -y
apt install -y ca-certificates curl
mkdir -p /opt/n8n
cd /opt/n8n
chmod 750 /opt/n8nConfira se as portas 80 e 443 estão livres. Se um servidor web antigo já estiver em execução, pare-o somente depois de identificar o que depende dele. O editor do n8n não deve ficar exposto diretamente em uma porta pública.
Etapa 2, instalando o Docker e o Docker Compose
Instale o Docker seguindo as instruções oficiais para Ubuntu e, em seguida, confira o plugin Compose:
docker --version
docker compose version
systemctl enable --now dockerUse uma fonte de pacotes Docker com suporte e mantenha o mecanismo atualizado. Não adicione o socket do Docker a um contêiner público sem relação com essa aplicação.
Etapa 3, executando o n8n com Docker Compose
Crie .env substituindo os marcadores de posição por valores aleatórios exclusivos. A chave de criptografia deve permanecer estável durante toda a vida útil da instalação:
POSTGRES_DB=n8n
POSTGRES_USER=n8n
POSTGRES_PASSWORD=REPLACE_WITH_A_RANDOM_VALUE
N8N_ENCRYPTION_KEY=REPLACE_WITH_A_LONG_RANDOM_VALUE
N8N_HOST=n8n.example.com
N8N_PROTOCOL=https
N8N_WEBHOOK_URL=https://n8n.example.com/
N8N_EDITOR_BASE_URL=https://n8n.example.com/
N8N_PROXY_HOPS=1Crie compose.yaml:
services:
db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- db_data:/var/lib/postgresql/data
n8n:
image: docker.n8n.io/n8nio/n8n:latest
restart: unless-stopped
depends_on:
- db
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: db
DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
DB_POSTGRESDB_USER: ${POSTGRES_USER}
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
N8N_HOST: ${N8N_HOST}
N8N_PROTOCOL: ${N8N_PROTOCOL}
N8N_WEBHOOK_URL: ${N8N_WEBHOOK_URL}
N8N_EDITOR_BASE_URL: ${N8N_EDITOR_BASE_URL}
N8N_PROXY_HOPS: 1
ports:
- "127.0.0.1:5678:5678"
volumes:
- n8n_data:/home/node/.n8n
volumes:
db_data:
n8n_data:Inicie o projeto e confira os logs:
docker compose up -d
docker compose ps
docker compose logs --tail 100 n8nFixe as versões das imagens depois de testá-las, em vez de depender de latest para atualizações em produção.
Etapa 4, configurando o proxy reverso
Configure o Caddy, o Nginx ou o proxy da sua plataforma para encaminhar n8n.example.com a 127.0.0.1:5678. O proxy precisa incluir estes três cabeçalhos para que os webhooks funcionem corretamente:
X-Forwarded-For, preserva o IP original do clienteX-Forwarded-Host, preserva o nome de domínio originalX-Forwarded-Proto, preserva o protocolo original (HTTP/HTTPS)
Deixe o proxy cuidar do HTTPS, mantenha a porta 5678 vinculada ao localhost e bloqueie-a no firewall.
Teste o editor e um endpoint de webhook. Se um provedor não conseguir acessar o webhook, confira o DNS, a validade do certificado, os cabeçalhos do proxy e o valor de N8N_WEBHOOK_URL antes de alterar o código dos fluxos do n8n.
Etapa 5, primeiro acesso e configuração inicial
Acesse https://n8n.example.com e crie a conta proprietária. O n8n exige isso desde a versão v0.200+, então a primeira pessoa a se cadastrar se torna proprietária da instância. Ative o gerenciamento de usuários e limite os convites. Crie uma credencial de teste, execute um fluxo simples e confirme que os dados de execução continuam armazenados após uma reinicialização.
Revise a retenção das execuções e desative o armazenamento detalhado de dados quando não for necessário. As credenciais devem ser criadas dentro do n8n, nunca codificadas em nós ou em arquivos de ambiente que sejam copiados entre locais.
Manutenção
Faça backup do volume n8n_data (que contém a chave de criptografia), do PostgreSQL e da chave de criptografia em conjunto. Se o volume n8n_data for perdido, todas as credenciais armazenadas ficarão irrecuperáveis. Um backup do banco de dados sem a chave de criptografia não consegue descriptografar as credenciais. Atualize uma versão por vez quando as notas de versão exigirem, teste os fluxos após cada atualização e mantenha uma cópia para reversão.
Monitore o tempo na fila, a memória, o disco e as execuções com falha. Para cargas maiores, adote o modo de fila documentado pelo n8n e provisione uma arquitetura separada para os processos de trabalho, em vez de aumentar indefinidamente um único contêiner.
Ferramentas mencionadas
n8n
↗Plataforma de automação de fluxos com código disponível, editor visual e hospedagem própria
Community Edition gratuita e self-hosted sob a Sustainable Use License. O n8n Cloud oferece um teste sem cartão; o Starter custa €20/mês com cobrança anual.