Como instalar o Open WebUI em uma VPS Ubuntu
O Open WebUI é uma interface web auto-hospedada para interagir com modelos de linguagem via Ollama ou qualquer API compatível com OpenAI. Este guia instala o Open WebUI com Docker, configura Nginx como reverse proxy e emite SSL gratuito com Certbot.
Antes de começar
- VPS mínima
- 2 vCPU · 4 GB RAM · 20 GB SSD (Runstack Basic ou superior)
- Sistema
- Ubuntu 24.04 LTS
- Também
- Docker instalado (veja /tutorial/como-instalar-docker)
- Ollama instalado e rodando (opcional; veja /tutorial/como-instalar-ollama)
- Subdomínio DNS apontado para o IP da VPS
- Portas 80 e 443 abertas no firewall
Instalação passo a passo
- 1
Atualizar o sistema e instalar Docker
Garanta que o sistema está atualizado e o Docker instalado.
bashapt update && apt upgrade -y curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh docker --version - 2
Escolher o modo de instalação
O Open WebUI oferece dois modos: (A) conectado ao Ollama local (recomendado para VPS com GPU ou Ollama instalado) e (B) modo standalone com chave de API OpenAI-compatível.
- 3
Modo A: instalar com Ollama como backend local
Este comando conecta o Open WebUI ao Ollama rodando no host da VPS via `host.docker.internal`.
bashdocker run -d \ -p 127.0.0.1:3000:8080 \ --add-host=host.docker.internal:host-gateway \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:main - 4
Modo B: instalar com chave de API externa (OpenAI, Groq etc.)
Use este modo se não tiver Ollama instalado. Passe a variável OPENAI_API_KEY para acessar modelos externos.
bashdocker run -d \ -p 127.0.0.1:3000:8080 \ -e OPENAI_API_KEY=sk-sua-chave-aqui \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:main - 5
Verificar se o container subiu
Confirme que o Open WebUI está respondendo localmente antes de configurar o Nginx.
bashdocker ps | grep open-webui docker logs open-webui --tail=30 # Testar resposta local curl -s http://127.0.0.1:3000/ | head -c 100 - 6
Configurar Nginx como reverse proxy
Crie um virtual host que encaminha o tráfego HTTPS para o Open WebUI na porta 3000.
bashapt install -y nginx cat > /etc/nginx/sites-available/open-webui << 'NGINXEOF' server { listen 80; server_name chat.seudominio.com.br; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name chat.seudominio.com.br; ssl_certificate /etc/letsencrypt/live/chat.seudominio.com.br/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/chat.seudominio.com.br/privkey.pem; client_max_body_size 50M; location / { proxy_pass http://127.0.0.1:3000; 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_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 3600s; } } NGINXEOF ln -s /etc/nginx/sites-available/open-webui /etc/nginx/sites-enabled/open-webui nginx -t && systemctl reload nginx - 7
Obter certificado SSL com Certbot
Emita um certificado gratuito e configure renovação automática.
bashapt install -y certbot python3-certbot-nginx certbot --nginx \ -d chat.seudominio.com.br \ --non-interactive \ --agree-tos \ --email seu@email.com systemctl reload nginx - 8
Configurar firewall UFW
Restrinja o acesso às portas necessárias.
bashufw allow 22/tcp comment 'SSH' ufw allow 80/tcp comment 'HTTP' ufw allow 443/tcp comment 'HTTPS' ufw --force enable ufw status verbose - 9
Criar conta de administrador
Acesse https://chat.seudominio.com.br no navegador. O primeiro usuário a se registrar automaticamente recebe privilégios de administrador.
Não quer configurar manualmente?
Implante o Open WebUI em menos de 5 minutos com a Runstack. Infraestrutura da OPEN Datacenter, com servidores em São Paulo.
Se der problema
Certifique-se de que o Ollama está rodando no host (`systemctl status ollama`) e que o container foi iniciado com `--add-host=host.docker.internal:host-gateway`.
# Verificar Ollama no host
curl http://localhost:11434/api/tagsO container do Open WebUI pode estar ainda iniciando. Aguarde 30 segundos e teste localmente.
docker logs open-webui --tail=20
curl http://127.0.0.1:3000/Aumente o `client_max_body_size` no Nginx. O padrão é 1M, que é insuficiente para PDFs grandes.
# No bloco server do Nginx, adicione:
# client_max_body_size 100M;
nginx -t && systemctl reload nginxConfirme que o flag `--restart always` foi usado no docker run. Para adicionar retroativamente:
docker update --restart always open-webuiVerifique se há modelos instalados no Ollama e se a URL está correta nas configurações do Open WebUI (Admin Panel → Connections → Ollama).
# No host, listar modelos disponíveis:
ollama listPerguntas frequentes
Sim. Ele suporta qualquer API compatível com o padrão OpenAI, incluindo serviços como Groq, Mistral, Together AI e OpenAI diretamente. Passe a chave via OPENAI_API_KEY ou configure nas opções de conexão.
Em Admin Panel → Models → Pull a model from Ollama.com, digite o nome do modelo (ex.: llama3.2, mistral, gemma3) e confirme. O download começa em background.
Sim. Se o servidor tiver GPU NVIDIA, instale o Ollama com suporte CUDA e use a imagem `ghcr.io/open-webui/open-webui:ollama` que já inclui o Ollama com suporte a GPU (`--gpus=all`).
Os dados ficam no volume Docker `open-webui`. Para backup: `docker run --rm -v open-webui:/data -v $(pwd):/backup alpine tar czf /backup/open-webui-backup.tar.gz /data`.
Execute: `docker pull ghcr.io/open-webui/open-webui:main && docker stop open-webui && docker rm open-webui` e rode o comando docker run original novamente. Os dados persistem no volume.