Implantar um chatbot de IA para sua equipe em intranet
Suas equipes usam o ChatGPT sem sua autorização, e cada prompt pode enviar conteúdo de arquivos internos à OpenAI. Implantar um chatbot de IA empresarial na intranet resolve o problema em poucas horas: um servidor Ollama, Open WebUI em modo multiusuário, Nginx na entrada com HTTPS, e você oferece a toda a equipe uma interface semelhante à do ChatGPT em que nenhum token sai da sua rede. Este guia aborda a stack completa, desde a escolha do hardware até o backup das conversas.
#Por que usar um chatbot de IA empresarial na intranet?
Três razões concretas levam à internalização: a privacidade (seus prompts geralmente contêm trechos de código, dados de clientes e informações financeiras), o custo (uma assinatura ChatGPT Team de 25 €/mês/usuário rapidamente chega a 5.000 €/ano para 20 pessoas) e o controle (você escolhe os modelos, os system prompts e os logs das conversas).
Uma stack de chatbot de IA para intranet empresarial bem estruturada cabe em uma única máquina para equipes de até 30–50 pessoas. Acima disso, separa-se o servidor de inferência do frontend, mas a arquitetura permanece a mesma.
#Arquitetura da stack
Implantar uma IA local no trabalho: RGPD, AI Act, arquitetura multiusuário, custos, nota para a diretoria.
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
Quatro componentes empilhados, cada um com uma função precisa:
- Ollama
- Daemon de inferência que hospeda os modelos (Qwen 3.5, Granite 4.2, Gemma 4, Mistral Small). Escuta por padrão em http://localhost:11434.
- Open WebUI
- Interface multiusuário semelhante ao ChatGPT em Docker. Gerencia contas, conversas, RAG e funções admin/user.
- Nginx
- Proxy reverso na entrada. Termina a conexão HTTPS, aplica limites de requisições e disponibiliza o serviço em um nome de domínio interno bem definido.
- Watchtower + cron
- Atualização automática das imagens Docker e backup diário do volume Open WebUI (que contém contas + conversas).
#Requisitos de hardware e sistema operacional
O dimensionamento depende do modelo escolhido e da carga de uso simultâneo. Referências práticas para uma equipe:
- Equipe pequena (5–15 usuários, modelo 8–9B)
- 16 GB de RAM, GPU com 8-12 GB de VRAM (RTX 3060 12GB, 4060 Ti 16GB). Qwen 3.5 9B Q4 (6,6 GB, 256k ctx) ou Granite 4.2 8B (5,3 GB, muito econômico em tokens).
- Equipe média (15–30 usuários, modelo de 20–24B)
- 32 GB de RAM, GPU com 16 GB de VRAM (RTX 4070 Ti Super, 5080). Mistral Small 24B Q4 (14 GB, bom em francês) ou gpt-oss 20B (14 GB, muito rápido em MXFP4).
- Equipe grande (30-50 usuários, modelo de 27-30B)
- 64 GB de RAM, GPU com 24 GB de VRAM (RTX 3090/4090) ou Mac Studio M5 Max com 64 GB. Qwen 3.8 27B Q4 (18 GB, contexto de 262k, visão) ou Granite 4.2 30B Q4 (18 GB, voltado para empresas).
- Mais de 50 usuários simultâneos
- Mude para o vLLM ou use várias instâncias Ollama atrás de um balanceador de carga. Isso foge ao escopo deste guia.
Quanto ao sistema operacional: Ubuntu Server 22.04 ou 24.04 LTS continua sendo a opção mais simples. Docker Engine e drivers NVIDIA (com nvidia-container-toolkit se houver GPU) instalados previamente.
#1. Instalar Ollama no servidor
A instalação do Linux é feita pelo script oficial. Ele detecta a GPU NVIDIA e configura o serviço systemd automaticamente.
Por padrão, o daemon escuta apenas no localhost. Para que o Docker (Open WebUI) consiga chamá-lo a partir do seu contêiner, exponha-o em todas as interfaces locais do servidor. Edite o override do systemd:
- OLLAMA_HOST=0.0.0.0:11434
- Escuta em todas as interfaces. O firewall do sistema operacional mantém a porta 11434 bloqueada para acessos externos — apenas o Open WebUI na mesma máquina terá acesso a ela.
- OLLAMA_KEEP_ALIVE=30m
- Mantém o modelo carregado na VRAM por 30 min após o último prompt. Evita recarregamentos dispendiosos entre duas solicitações de usuários.
- OLLAMA_NUM_PARALLEL=4
- Número de requisições paralelas. 4 é um bom ponto de partida para um modelo 8-9B (do tipo Qwen 3.5 9B) em 12 GB de VRAM; reduza para 2 em uma GPU menor.
#2. Open WebUI em modo multiusuário com Docker
O Open WebUI é implantado com um único comando Docker. O volume open-webui:/app/backend/data contém toda a base de dados: contas, conversas, prompts. É desse volume que você precisará fazer backup.
- -p 127.0.0.1:3000:8080
- Open WebUI só pode ser acessado pelo próprio servidor. O Nginx fará a ponte para a rede interna. Crucial para a segurança.
- ENABLE_SIGNUP=false
- Ninguém pode criar uma conta pela página de login. Você cria os usuários pelo painel de administração.
- DEFAULT_USER_ROLE=pending
- Toda nova conta fica aguardando aprovação do administrador. Isso evita que um funcionário convide alguém de fora por acidente.
- OLLAMA_BASE_URL
- Aponta para o Ollama que está rodando no host. host.docker.internal é resolvido para o gateway do Docker graças a --add-host.
A primeira conta criada pela interface http://serveur:3000 (via encaminhamento SSH ou diretamente) torna-se automaticamente administradora. Crie-a imediatamente após a inicialização do contêiner, antes de expor o serviço.
#3. Proxy reverso Nginx com SSL interno
Para expor chat.entreprise.local corretamente, o Nginx termina a conexão HTTPS e encaminha as requisições para o Open WebUI em 127.0.0.1:3000. Em uma intranet, você pode usar um certificado emitido pela sua PKI interna ou um certificado autoassinado distribuído aos computadores via GPO.
- client_max_body_size 100M
- Indispensável para o RAG: permite que seus usuários façam upload de PDFs ou documentos de até 100 MB.
- Upgrade / Connection
- Ativa o WebSocket. Sem essas duas linhas, o streaming token a token deixa de funcionar e a interface parece travada.
- proxy_read_timeout 600s
- Uma solicitação de geração longa (resumo de um documento grande) pode levar vários minutos. O tempo limite padrão do Nginx (60s) interrompe a resposta no meio.
#4. Autenticação, funções e integração inicial
Open WebUI gerencia nativamente três papéis: admin (configura tudo), user (usa o chat) e pending (conta criada, mas não ativada). Para uma PME, a autenticação local é suficiente. Acima de 30 a 40 pessoas ou para um alinhamento rigoroso com a TI, conecte OIDC ao seu IdP (Keycloak, Authentik, Microsoft Entra).
- 01Criar os usuáriosPainel Admin → Users → Add User. Preencha o e-mail, o nome e a senha inicial. O usuário mudará a senha no primeiro acesso.
- 02Restringir os modelos por perfil de acessoEm Admin → Models, você pode ocultar determinados modelos dos usuários comuns. Por exemplo: manter o Qwen 3.8 27B (o que mais consome VRAM) disponível apenas para os administradores, se você o tiver carregado.
- 03Impor um prompt de sistema padrãoAdmin → Settings → Interface → Default Prompt Suggestions. Ideal para orientar o uso ('Você responde em francês, recusa temas sensíveis, etc.').
- 04Desativar as funcionalidades externasAdmin → Settings → desative Web Search (caso contrário, o Open WebUI chama o DuckDuckGo) e Image Generation se você não quiser nenhuma comunicação de saída pela rede.
#5. Monitoramento e backup das conversas
Três coisas para monitorar: saúde do servidor (CPU/GPU/RAM), saúde da API Ollama e integridade do banco de dados do Open WebUI. E uma coisa para fazer backup: o volume Docker open-webui.
#Monitoramento rápido
Se você usa Prometheus + Grafana, o nvidia_smi_exporter para a GPU e o node_exporter para o sistema bastam em 95% dos casos. O próprio Open WebUI expõe /health via GET; inclua esse endpoint na sua verificação de disponibilidade.
#Backup diário do volume Open WebUI
O volume Docker open-webui contém um banco de dados SQLite com todas as contas, conversas, prompts personalizados e documentos indexados para o RAG. Sua perda significa a perda completa do histórico da equipe.
O script mantém 14 dias de histórico. Para um plano de recuperação de desastres digno desse nome, replique /var/backups/open-webui para um NAS ou um bucket S3 criptografado todas as noites via rsync ou rclone.
#Solução de problemas
- Open WebUI não encontra nenhum modelo
- O contêiner não consegue acessar o Ollama. Verifique com docker exec open-webui curl http://host.docker.internal:11434/api/tags. Se houver timeout, seu Ollama está escutando em 127.0.0.1 — volte a definir OLLAMA_HOST=0.0.0.0:11434.
- Streaming com interrupções ou travado
- Faltam os cabeçalhos WebSocket no Nginx. Verifique a presença de proxy_set_header Upgrade e Connection "upgrade" na configuração do vhost.
- 504 Gateway Timeout em consultas longas
- proxy_read_timeout muito baixo. Aumente para pelo menos 600s. Para resumos de documentos grandes, aumente para 1200s.
- GPU saturada, latência disparando
- Requisições paralelas demais. Reduza OLLAMA_NUM_PARALLEL para 2 e aumente OLLAMA_KEEP_ALIVE para evitar recarregamentos.
- Erro 'no space left' em /var/lib/docker
- Os modelos Ollama não estão no Docker — é o volume open-webui que cresce. Execute docker system prune e monitore o RAG (os documentos indexados logo ocupam vários GB).
#Para se aprofundar
Você tem uma instância rodando para sua equipe. Três caminhos naturais para profissionalizá-la:
- Documentar a conformidade com o RGPD
- O guia sobre LLM local e RGPD aborda a auditoria, o registro das operações de tratamento e as recomendações da CNIL — indispensável se a sua equipe processa dados pessoais.
- Estender a ferramenta com RAG
- O guia de RAG com ChromaDB e Mistral mostra como conectar sua base documental interna (wiki, exportação do SharePoint, contratos) ao Open WebUI.
- Automatizar workflows
- O guia automatizar com n8n e Ollama explica como conectar seu chatbot à sua infraestrutura de negócios (e-mails recebidos, tickets, RSS) sem nenhum vazamento de dados para a nuvem.
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.