Tutoriais de VPS
Tutorial de implantação de Ollama + Open WebUI em VPS (2026): como rodar um LLM de IA privado sem erros
Se você quer auto-hospedar um assistente de IA privado em uma VPS, Ollama + Open WebUI é atualmente a combinação mais fácil de colocar em funcionamento. Mas LLMs locais consomem muita memória, CPU e VRAM, e uma VPS pequena comum de 1C1G não é adequada para executá-los. Este artigo aborda a escolha da configuração da VPS, a implantação com Docker Compose, o download de modelos, o proxy reverso, a segurança de portas e as expectativas de desempenho, ajudando você a avaliar quais máquinas conseguem rodar, como implantar e quais portas não devem ser expostas.

Tutorial de implantação de Ollama + Open WebUI em VPS (2026): como rodar um LLM de IA privado sem erros
Nos últimos dois anos, muitas pessoas quiseram levar o assistente de IA para a própria VPS: histórico de conversas salvo por conta própria, sem depender de APIs de terceiros e sem precisar enviar documentos internos para plataformas externas. A combinação mais comum é Ollama + Open WebUI. O Ollama é responsável por baixar e executar os modelos, e o Open WebUI oferece uma interface web semelhante ao ChatGPT.
Mas há um problema real aqui: nem toda VPS é adequada para rodar LLMs locais. Se você pegar uma VPS pequena de 1C1G e rodar diretamente um modelo 7B, o resultado normalmente não é uma "IA privada", mas sim SSH lento, memória estourando e respostas do modelo tão lentas que você começa a duvidar de tudo. Este artigo não incentiva entrar de cabeça sem pensar; em vez disso, primeiro explica o limite de configuração e depois apresenta um plano de implantação com Docker Compose que pode ser revertido e reforçado.
O Ollama pode rodar em CPU, mas a experiência varia muito. Abaixo há uma referência de configuração bastante realista:
| Configuração da VPS | O que consegue fazer | Experiência esperada |
|---|---|---|
| 2C4G | Recomendado apenas para testar modelos pequenos ou chamar modelos externos remotamente | Muito lento, propenso a pressão de memória |
| 4C8G | Consegue rodar modelos quantizados 7B/8B | Utilizável, mas sem concorrência multiusuário |
| 8C16G | 7B/8B utilizável no dia a dia, 14B apenas para teste | Adequado para bases de conhecimento pessoais e assistentes leves |
| VPS com GPU de 16G+ de VRAM | Experiência visivelmente melhor | Mais adequado para uso de longo prazo |
| 32G+ de memória / mais VRAM | É possível tentar modelos maiores | O custo também aumenta |
Se você só quer experimentar, uma VPS de CPU pode ser testada; se quiser realmente substituir APIs, usar com várias pessoas ou conectar a sistemas de negócio, priorize uma VPS com GPU e observe especialmente a VRAM, não apenas o número de núcleos de CPU.
Este artigo escolhe a implantação com Docker Compose por motivos simples:
- Ollama e Open WebUI podem ser gerenciados separadamente.
- Os diretórios de dados são claros, facilitando backup e migração.
- Se houver problema, os contêineres podem ser reiniciados individualmente sem poluir o host.
- Depois, conectar o proxy reverso Nginx/Caddy também fica mais simples.
Se você já usa o 1Panel, também pode instalar o Open WebUI pela loja de aplicativos e preencher o endereço do Ollama. Mas escrever o Compose à mão é mais transparente e adequado para solucionar problemas.
Recomenda-se usar Ubuntu 22.04 / 24.04 ou Debian 12. Primeiro atualize o sistema e instale o Docker:
sudo apt update
sudo apt install -y ca-certificates curl gnupg
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
Depois de entrar novamente via SSH, confirme o Docker e o Compose:
docker version
docker compose version
Se os comandos retornarem os números de versão normalmente, você pode continuar.
mkdir -p ~/ollama-webui
cd ~/ollama-webui
mkdir -p ollama open-webui
O significado dos diretórios é simples:
ollama/: armazena os arquivos dos modelos.open-webui/: armazena os dados do WebUI, usuários, histórico de conversas e configurações.
Os arquivos de modelo podem ser muito grandes, por isso recomenda-se que sua VPS tenha pelo menos 50 GB de disco disponível. Se você pretende baixar vários modelos, 80 GB ou mais é mais seguro.
Crie o arquivo:
nano docker-compose.yml
Escreva o seguinte conteúdo:
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
volumes:
- ./ollama:/root/.ollama
expose:
- "11434"
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
depends_on:
- ollama
ports:
- "127.0.0.1:3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
- ./open-webui:/app/backend/data
Há dois pontos de segurança importantes aqui:
- O Ollama usa apenas
exposee não é exposto diretamente à internet. - O Open WebUI é vinculado a
127.0.0.1:3000, permitindo primeiro apenas acesso local, e depois abrindo HTTPS por meio de proxy reverso Nginx ou Caddy.
Não mapeie 11434:11434 diretamente para a internet. Assim que a API do Ollama fica exposta, outras pessoas podem chamar diretamente o seu modelo, o que no mínimo esgota recursos e no máximo leva a abusos.
docker compose up -d
Verificar o status:
docker ps
Ver os logs:
docker logs -f ollama
docker logs -f open-webui
Se o Open WebUI não iniciar, as causas comuns são download lento da imagem, disco insuficiente ou memória insuficiente. Não se apresse em reinstalar; veja os logs primeiro.
Entre no contêiner do Ollama:
docker exec -it ollama bash
Baixe um modelo relativamente pequeno para testar:
ollama pull llama3.1:8b
ollama run llama3.1:8b
Se a sua máquina não tiver memória suficiente, o download do modelo pode funcionar, mas a execução será muito lenta e pode até acionar OOM. VPS de baixa configuração podem primeiro testar modelos menores, como versões quantizadas de 3B ou menores.
Saia do contêiner:
exit
Suponha que seu domínio seja ai.example.com. Primeiro aponte o registro DNS A para o IP da VPS e depois instale o Nginx:
sudo apt install -y nginx certbot python3-certbot-nginx
Crie a configuração do site:
sudo nano /etc/nginx/sites-available/open-webui
Escreva:
server {
listen 80;
server_name ai.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 3600;
}
}
Habilite o site:
sudo ln -s /etc/nginx/sites-available/open-webui /etc/nginx/sites-enabled/open-webui
sudo nginx -t
sudo systemctl reload nginx
Emita o certificado:
sudo certbot --nginx -d ai.example.com
Após concluir, acesse https://ai.example.com. Na primeira vez que entrar no Open WebUI, será criada uma conta de administrador.
Recomenda-se abrir apenas estas portas:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
Não abra:
11434: porta da API do Ollama.3000: porta interna do Open WebUI, já encaminhada pelo Nginx.
Se você usa o grupo de segurança de um provedor de nuvem, também deve restringir lá. Muitas pessoas configuram apenas o UFW e esquecem o firewall da nuvem, então as portas continuam acessíveis pela rede externa.
É normal que uma VPS de CPU rode modelos grandes lentamente; não é necessariamente um erro de implantação. Você pode avaliar por estes aspectos:
htop
free -h
docker stats
df -h
Gargalos comuns:
- Memória insuficiente: após carregar o modelo, a memória disponível fica quase em 0 e o sistema começa a usar swap.
- CPU sem suporte a AVX2: a velocidade de inferência será pior.
- Disco muito lento: o carregamento do modelo demora muito.
- Concorrência excessiva: funciona para uma pessoa, mas trava quando várias perguntam ao mesmo tempo.
Sugestões de otimização:
- Comece com modelos pequenos; não vá direto para 14B/32B.
- Limite o número de usuários; não use uma VPS pessoal como serviço de IA público.
- Coloque o diretório de modelos em um disco NVMe, não em uma VPS de armazenamento grande muito lenta.
- Se realmente precisar de uso diário, considere uma VPS com GPU ou uma máquina local com placa de vídeo.
Atualizar contêineres:
cd ~/ollama-webui
docker compose pull
docker compose up -d
Fazer backup dos dados:
tar -czf ollama-webui-backup-$(date +%F).tar.gz ollama open-webui docker-compose.yml
Se os arquivos de modelo forem muito grandes, você também pode fazer backup apenas de open-webui/ e docker-compose.yml, e baixar os modelos novamente depois.
Nas seguintes situações, recomenda-se usar diretamente uma API ou escolher um serviço com GPU:
- Você só tem uma VPS barata de 1C1G / 1C2G.
- Você quer que várias pessoas usem ao mesmo tempo.
- Você precisa de respostas estáveis e rápidas.
- Você precisa rodar modelos 14B, 32B ou maiores.
- O espaço em disco da VPS é muito pequeno, apenas cerca de 20 GB.
A implantação do Ollama é simples, mas o que é realmente difícil são o custo e as expectativas de desempenho. Se você está apenas aprendendo, uma VPS comum de 4C8G pode ser experimentada; se quiser usar a longo prazo, é melhor começar a avaliar a partir de 8C16G ou de uma VPS com GPU.
O valor do Ollama + Open WebUI não está em "substituir gratuitamente todas as APIs de IA", mas em você poder controlar os dados, os modelos e os pontos de acesso nas suas próprias mãos. Para bases de conhecimento pessoais, perguntas e respostas internas, consulta de trechos de código e assistentes privados de equipes pequenas, ele é muito atrativo.
Mas a escolha da VPS precisa ser realista: rodar apenas com CPU não significa boa experiência; memória suficiente para baixar um modelo não significa que ele seja utilizável por várias pessoas; portas que podem ser abertas não significa que devam ser expostas à internet. A abordagem correta é validar primeiro com um modelo pequeno e depois decidir se deve atualizar para uma VPS de configuração maior ou uma VPS com GPU, com base nos requisitos de latência, memória, disco e concorrência.