Instalar Ollama em VPS
Como instalar Ollama em uma VPS Ubuntu 22.04 com GPU NVIDIA, expor API REST com HTTPS via Caddy e servir Llama 3, Qwen e DeepSeek com OpenAI-compatibility.
O Ollama é a forma mais rápida de rodar LLMs no seu próprio servidor. Ele expõe uma API REST compatível com OpenAI — você troca a URL e seu código continua funcionando.
Quando usar Ollama
- Dev / experimentação: trocar de modelo (Llama 3, Qwen, DeepSeek) com 1 comando
- Inferência leve: até ~5 chamadas concorrentes
- Embeddings com
nomic-embed-textoubge-m3 - Times pequenos que não querem montar Triton/vLLM ainda
Para alta concorrência (10+ requests simultâneas), troque para vLLM.
Pré-requisitos
- VPS com GPU NVIDIA (recomendamos GPU Estação ou GPU Estúdio)
- Ubuntu 22.04 LTS
- Driver NVIDIA + CUDA 12.x já instalado
- Domínio próprio (
ollama.sua-empresa.com.br)
Confirme que a GPU está visível:
nvidia-smi
Saída esperada (exemplo com RTX 4090):
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.154.05 Driver Version: 535.154.05 CUDA Version: 12.2 |
+-----------------------------------------------------------------------------+
| GPU Name | Memory-Usage | GPU-Util |
| 0 NVIDIA RTX 4090 | 0MiB / 24576MiB | 0% |
+-----------------------------------------------------------------------------+
Passo 1 — instalar Ollama
curl -fsSL https://ollama.com/install.sh | sh
O script detecta a GPU e instala o suporte CUDA automaticamente. Confirme:
ollama --version
systemctl status ollama
O serviço já está rodando em localhost:11434.
Passo 2 — baixar e testar um modelo
ollama pull llama3.1:8b
ollama run llama3.1:8b "Em uma frase, por que o céu é azul?"
A primeira vez baixa ~5 GB. Depois roda direto.
Passo 3 — expor API com HTTPS
Por padrão, Ollama escuta em 127.0.0.1:11434 — só local. Para acessar de fora, vamos expor via Caddy com HTTPS.
Configure Ollama para escutar em todas as interfaces:
sudo systemctl edit ollama.service
Adicione:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=*"
Reinicie:
sudo systemctl restart ollama
Instale Caddy:
sudo apt install -y caddy
Configure /etc/caddy/Caddyfile:
ollama.sua-empresa.com.br {
reverse_proxy localhost:11434
# Auth simples por API key (Caddy header_up matcher)
@authorized header Authorization "Bearer rh_ollama_token_secreto_grande"
handle @authorized {
reverse_proxy localhost:11434
}
handle {
respond "Unauthorized" 401
}
}
Reinicie o Caddy:
sudo systemctl restart caddy
Aguarde DNS propagar e Caddy emitir SSL. Teste:
curl https://ollama.sua-empresa.com.br/api/tags \
-H "Authorization: Bearer rh_ollama_token_secreto_grande"
Resposta: lista de modelos baixados.
Passo 4 — usar API compatível OpenAI
Ollama expõe /v1/chat/completions compatível com OpenAI:
curl https://ollama.sua-empresa.com.br/v1/chat/completions \
-H "Authorization: Bearer rh_ollama_token_secreto_grande" \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.1:8b",
"messages": [
{"role": "system", "content": "Responda em português, breve."},
{"role": "user", "content": "O que é Q4_K_M?"}
]
}'
Passo 5 — usar no n8n
Adicione um nó OpenAI Chat Model com:
- Credential custom: API Key =
rh_ollama_token_secreto_grande - Base URL (em advanced):
https://ollama.sua-empresa.com.br/v1 - Model:
llama3.1:8b
Pronto — seu n8n fala com a sua GPU local.
Embeddings
Para RAG, baixe um modelo de embeddings:
ollama pull nomic-embed-text
Use em código:
curl https://ollama.sua-empresa.com.br/api/embed \
-H "Authorization: Bearer rh_ollama_token_secreto_grande" \
-d '{
"model": "nomic-embed-text",
"input": "Texto para gerar embedding"
}'
Retorna vetor de 768 dimensões.
Monitoramento
Veja uso de GPU em tempo real:
watch -n 1 nvidia-smi
E logs do Ollama:
journalctl -u ollama -f
Para Grafana, exponha métricas via nvidia-dcgm-exporter:
docker run -d --gpus all --rm \
-p 9400:9400 \
nvcr.io/nvidia/k8s/dcgm-exporter:3.3.0-3.2.0-ubuntu22.04
Solução de problemas
| Problema | Causa provável | Solução |
|---|---|---|
cuda: out of memory | Modelo grande demais | Use quantização menor (:Q4, :Q5_K_M) |
| Resposta lenta (~5 tok/s) | Rodando em CPU | Verifique nvidia-smi durante inferência — se 0%, GPU não está sendo usada |
connection refused na porta 11434 | OLLAMA_HOST não foi aplicado | sudo systemctl daemon-reload && sudo systemctl restart ollama |
| Caddy não emite SSL | DNS não propagou | dig ollama.sua-empresa.com.br deve retornar o IP da VPS |
Próximos passos
- Servir Llama 3 com vLLM (para alta concorrência)
- RAG com Qdrant + LangChain (Ollama + base vetorial)
- Stack n8n + EvolutionAPI (substitua o nó OpenAI pelo seu Ollama)
Última atualização: