Instalación de Open WebUI para Interfaz de Chat con LLMs
Open WebUI (anteriormente Ollama WebUI) es una interfaz web completa de tipo ChatGPT para interactuar con modelos de lenguaje locales a través de Ollama o vLLM. Ofrece historial de conversaciones, gestión de usuarios, documentos RAG, soporte de imágenes y pipelines personalizados, todo sin depender de servicios externos. Esta guía cubre el despliegue con Docker, la integración con Ollama, la gestión de usuarios y la configuración de acceso seguro con Nginx.
Requisitos Previos
- Servidor Linux (Ubuntu 20.04+, Debian 11+)
- Docker y Docker Compose instalados
- Ollama o vLLM funcionando en el servidor
- Al menos 4 GB de RAM
- Nginx (para proxy inverso con SSL)
# Verificar Docker
docker --version
docker compose version
# Verificar Ollama
curl http://localhost:11434/api/version
Instalación con Docker
Instalación básica con Docker run
# Con Ollama en el mismo servidor (red host)
docker run -d \
--name open-webui \
--restart always \
--network=host \
-v open-webui-data:/app/backend/data \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
ghcr.io/open-webui/open-webui:main
# Con Ollama en un servidor diferente
docker run -d \
--name open-webui \
--restart always \
-p 3000:8080 \
-v open-webui-data:/app/backend/data \
-e OLLAMA_BASE_URL=http://IP_SERVIDOR_OLLAMA:11434 \
ghcr.io/open-webui/open-webui:main
# Con soporte GPU para procesamiento local
docker run -d \
--name open-webui \
--gpus all \
--restart always \
--network=host \
-v open-webui-data:/app/backend/data \
ghcr.io/open-webui/open-webui:cuda
Instalación con Docker Compose (recomendado)
mkdir -p /opt/open-webui
cd /opt/open-webui
# /opt/open-webui/docker-compose.yml
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
ports:
- "3000:8080"
volumes:
- ./data:/app/backend/data
environment:
# URL de Ollama (en el servidor host)
- OLLAMA_BASE_URL=http://host.docker.internal:11434
# Habilitar registro de nuevos usuarios (true/false)
- ENABLE_SIGNUP=true
# Dominio para cookies de sesión
- WEBUI_URL=https://chat.tudominio.com
# Nombre de la instancia
- WEBUI_NAME=Mi Asistente IA
# Clave secreta para las sesiones
- SECRET_KEY=cambia-esto-por-una-cadena-aleatoria-larga
extra_hosts:
- "host.docker.internal:host-gateway"
networks:
- webui-net
networks:
webui-net:
driver: bridge
# Iniciar el servicio
docker compose up -d
# Ver los logs
docker compose logs -f
# La interfaz estará disponible en:
# http://IP_SERVIDOR:3000
Instalación sin Docker
# Instalar dependencias del sistema
sudo apt-get update
sudo apt-get install -y python3 python3-pip python3-venv nodejs npm git
# Clonar el repositorio
git clone https://github.com/open-webui/open-webui.git /opt/open-webui
cd /opt/open-webui
# Instalar dependencias del backend Python
python3 -m venv venv
source venv/bin/activate
pip install -r backend/requirements.txt
# Construir el frontend
npm install
npm run build
# Configurar las variables de entorno
cat > /opt/open-webui/.env << 'EOF'
OLLAMA_BASE_URL=http://localhost:11434
WEBUI_SECRET_KEY=cambia-esta-clave-secreta
DATA_DIR=/opt/open-webui/data
EOF
# Iniciar el servidor
cd backend
uvicorn main:app --host 0.0.0.0 --port 8080
Integración con Ollama
Configuración de modelos desde la interfaz
Una vez que Open WebUI está funcionando:
- Accede a la interfaz web
- Ve a Settings > Models
- En "Ollama Models", haz clic en el botón de actualizar
- Los modelos instalados en Ollama aparecerán automáticamente
Descargar modelos desde la interfaz
# También puedes gestionar los modelos de Ollama desde Open WebUI
# Settings > Models > Pull a model from Ollama.com
# Introduce el nombre del modelo: llama3.2, mistral, etc.
Integración con APIs externas
Open WebUI también puede conectarse a APIs compatibles con OpenAI:
# Configurar en Settings > Connections > OpenAI API
# API Base URL: http://localhost:8000/v1 (para vLLM)
# API Key: any-string (vLLM no requiere clave real)
Gestión de Usuarios y Roles
Primer usuario (administrador)
El primer usuario que se registre en la instancia obtiene automáticamente el rol de administrador.
Roles disponibles
| Rol | Permisos |
|---|---|
| Admin | Acceso completo, gestión de usuarios y configuración |
| User | Acceso a chat, historial propio, documentos propios |
| Pending | Sin acceso hasta que un admin lo aprueba |
Configuración de acceso
# Variables de entorno para controlar el registro
# En docker-compose.yml o en el archivo .env:
# Deshabilitar el registro público (solo invitación)
ENABLE_SIGNUP=false
# Requerir aprobación manual de nuevos usuarios
DEFAULT_USER_ROLE=pending
# Permitir registro solo con dominios de email específicos
# (configurar desde el panel de admin)
Gestión de usuarios desde el panel
- Accede como administrador
- Ve a Admin Panel > Users
- Desde aquí puedes:
- Ver todos los usuarios registrados
- Cambiar roles (user, admin)
- Aprobar usuarios pendientes
- Desactivar cuentas
Configuración de RAG
RAG (Retrieval-Augmented Generation) permite que el modelo consulte documentos propios para responder preguntas.
# Configurar el modelo de embeddings para RAG
# En Settings > Documents:
# - Embedding Model: nomic-embed-text (via Ollama)
# - O usar un modelo de OpenAI si tienes API key
# Descargar el modelo de embeddings en Ollama
ollama pull nomic-embed-text
Añadir documentos
- Haz clic en el icono de + en el chat o ve a Workspace > Documents
- Sube archivos PDF, TXT, DOCX o introduce URLs
- Open WebUI indexará el contenido automáticamente
- En el chat, usa
#nombre-del-documentopara consultar el documento específico
Colecciones de documentos
# Las colecciones agrupan múltiples documentos relacionados
# Settings > Documents > Collections
# Ejemplo: crear una colección "Documentación Técnica" con todos los manuales
Proxy Inverso con Nginx
# Obtener certificado SSL
sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d chat.tudominio.com
# /etc/nginx/sites-available/open-webui
server {
listen 80;
server_name chat.tudominio.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name chat.tudominio.com;
ssl_certificate /etc/letsencrypt/live/chat.tudominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/chat.tudominio.com/privkey.pem;
# Subidas para documentos RAG
client_max_body_size 100M;
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;
# WebSocket para el streaming de respuestas
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Timeouts largos para respuestas de modelos grandes
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;
}
}
sudo ln -s /etc/nginx/sites-available/open-webui /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Variables de Entorno y Personalización
# Variables principales de configuración (añadir al docker-compose.yml)
# Identidad y URL
WEBUI_NAME=Mi Asistente Corporativo
WEBUI_URL=https://chat.tudominio.com
# Autenticación
ENABLE_SIGNUP=false # Deshabilitar registro público
DEFAULT_USER_ROLE=pending # Los nuevos usuarios deben ser aprobados
ENABLE_LOGIN_FORM=true # Mostrar el formulario de login
# Ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_API_BASE_URL=http://localhost:11434/api
# OpenAI (opcional)
OPENAI_API_BASE_URL=https://api.openai.com/v1
OPENAI_API_KEY=tu-api-key
# Almacenamiento
DATA_DIR=/app/backend/data
# Email (para verificación y recuperación de contraseña)
SMTP_SERVER=smtp.tudominio.com
SMTP_PORT=587
[email protected]
SMTP_PASSWORD=tu-clave-smtp
# Límites
MAX_UPLOAD_SIZE=104857600 # 100 MB máximo por archivo
Actualizar Open WebUI
cd /opt/open-webui
# Actualizar la imagen Docker
docker compose pull
docker compose up -d
# Ver la versión instalada
docker exec open-webui cat /app/backend/version.txt
Solución de Problemas
No se puede conectar con Ollama
# Verificar que Ollama está escuchando
curl http://localhost:11434/api/version
# Si Open WebUI está en Docker, verificar la red
docker exec open-webui curl http://host.docker.internal:11434/api/version
# Verificar los logs de Open WebUI
docker logs open-webui --tail 50
El streaming de respuestas se corta
# Aumentar los timeouts en Nginx
proxy_read_timeout 600;
proxy_send_timeout 600;
# Verificar que WebSocket funciona
# En los logs de Nginx buscar "101 Switching Protocols"
sudo tail -f /var/log/nginx/access.log | grep "101"
Los documentos RAG no funcionan
# Verificar que el modelo de embeddings está disponible
ollama list | grep embed
# Descargar si falta
ollama pull nomic-embed-text
# Verificar los logs del servidor
docker logs open-webui | grep -i "embed\|rag\|error"
La interfaz es lenta con modelos grandes
# Verificar que Ollama usa la GPU
nvidia-smi # Durante la generación debe mostrar uso de VRAM
# Considerar usar un modelo más pequeño
# llama3.2:1b en lugar de llama3.2:3b
Conclusión
Open WebUI transforma cualquier instalación de Ollama o vLLM en una plataforma de chat completa, con gestión de usuarios, historial persistente y capacidades RAG para consultar documentos propios. Con Nginx como proxy y SSL configurado, puedes ofrecer a todo tu equipo una alternativa privada y segura a ChatGPT, completamente bajo tu control y sin costes recurrentes por uso de API.


