Pular para o conteúdo
SelfHostBR, página inicial
Guia

n8n com Ollama: IA local na sua VPS com Docker Compose

Como rodar n8n e Ollama juntos no Docker Compose, baixar um modelo, criar a credencial do Ollama no n8n e montar um workflow com IA sem API paga.

CSCaio Servidor Publicado em 7 min de leitura
Nesta página

Resposta curta: suba o n8n e o Ollama no mesmo docker compose, baixe um modelo com ollama pull e, no n8n, crie a credencial Ollama com a Base URL http://ollama:11434 (o nome do serviço, não localhost). Depois é só ligar o nó Ollama Chat Model a um Basic LLM Chain ou a um AI Agent.

Rodar a IA no próprio servidor tem duas vantagens claras: nada sai da sua máquina e não existe cobrança por token. O custo vai para a VPS, que precisa de RAM e CPU para o modelo. Abaixo eu monto tudo do zero e mostro um workflow que recebe um texto por webhook e devolve um resumo.

Quanto de máquina o Ollama pede

Sem GPU, o Ollama roda na CPU, e o que manda é a RAM. Um modelo pequeno como o qwen2.5:0.5b (cerca de 400 MB em disco) deixa o container do Ollama em torno de 650 MB de memória com o modelo carregado; o n8n fica em torno de 400 MB. Some o sistema e o Docker, e uma VPS de 4 GB roda esse combo com folga.

Modelos maiores pedem bem mais: um modelo de 3B parâmetros quantizado ocupa uns 2 GB, e um de 7–8B, uns 5 GB só de modelo. Para esses, pense em 8 GB de RAM ou mais. Veja os requisitos de RAM e CPU do n8n e use a calculadora somando a memória do modelo em RAM extra.

Reserve disco. A imagem ollama/ollama ocupa cerca de 5,6 GB, porque já traz as bibliotecas de GPU. Some o tamanho dos modelos que você baixar.

O docker-compose.yml

Numa pasta nova (por exemplo ~/n8n-ia), crie o docker-compose.yml:

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:stable
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - GENERIC_TIMEZONE=America/Sao_Paulo
      - TZ=America/Sao_Paulo
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      - ollama

  ollama:
    image: ollama/ollama:latest
    restart: unless-stopped
    volumes:
      - ollama_data:/root/.ollama
    environment:
      - OLLAMA_KEEP_ALIVE=24h

volumes:
  n8n_data:
  ollama_data:

Repare em dois detalhes:

  • O Ollama não publica porta. Ele não tem autenticação, então não exponha a 11434 na internet. O n8n chega nele pela rede interna do Compose, pelo nome do serviço ollama.
  • OLLAMA_KEEP_ALIVE=24h mantém o modelo carregado na memória. O padrão descarrega depois de 5 minutos sem uso, e a primeira chamada seguinte demora mais porque o modelo volta para a RAM.

O n8n está preso a 127.0.0.1 para você colocar HTTPS na frente. Se ainda não tem isso, siga o n8n com Docker Compose e HTTPS e acrescente só o serviço ollama e o volume ollama_data no seu arquivo.

Suba tudo:

docker compose up -d

Baixe um modelo

docker compose exec ollama ollama pull qwen2.5:0.5b
docker compose exec ollama ollama list

O qwen2.5:0.5b é bom para validar a instalação, mas é pequeno demais para tarefas sérias: ele erra fatos e às vezes foge da pergunta. Para uso real, troque por um modelo maior da biblioteca do Ollama, como qwen2.5:3b ou llama3.2:3b, se a RAM permitir. O comando é o mesmo, só muda o nome.

Para conferir se o Ollama responde, chame a API de dentro do container do n8n:

docker compose exec n8n wget -qO- \
  --post-data='{"model":"qwen2.5:0.5b","prompt":"Diga oi","stream":false}' \
  http://ollama:11434/api/generate

Crie a credencial do Ollama no n8n

  1. No n8n, abra Credentials → Create credential (ou Overview → Create → Credential) e escolha Ollama.
  2. Em Base URL, coloque http://ollama:11434.
  3. Deixe API Key vazia (ela só serve para Ollama atrás de proxy com autenticação, como o Open WebUI).
  4. Clique em Save. O n8n testa a conexão na hora e avisa se ela funcionou.

O erro mais comum é deixar o padrão http://localhost:11434. Dentro do container, localhost é o próprio n8n, e não o Ollama, então a conexão é recusada. A documentação do n8n resume os casos:

  • n8n e Ollama no mesmo Compose: http://ollama:11434
  • Só o n8n no Docker, Ollama direto no host: http://host.docker.internal:11434
  • Nenhum dos dois no Docker: http://127.0.0.1:11434

No segundo caso, no Linux, acrescente extra_hosts: ["host.docker.internal:host-gateway"] ao serviço do n8n e faça o Ollama escutar em 0.0.0.0.

Monte o workflow

Um exemplo simples: receber um texto por webhook e devolver um resumo.

  1. Adicione um nó Webhook: método POST, path resumo e, em Respond, a opção When Last Node Finishes.
  2. Ligue nele um Basic LLM Chain. Em Source for Prompt, escolha Define below e escreva o prompt no modo Expression: Resuma em uma frase, em português: {{ $json.body.texto }}
  3. No conector Model do Basic LLM Chain, adicione Ollama Chat Model, escolha a credencial criada e o modelo qwen2.5:0.5b (a lista vem do próprio Ollama).
  4. Salve e publique o workflow.

Para testar, rode na VPS:

curl -X POST http://127.0.0.1:5678/webhook/resumo \
  -H 'Content-Type: application/json' \
  -d '{"texto":"O n8n automatiza tarefas e roda no seu próprio servidor."}'

A resposta vem em JSON, no campo text. Com o modelo de 0.5B numa CPU compartilhada, a resposta levou uns 15 a 20 segundos; modelos maiores são mais lentos. Se quem chama o webhook tem limite de tempo, troque Respond para Immediately e entregue o resultado depois, por exemplo com um nó HTTP Request ou mensagem.

O mesmo Ollama Chat Model encaixa no AI Agent, que usa ferramentas. Para agente, escolha um modelo com suporte a tools na biblioteca do Ollama: modelos minúsculos costumam falhar nisso. Para RAG, existe o nó Embeddings Ollama, que usa a mesma credencial.

Atualizar e fazer backup

  • Atualize os dois com docker compose pull e docker compose up -d. Antes, siga o backup do n8n; veja também como atualizar o n8n.
  • Os modelos ficam no volume ollama_data. Não precisam de backup: dá para baixar de novo com ollama pull.

Onde hospedar

Para IA local, priorize RAM. Um plano com 8 GB, como o Hostinger KVM 2 (2 vCPU, 8 GB), tem memória de sobra para o n8n mais um modelo de 3B parâmetros, que ocupa cerca de 2 GB ver plano ↗. Compare preços em reais em quanto custa hospedar n8n e veja a melhor VPS no Brasil para n8n.

Perguntas frequentes

Qual Base URL usar na credencial do Ollama no n8n?

Com n8n e Ollama no mesmo Docker Compose, use http://ollama:11434, o nome do serviço. O padrão http://localhost:11434 não funciona dentro do container do n8n, porque localhost aponta para o próprio n8n.

Quanta RAM preciso para rodar n8n com Ollama?

Com um modelo pequeno como o qwen2.5:0.5b, o Ollama fica em torno de 650 MB e o n8n em torno de 400 MB, então 4 GB atendem. Um modelo de 3B ocupa cerca de 2 GB, e aí 8 GB de RAM é o mais confortável.

Preciso de GPU para usar o Ollama com n8n?

Não. O Ollama roda na CPU, só que mais devagar. Para modelos pequenos e tarefas como resumo e classificação, uma VPS sem GPU resolve.

Devo expor a porta 11434 do Ollama?

Não. O Ollama não tem autenticação. Deixe a porta sem publicar e acesse pela rede interna do Docker Compose.

CS

Escrito por

Caio Servidor

Desenvolvedor brasileiro, mantenho meus próprios servidores e automações. Viu um erro ou preço desatualizado? Me avise.

Continue lendo