Go back
Como instalar o n8n no Dokploy + Caso de uso com GLPI
Nesse post eu ensino como instalar o n8n no dokploy e também trago um caso de uso de envio de eventos do GLPI para o n8n, em que o registro do chamado é persistido no banco de dados por meio do n8n.
https://www.youtube.com/watch?v=W4HLSEO6eOM
- Configurar e rodar o container do n8n
- Acesse a página de projetos no Dokploy, crie ou acesse um projeto já existente.
- Em “Create Service” escolha a opção “Compose”.
- Na aba “General” escolha a opção “Raw”.
Cole o seguinte conteúdo:services:
n8n:
image: docker.n8n.io/n8nio/n8n:stable
restart: always
env_file:
- .env
volumes:
- n8n_data:/home/node/.n8n
networks:
- dokploy-network
ports:
- 4442:${N8N_PORT}
volumes:
n8n_data:
networks:
dokploy-network:
external: true
- Na aba “Environment” cole o seguinte conteúdo:
N8N_HOST=localhost
N8N_PORT=5678
GENERIC_TIMEZONE=America/Sao_Paulo
N8N_PROTOCOL=http
NODE_ENV=production
WEBHOOK_URL=https://${N8N_HOST}/
N8N_SECURE_COOKIE=false
- Seu n8n está pronto para rodar, clique em “Deploy” na aba “General” e acompanhe o progresso na aba “Deployments”.
- Domínio (Opcional)
- Na aba “Domains” clique em “Add Domain”.
- Em “Service Name” selecione o serviço rodando “n8n”.
- Se não tiver feito o deploy ainda, apenas digite o nome do serviço, no exemplo do compose acima, colocamos “n8n” então basta digitar isso que ao fazer o deploy o domínio será corretamente atribuído.
- No campo “Host” você deve digitar o domínio que você quer atribuir, exemplo: “n8n.meudominio.com” ou apenas “meudominio.com”.
- Em “Path” e “Internal Path” apenas digite “/”.
- Em “Container Port” digite a porta interna configurada no serviço do n8n, no nosso caso, isso foi especificado nas variáveis de ambiente na variável “N8N_PORT”, então digite 5678.
- Caso você tiver um domínio registrado realmente e quiser habilitar o HTTPS, marque a opção HTTPS que o traefik cuidará de tudo.
- Overview da ferramenta
O n8n trabalha com “Workflows” cada workflow é um projeto que recebe chamadas e executa o passo a passo configurado.
Ao acessar ou criar um workflow você verá que primeiro você precisará definir um trigger, ou seja, um ponto de partida onde o passo passo vai saber que tem que ser executado, após isso você adicionará os nodes.
Os nodes são os passos que serão executados, cada passo recebe e gere informações, ou seja, cada passo pode passar dados um para o outro, assim criando uma rede de execução. - Caso de uso: Receber evento de abertura de chamado do GLPI no N8N
- O que é um Webhook?
Um webhook, é um endpoint criado no seu serviço, que recebe requisições HTTP e processa os dados enviados.
Ao contrário de uma requisição HTTP POST normal por exemplo, em que a resposta é recebida na hora, um webhook é uma alternativa a respostas que podem demorar a serem enviadas.
Por exemplo, você pediu para um serviço gerar um boleto, mas quer ser avisado quando o boleto for pago, então basta fornecer um webhook para o serviço junto com a forma de autenticação, assim que o boleto for pago o serviço dispara uma requisição para o seu webhook, assim você pode fazer o que quiser com aquela informação, pode marcar como pago, persistir logs etc.
!image.png
Fonte da imagem: https://www.zoho.com/blog/assist/webhooks-what-are-they-and-how-are-they-used.html - Configurando webhook no n8n
- Acesse o seu n8n e edite ou crie um novo workflow
- Clique em “Add first step” e selecione “On webook call”
- Lado esquerdo: Dados de origem
- Lado direito: Dados gerados pelo node
- Centro: Configuração do node
- Neste exemplo, vamos utilizar o método POST, então em “HTTP Method” mude para POST.
- O “Path” é customizável então sinta-se a vontade para deixar no padrão ou utilizar um do seu gosto.
- A autenticação do webhook é importante para garantir a segurança do seu webhook, mas nesse exemplo iremos deixar como “none” o campo “Authentication”.
- Em “Respond” selecione “Using 'Respond to Webhook' Node”.
- Configurando o Webhook no GLPI
- Acesse o seu GLPI e no menu laterial selecione “Setup” → “Webhooks”
- No menu superior clique em “+ Add”
- Nas informações do Webhook, preecha corretamente os campos lembrando de ativar o webbook deixando “Active” como “Yes”.
- Em “Itemtype” selecione “Assistance - Ticket”.
- Em “Event” selecione “New”
- Isso fará com que o evento só é disparado ao criar novos chamados.
- Em “Target” configure a URL do seu n8n e deixe o “HTTP Method” como “POST”.
- Após isso, revise os dados e clique em “+ Add” para criar o wehbook
- Na aba “Custom headers” clique em “+ Add a custom header”, e adicione o seguinte header sendo “chave: valor”.
- Content-Type: application/json
- Nota: É necessário que você cheque o bom funcionamento da ação automática “queuedwebhook” em “Setup” → “Automatic actions” para que todos os webhooks que estiverem na fila possam ser enviados automaticamente pelo próprio GLPI.
- Configurando a credencial do banco de dados
- Volte ao menu principal do n8n e selecione a aba “Credentials”.
- Clique em “Create credential” e selecione o tipo do banco de dados que deseja
- No meu caso selecionei “Postgres”, após escolherm clique em “Continue”
- Em “Host” digite o endereço do seu banco de dados
- Após isso, configure corretamente as credenciais em “Database”, “User” e “Password”.
- Finalmente clique em “Save”, um teste de conexão será realizado.
- Criando a tabela no banco de dados
- Acesse o Dbeaver ou o Pgadmin e execute o seguinte script.
create table wh_tickets (
id INTEGER GENERATED ALWAYS AS identity,
ticket_id int4 not null,
ticket_created_at timestamptz not null,
constraint wh_tickets_pk primary key (id),
constraint wh_tickets_uk unique (ticket_id)
);
- Isso cria uma tabela que vai guardar as informações básicas do ticket criado no GLPI como ID interno do GLPI e nome do chamado.
- Criando o node que vai gravar o registro no banco de dados
- Acesse o workflow e identifique o node trigger.
- Clique no símbolo de “+” ao lado dele e pesquise por “Postgres” → “Insert rows in a table”.
- Em “Credential” selecione a credencial criada anteriormente
- Em “Operation”, neste exemplo faremos uma inserção de registro então “Insert” deverá ser selecionado.
- Em “schema” selecione o seu schema no banco de dados, geralmente o padrão é “public”
- Em “table”, selecione a tabela que quer inserir os dados, nesse exemplo a tabela se chama “wh_tickets”.
- Na seção “Values to send” é onde iremos mapear as chaves vindas no JSON da requisição para as colunas da tabela para o insert.
- Em “id” exclua o valor e deixe o campo em branco
- Em “ticket_id” cole “”
- Em “ticket_name” cole “”
- Em “ticket_created_at” cole “”
- Nota: Opcionalmente você pode arrastar a chave no body para o campo do valor a ser inserido na coluna.
!image.png- Nota 2: Se o payload no glpi mudar, esse fluxo será invalidado.
- Pronto, o workflow está pronto
- Testes
- Após concluir todos os passos acima, basta criar um ticket no glpi e aguardar a ação automática enviar o webhook pendente na fila para o n8n.
- Após o webhook for enviado basta abrir o banco de dados que será possível visualizar o registro do chamado.