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.
Pré-requisitos
- VPS mínima: 2 vCPU · 4 GB RAM · 20 GB SSD (Runstack Basic ou superior)
- Sistema: Ubuntu 24.04 LTS
- 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.
DicaSe você já tem o Ollama rodando na VPS, use o Modo A. Se quiser usar apenas APIs externas (OpenAI, Groq etc.), use o Modo B. - 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:mainDicaO Ollama deve estar rodando na porta padrão 11434 do host. O Open WebUI detecta-o automaticamente via host.docker.internal. - 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 nginxAtençãoSubstitua chat.seudominio.com.br pelo seu subdomínio real. - 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.
DicaApós criar o primeiro admin, você pode desativar cadastros públicos nas configurações (Admin Panel → Settings → General → Default User Role).
$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o Open WebUI em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.
Troubleshooting
Perguntas frequentes
[VERIFICAR antes de publicar]
- 1. Confirme a tag de imagem mais recente em ghcr.io/open-webui/open-webui — a tag `main` é o latest, mas fixar uma versão é recomendado para produção.
- 2. Verifique se o mapeamento de porta interno ainda é 8080 (container) na versão atual.