DEV Community

Celso Nery
Celso Nery

Posted on

Criando uma IA particular

🇺🇸 English version here

Instalando e rodando Ollama Bare Metal

Neste artigo irei usar um servidor com Debian para executar uma IA localmente.

Transformar um computador local em um servidor de IA privada é excelente, especialmente para garantir privacidade total e evitar mensalidades. Com o hardware certo e as ferramentas atuais, o processo fica muito mais simples.

O Hardware Necessário (Requisitos)

O componente mais crítico é a GPU (Placa de Vídeo). Diferente de softwares comuns, IAs rodam em núcleos de processamento paralelo e exigem muita memória de vídeo (VRAM).

Componente Recomendação Mínima Recomendação Ideal
GPU NVIDIA (8GB VRAM) NVIDIA RTX 3090/4090 (24GB VRAM)
RAM 16GB 32GB ou mais
Armazenamento SSD NVMe (50GB livres) SSD NVMe (500GB+ para vários modelos)
OS Linux ou Windows com WSL2 Linux (Ubuntu/Fedora)

Nota: Placas NVIDIA são o padrão da indústria devido aos núcleos CUDA. Embora seja possível rodar em CPUs ou Macs (Apple Silicon), o desempenho em placas NVIDIA são extremamente superiores.


A Ferramenta de Execução: Ollama

Irei usar o Ollama. Ele é open-source e gerencia o download e a execução dos modelos de forma otimizada.

  1. Instalação: ollama.com.
  2. Rodando um Modelo: No terminal, basta digitar: ollama run llama3
  3. Vantagem: Ele cria uma API local na porta 11434, permitindo que você conecte outras interfaces a ele.

Interface Visual (Open WebUI)

Irei instalar o Open WebUI, uma interface web que se parece com o ChatGPT, mas que roda 100% no seu servidor. Caso não queira usar somente o terminal.

Open WebUI É a interface completa e popular. Vamos roda-la via Docker:

  • Suporta múltiplos usuários.
  • Permite upload de documentos para análise (RAG).
  • Conecta-se diretamente ao Ollama.

Os Modelos (o Cérebro)

Dependendo do seu hardware e objetivo, você usará modelos diferentes:

  • Llama 3 (Meta): O melhor "pau para toda obra" atualmente.
  • Mistral / Mixtral: Excelente equilíbrio entre velocidade e inteligência.
  • DeepSeek Coder: Especializado em programação e escrita de scripts.
  • Phi-3 (Microsoft): Modelo leve para computadores com menos potência.

Casos de Uso Privados

Com seu servidor rodando, você pode configurar funções avançadas que não seriam seguras em nuvens públicas:

  • RAG (Geração Aumentada por Recuperação): Alimente a IA com seus PDFs, contratos ou códigos privados. Ela responderá baseada apenas nos seus arquivos, sem que os dados saiam da sua rede.
  • Automação de Código: Use extensões no VS Code (como o Continue.dev) para usar sua IA local como um "Copilot" gratuito.
  • Agentes Locais: Criar scripts que organizam seus arquivos ou analisam logs de sistema automaticamente.

Qual a melhor distro para o Ollama.

A escolha da distro impacta diretamente na facilidade de gerenciar os drivers da NVIDIA.

Fiz uma pequena análise baseada em minhas experiências.


A Melhor: Fedora

O Fedora é, atualmente, uma das melhores escolhas para IA local.

  • Kernel Moderno: Essencial para suporte a novas GPUs e tecnologias de virtualização/containers.
  • Drivers NVIDIA: O repositório RPM Fusion torna a instalação dos drivers proprietários e do CUDA muito simples e estável.
  • Podman vs Docker: O Fedora vem com Podman por padrão, mas você pode instalar o Docker Engine oficial sem problemas.
  • Perfil: Ideal para quem quer as versões mais recentes do Ollama e bibliotecas de IA sem ter que compilar nada manualmente.

A Escolha de Estabilidade: Debian (Bookworm)

Se a prioridade é um servidor que "nunca para", o Debian é o caminho.

  • Ambiente Limpo: Se você prefere configurar arquivos YAML e usar CLI (Vim/nmcli) como eu, o Debian entrega exatamente o que pede, sem "perfumaria".
  • NVIDIA: A instalação do nvidia-driver e do nvidia-container-toolkit no Debian Stable é muito documentada e sólida.
  • Ponto de atenção: O Kernel do Debian Stable pode ficar "atrás" de novas GPUs (como uma série 50 no futuro), mas para uma RTX 30 ou 40, funciona perfeitamente.

A Alternativa Enterprise: openSUSE Tumbleweed

Eu gosto muito do openSUSE, (que uso em minha máquina de trabalho local), ele é uma excelente opção para quem quer um sistema Rolling Release (sempre atualizado) mas com a segurança do Btrfs e Snapper.

  • Zypper: O gerenciamento de pacotes é robusto.
  • YaST: Facilita configurações de rede e segurança.
  • OBS (Open Build Service): Facilita encontrar pacotes específicos de IA que podem não estar nos repositórios oficiais.

Tabela Comparativa para IA

Distro Gestão de Drivers Atualização de Kernel Docker/Container
Fedora Fácil/Moderno Rápido Nativo/Podman
Debian Sólido/Manual Lento Padrão da Indústria
openSUSE Via Repos Rolling Muito bom

Minha Recomendação dependendo do seu perfil:

  1. Vá de Fedora se quiser tudo rodando rápido e com as versões mais novas.
  2. Vá de Debian se quiser configurar uma vez e esquecer que o servidor existe (estilo "set and forget").

A minha escolha: Debian (Stable)

Para o nosso servidor "teste" de IA, o Debian foi a escolha por um motivo simples: compatibilidade de bibliotecas e estabilidade.

  • Por que o Debian: É a base mais limpa possível. Como eu vim do Slackware e gosto de configurar tudo via CLI (Vim, nmcli), o Debian não instala nada que eu não peço. Ele é perfeito para rodar o Docker Engine de forma nativa e previsível.
  • A "Vantagem NVIDIA": Quase todos os pacotes do nvidia-container-toolkit e drivers CUDA são testados primeiro e de forma mais exaustiva em bases Debian/Ubuntu. Isso evita que uma atualização de kernel quebre seu servidor de IA no meio de um projeto.

Por que evitei Fedora e Tumbleweed para este Servidor?

Embora sejam excelentes distros, para um servidor dedicado:

  • Kernel Rolling Release: No Fedora ou openSUSE Tumbleweed, o kernel atualiza com muita frequência. Se eu instalar o driver da NVIDIA e o kernel atualizar, eu posso ter o temido "mismatch" de versão, exigindo que recompile o módulo do driver (DKMS).

  • Foco em Estabilidade: Um servidor de IA para uma empresa precisa estar disponível sempre que o n8n chamar a API. O Debian Stable garante que o ambiente de execução não mude por anos.


Instalação do Ollame "Bare Metal"

Conforme foi falado no artigo anterior, vamos utilizar o Debian 12. Vou utilizar um servidor modesto com somente 8GB de Ram e sem placa de vídeo devido falta de tempo($$$) rs.

Instalação

O Ollama oferece um script oficial que configura o binário e o serviço do systemctl automaticamente:

curl -fsSL https://ollama.com/install.sh | sh

Enter fullscreen mode Exit fullscreen mode

Configuração de Rede (Importante para utlização externa)

Por padrão, o Ollama nativo só ouve em 127.0.0.1 (localhost). Se quiser integrar com o n8n ou acessar de outra máquina na rede, precisa liberar o acesso externo:

  1. Edite o serviço do Ollama:
    sudo systemctl edit ollama.service ou edit diretamente o arquivo /etc/systemd/system/ollama.service

  2. Entre as linhas [Service] e antes de qualquer outra, adicione:

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

Enter fullscreen mode Exit fullscreen mode
  1. Salve (Ctrl+O, Enter) e saia (Ctrl+X).

  2. Recarregue e reinicie:

sudo systemctl daemon-reload
sudo systemctl restart ollama

Enter fullscreen mode Exit fullscreen mode

Otimização para 8GB de RAM (O Swap)

Como tenho somente 8GB de RAM, precisei criar um Swap grande no SSD para a IA não travar o sistema.

Passo a passo para criar 12GB de Swap no SSD:

# Criei um arquivo de swap dentro do /home (onde tenho espaço)
sudo fallocate -l 12G /home/swapfile
sudo chmod 600 /home/swapfile
sudo mkswap /home/swapfile
sudo swapon /home/swapfile

# Tornei permanente (adicionei ao /etc/fstab)
echo '/home/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Enter fullscreen mode Exit fullscreen mode

Baixando os Modelos Estratégicos

Para o meu cenário (8GB RAM), baixei o phi3.5 executando este comando no terminal:

# O melhor "pau para toda obra" que cabe na RAM (2.3GB)
ollama pull phi3.5

Enter fullscreen mode Exit fullscreen mode

Onde os modelos ficarão guardados? (Importante)

Por padrão, no Linux, ele armazena os modelos em:
/usr/share/ollama/.ollama/models.

O Teste de Fogo (Monitoramento)

Abra uma segunda aba no seu terminal (ou use o tmux/screen) e rode o htop. Depois, na primeira aba, chame o modelo:

ollama run phi3.5

Enter fullscreen mode Exit fullscreen mode

Irá abrir o prompt do ollama.

Prompt do ollama

Agora basta fazer alguma pergunta.
Ex:

>>> Por que o céu é azul?
Enter fullscreen mode Exit fullscreen mode

O que observar:

  • RAM: Veja se o uso estabiliza em torno de 4GB-5GB.
  • CPU: Como eu não tenho GPU ainda, o uso de CPU fica em torno de 90-100% enquanto a IA "pensa".

Uso de cpu e memoria enquanto rodando ollama

Gerenciamento do models

Para verificar os models que estão instalados

ollama list

Enter fullscreen mode Exit fullscreen mode

Se precisar remover algum ollama rm <model>
ex:

ollama rm phi3.5:latest

Enter fullscreen mode Exit fullscreen mode

Dependendo do seu hardware e objetivo, você escolherá modelos diferentes:

  • Llama 3 (Meta): O melhor "pau para toda obra" atualmente.
  • Mistral / Mixtral: Excelente equilíbrio entre velocidade e inteligência.
  • DeepSeek Coder: Especializado em programação e escrita de scripts.
  • Phi-3 / 3.5 (Microsoft): Modelos leves para computadores com menos potência.

Alguns models que consigui rodar no meu servidor.

ollama pull deepseek-coder-v2:16b-lite-instruct-q4_K_M
ollama pull llama3.2:3b
ollama pull gemma2:2b
ollama pull phi3.5:latest

Enter fullscreen mode Exit fullscreen mode

Interface Open WebUI

Agora sua IA particular já está funcional. Mas se tiver recurso podemos integrar uma interface web semelhante a do ChatGPT.

  1. Instale o Docker: A forma mais limpa é via Docker.
  2. Suba o Open WebUI:
docker run -d --network host --name open-webui -v open-webui-data:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 -e WEBUI_SECRET_KEY=$(openssl rand -hex 32) --restart always ghcr.io/open-webui/open-webui:main
Enter fullscreen mode Exit fullscreen mode

Agora abra o seu browser e acesse http://localhost:8080 ou o IP do servidor que estiver criando.

Open WebUI rodando


Integração com n8n

O n8n possui suporte nativo ao Ollama. Não precisa configurar requisições HTTP manuais.

  • No n8n: Procure pelo nó "Ollama Chat Model".
  • Conexão: Informe a URL do meu servidor (ex: http://localhost:11434 ou o IP do servidor na rede local).
  • Credenciais: Geralmente não precisa de API Key para uso local.
  • Uso: Conecta esse nó a um "AI Agent" ou "Chain" dentro do n8n e pronto: seu fluxo de automação agora usa seu Llama 3 ou Mistral local em vez do ChatGPT.

Integração na Aplicação (Laravel, Vue, etc.)

O Ollama expõe uma API REST muito simples. Se você já usou a API da OpenAI, vai notar que é quase idêntica.

  • Endpoint Principal: POST http://localhost:11434/api/generate
  • Exemplo de Payload:
{
  "model": "llama3",
  "prompt": "Por que o céu é azul?",
  "stream": false
}

Enter fullscreen mode Exit fullscreen mode

Teste realizado usando curl

curl -s -X POST http://10.0.10.240:11434/api/generate -H "Accept: application/json" -H "Content-Type: application/json" -d '{ "model": "phi3.5", "prompt": "Por que o ceu é azul?", "stream": false }' | jq
Enter fullscreen mode Exit fullscreen mode

Top comments (0)