Como rodar aplicações de IA open source com Docker em um VPS: guia prático para iniciantes e intermediários
Como Rodar Aplicações de IA Open Source com Docker em um VPS: Guia Prático para Iniciantes e Intermediários
A inteligência artificial deixou de ser exclusividade dos gigantes da tecnologia. Hoje, qualquer desenvolvedor com um VPS (Virtual Private Server) pode hospedar seus próprios modelos de IA open source — seja para experimentação, prototipagem ou até produção. O segredo? Docker. Neste guia prático, você aprenderá o passo a passo para configurar, otimizar e proteger aplicações de IA self-hosted usando containers, com foco em escalabilidade e segurança.
Por que Docker para Aplicações de IA?
Docker revolucionou a forma como empacotamos e distribuímos software. Para IA, os benefícios são ainda mais evidentes:
- Portabilidade: Seu ambiente de desenvolvimento local pode ser replicado exatamente no VPS, eliminando o problema de "funciona na minha máquina".
- Isolamento: Cada modelo e suas dependências (Python, CUDA, bibliotecas) ficam em containers separados, evitando conflitos.
- Escalabilidade: Com Docker Compose ou Kubernetes, você pode subir múltiplas instâncias de um mesmo modelo para atender mais requisições.
- Facilidade de atualização: Trocar de versão de um modelo é tão simples quanto alterar a tag da imagem e reiniciar o container.
Em 2025, o ecossistema Docker amadureceu a ponto de oferecer suporte nativo a GPUs, aceleração por hardware e integração com ferramentas de orquestração específicas para cargas de IA. Isso significa que você pode rodar desde pequenos chatbots até grandes modelos de linguagem (LLMs) com custos controlados.
Pré-requisitos
Antes de começar, você precisará de:
- Um VPS: Recomendo um servidor Linux (Ubuntu 22.04 LTS ou superior) com pelo menos 4 GB de RAM e 2 vCPUs para modelos leves. Para modelos maiores (como Llama 3 ou Stable Diffusion), considere 16 GB+ e GPU NVIDIA.
- Acesso SSH: Conhecimento básico de terminal Linux.
- Docker e Docker Compose instalados: Veremos como instalar a seguir.
- Domínio (opcional): Para expor serviços com SSL de forma segura.
Escolhendo a Aplicação de IA Ideal
O universo open source é vasto. Aqui estão algumas aplicações populares que funcionam bem em VPS com Docker:
| Aplicação | Função | Tamanho da Imagem | Recursos Mínimos |
|---|---|---|---|
| Ollama | Execução de LLMs (Llama, Mistral, Gemma) localmente | ~2-8 GB | 4 GB RAM, CPU |
| LocalAI | API compatível com OpenAI para modelos diversos | ~3 GB | 4 GB RAM, CPU |
| Whisper.cpp | Transcrição de áudio (speech-to-text) via CPU | ~1 GB | 2 GB RAM, CPU |
| Automatic1111 + Stable Diffusion | Geração de imagens | ~8 GB | 8 GB RAM, GPU NVIDIA |
| Text Generation WebUI (oobabooga) | Interface para LLMs | ~6 GB | 6 GB RAM, GPU |
Para este guia, usaremos Ollama como exemplo, pois é fácil de configurar e suporta CPU e GPU.
Passo a Passo: Instalação e Configuração
1. Preparação Inicial do VPS
Conecte-se ao seu servidor via SSH e execute:
sudo apt update && sudo apt upgrade -y
sudo ufw allow OpenSSH
sudo ufw enable # Ativa o firewall básico
# Instale o Fail2Ban para proteção extra
sudo apt install fail2ban -y
2. Instalação do Docker e Docker Compose
O método oficial garante versões atualizadas:
# Remove versões antigas
sudo apt remove docker docker-engine docker.io containerd runc
# Instala dependências
sudo apt install ca-certificates curl gnupg lsb-release -y
# Adiciona chave oficial do Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Adiciona repositório
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Instala Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
# Adiciona seu usuário ao grupo docker (para evitar sudo)
sudo usermod -aG docker $USER
# Faça logout e login novamente ou execute: newgrp docker
3. Criando o Docker Compose para Ollama
Crie um diretório para o projeto:
mkdir ollama && cd ollama
nano docker-compose.yml
Cole o seguinte conteúdo:
version: '3.8'
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434" # Porta da API
volumes:
- ./ollama_data:/root/.ollama # Persistência dos modelos
environment:
- OLLAMA_KEEP_ALIVE=24h # Mantém modelos carregados para reduzir latência
deploy:
resources:
limits:
memory: 8G
cpus: '2'
restart: unless-stopped
# Se tiver GPU NVIDIA, descomente:
# runtime: nvidia
# environment:
# - NVIDIA_VISIBLE_DEVICES=all
Salve (Ctrl+O, Enter) e saia (Ctrl+X).
4. Executando o Container
docker compose up -d
Aguarde alguns segundos e verifique se está rodando:
docker compose ps
curl http://localhost:11434/api/generate -d '{"model": "llama3.2:1b", "prompt": "Olá, mundo!"}'
Se tudo funcionar, você verá uma resposta JSON com o texto gerado.
5. Baixando Modelos (Opcional)
Para pré-carregar um modelo:
docker exec -it ollama ollama pull llama3.2:1b # Leve (1.3B param)
# Ou um mais potente:
docker exec -it ollama ollama pull llama3.2:3b
Otimização de Performance
GPU Pass-Through
Se seu VPS tiver GPU NVIDIA, instale o NVIDIA Container Toolkit:
# Adiciona repositório NVIDIA
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
# Reinicia Docker
sudo systemctl restart docker
Depois, adicione runtime: nvidia e NVIDIA_VISIBLE_DEVICES=all no docker-compose.yml (já comentado no exemplo acima).
Limites de Recursos
Use deploy.resources para evitar que containers consumam toda a memória do servidor. No exemplo acima, limitamos a 8 GB e 2 vCPUs.
Uso de Volumes
Modelos de IA são grandes (LLMs podem ter 4-40 GB). Armazene-os em volumes Docker montados em disco rápido (SSD). No docker-compose.yml, o volume ./ollama_data garante que os modelos não sejam perdidos ao atualizar o container.
Segurança: Não Exponha Seus Serviços sem Cuidado
Se você planeja acessar a API de IA externamente (ex: via aplicação web), nunca exponha a porta diretamente sem autenticação. Melhor prática:
- Use um proxy reverso com SSL: Nginx, Caddy ou Traefik.
- Habilite autenticação: Adicione senha via variáveis de ambiente ou utilize tokens JWT.
- Firewall: Permita apenas a porta do proxy reverso (443) e SSH (22).
Exemplo mínimo de Nginx como proxy reverso:
# Instale o Nginx e Certbot para SSL
sudo apt install nginx certbot python3-certbot-nginx -y
# Configure o site (substitua SEU_DOMINIO pelo seu domínio)
sudo nano /etc/nginx/sites-available/ollama
server {
listen 80;
server_name SEU_DOMINIO;
location / {
proxy_pass http://localhost:11434;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Ative e obtenha SSL:
sudo ln -s /etc/nginx/sites-available/ollama /etc/nginx/sites-enabled/
sudo certbot --nginx -d SEU_DOMINIO
Com isso, você terá HTTPS e proteção básica. Para autenticação, considere adicionar um middleware como auth_basic ou um container de gateway.
Escalabilidade e Múltiplos Modelos
Com Docker Compose, você pode rodar várias aplicações em paralelo. Crie um arquivo docker-compose.yml com múltiplos serviços, cada um com seu próprio container e porta.
services:
ollama-1:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ./ollama_data_1:/root/.ollama
environment:
- OLLAMA_HOST=0.0.0.0
whisper:
image: onerahmet/openai-whisper-asr-webservice:latest-gpu
ports:
- "9000:9000"
runtime: nvidia
environment:
- ASR_MODEL=base
Para orquestração mais avançada (balanceamento de carga entre containers do mesmo modelo), você pode usar um load balancer como Nginx Plus ou Traefik, ou até migrar para Kubernetes se a demanda justificar.
Conclusão
Rodar IA open source em um VPS com Docker não é apenas viável — é uma habilidade essencial para quem quer autonomia sobre seus dados, controle de custos e liberdade para experimentar. Com as técnicas deste guia, você pode:
- Hospedar seu próprio assistente LLM (Ollama, LocalAI) para uso pessoal ou em apps.
- Processar áudio e imagens sem depender de APIs pagas.
- Escalar horizontalmente adicionando mais containers conforme a demanda.
- Proteger seus serviços com boas práticas de segurança.
O próximo passo? Explore ferramentas como Langflow ou Flowise para criar agentes de IA visualmente, ou integre seu modelo a um bot no Discord/Telegram. O ecossistema está em rápida evolução, e o Docker é a fundação ideal para acompanhar essa transformação.
Lembre-se: a verdadeira revolução da IA não está nos modelos em si, mas na capacidade de qualquer desenvolvedor colocá-los em produção de forma simples e segura. Você acabou de dar o primeiro passo.