01 nov 2026 · ia, self-hosted, docker, interface · 4 min
Open WebUI: uma interface própria para os seus modelos
Open WebUI é uma interface web que roda na sua própria máquina e fala com modelos locais (Ollama) ou com qualquer API compatível com OpenAI. Em vez de depender de um serviço externo, você sobe um contêiner, aponta para o modelo e tem chat, histórico, arquivos e busca no mesmo lugar. O projeto é open source, com mais de 150 mil estrelas no GitHub, e roda 100 % offline quando pareado com Ollama.
O que você ganha
Chat com histórico persistente, upload de documentos com busca no conteúdo (RAG), múltiplos usuários com permissões, integração com ferramentas e modelos, e uma API compatível com OpenAI para seus próprios scripts. Tudo isso num único contêiner.
O que roda, quanto pesa e quanto custa
A imagem :main traz embeddings, extração de documentos e reconhecimento de voz embutidos. A :slim é 88 % menor (197 MB para baixar) e usa cerca de 300 MiB de RAM em repouso, delegando embeddings e voz para serviços externos. Escolha :slim se a máquina for pequena e você não precisar de RAG local.
Em teste próprio, a imagem :main levou cerca de 60 segundos para responder no primeiro boot e consumiu 783 MiB de RAM em repouso com 0,35 % de CPU. O custo de operação é zero além da máquina que você já tem; o custo de licença é zero, o código é aberto (licença “Other” no GitHub, confira os termos no repositório).
Como subir
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
volumes:
- open-webui-data:/app/backend/data
environment:
- WEBUI_AUTH=True
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
restart: unless-stopped
mem_limit: 2g
cpus: 1.0
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 5
volumes:
open-webui-data:
Salve como compose.yaml, crie um arquivo .env com WEBUI_SECRET_KEY (uma string longa e aleatória) e rode docker compose up -d. A interface aparece em http://localhost:3000. No primeiro acesso, a conta que você criar vira administrador.
Para usar um modelo local, instale o Ollama na máquina e aponte o Open WebUI para http://host.docker.internal:11434. Para usar uma API externa, adicione a chave em Configurações, Conexões.
Como verificar
docker compose ps
curl -s http://localhost:3000/health
docker stats --no-stream open-webui
A saída esperada: contêiner com status healthy, health retornando {"status":true} e consumo de memória próximo de 780 MiB para a imagem :main (ou 300 MiB para a :slim).
Se der errado
- Porta 3000 ocupada: troque o lado esquerdo do mapeamento para outra porta, por exemplo
3001:8080. - Healthcheck falha: a imagem pode estar baixando o modelo de embeddings no primeiro boot; espere até 2 minutos.
- Login não aparece: verifique se
WEBUI_AUTH=Trueestá no ambiente; comFalse, qualquer pessoa acessa. - Consumo de RAM alto: use a imagem
:slimou aumentemem_limit. - Dados perdidos ao recriar: confirme que o volume
open-webui-dataexiste comdocker volume ls; sem volume, o banco fica dentro do contêiner.
Vantagens e limites
| Aspecto | Open WebUI | Alternativa típica |
|---|---|---|
| Hospedagem | self-hosted, offline | SaaS com conta |
| Modelos | Ollama local ou API externa | só o modelo do fornecedor |
| Dados | ficam no seu volume | ficam no servidor do fornecedor |
| Custo | zero de licença | mensalidade |
| Memória | ~780 MiB (:main) ou ~300 MiB (:slim) | não se aplica |
FAQ
Preciso de GPU? Não para rodar a interface. A GPU só importa para o modelo que ela chama; o Open WebUI em si roda em CPU.
Posso usar sem Ollama? Sim. Aponte para qualquer API compatível com OpenAI: OpenAI, Anthropic via proxy, vLLM, LM Studio, OpenRouter. A interface não depende de modelo local.
Como atualizar?
docker compose pull && docker compose up -d. O volume preserva os dados. Faça backup do volume antes de atualizar versões maiores.
RAG funciona offline?
Com a imagem :main, sim, porque os embeddings rodam dentro do contêiner. Com a :slim, você precisa de um serviço de embeddings externo.
É seguro expor na internet?
Mantenha WEBUI_AUTH=True, use uma senha forte no WEBUI_SECRET_KEY e coloque atrás de um proxy reverso com TLS. Por padrão, sirva só na rede local ou via túnel.
Para estruturar um compose do zero com healthcheck e variáveis em .env, veja docker compose do zero. Para limitar memória e reinício do contêiner, veja como limitar memória, log e reinício de um contêiner. Para não vazar segredo no .env, veja variáveis de ambiente e .env.
Fontes: Open WebUI Docs, open-webui/open-webui no GitHub. Testado em 01 nov 2026: subida em ~60 s, 783 MiB de RAM em repouso, health ok.