¿Buscas una alternativa privada a ChatGPT que funcione completamente en tu servidor? Open WebUI Docker Compose es la solución perfecta para ejecutar modelos de inteligencia artificial de forma local, sin enviar datos a terceros y con total control sobre tu información.
En esta guía completa aprenderás a desplegar Open WebUI con Ollama usando Docker Compose, configurar modelos de IA como Llama, Gemma o Mixtral, y disfrutar de una interfaz moderna similar a ChatGPT pero completamente autohospedada.
¿Qué es Open WebUI?
Open WebUI es una plataforma de interfaz web autohospedada y extensible diseñada para operar completamente offline. Con más de 50,000 estrellas en GitHub, se ha convertido en la solución más popular para interactuar con modelos de lenguaje grandes (LLMs) de forma local.
Esta herramienta funciona como una capa de interfaz para runners de IA como Ollama, OpenAI API, LMStudio y otros, permitiéndote chatear con modelos de inteligencia artificial desde tu navegador sin depender de servicios cloud.
Ventajas de Usar Open WebUI Docker Compose
Implementar esta solución ofrece beneficios significativos sobre alternativas cloud:
Privacidad total: Tus conversaciones y datos nunca abandonan tu servidor. Perfecto para información sensible o proyectos confidenciales.
Sin costes recurrentes: A diferencia de ChatGPT Plus o Claude Pro, no hay suscripciones mensuales. Solo necesitas hardware local.
Múltiples modelos: Ejecuta y compara diferentes LLMs simultáneamente: Llama 3, Mistral, Gemma, Phi y más.
Personalización completa: Crea personajes personalizados, agentes especializados y herramientas adaptadas a tus necesidades.
Offline: Funciona sin conexión a internet una vez descargados los modelos.
Requisitos Previos
Antes de instalar, verifica que tu sistema cumple estos requisitos:
- Docker 27.4.0 o superior con Compose v2+
- Al menos 10 GB de espacio libre en disco
- 8 GB de RAM mínimo (16 GB recomendado para modelos grandes)
- CPU moderna o GPU Nvidia (opcional, pero mejora rendimiento)
Para equipos con GPU Nvidia, los modelos se ejecutarán significativamente más rápido gracias a la aceleración por hardware.
Instalación con Open WebUI Docker Compose
Configuración Básica
Crea un directorio para tu proyecto y dentro un archivo docker-compose.yml:
services:
ollama:
image: ollama/ollama:latest
ports:
- 11434:11434
volumes:
- ollama:/root/.ollama
container_name: ollama
tty: true
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
volumes:
- open-webui:/app/backend/data
depends_on:
- ollama
ports:
- 3000:8080
environment:
- 'OLLAMA_BASE_URL=http://ollama:11434'
- 'WEBUI_SECRET_KEY='
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped
volumes:
ollama: {}
open-webui: {}
Con Soporte GPU Nvidia
Si dispones de una tarjeta gráfica Nvidia con CUDA, usa esta configuración optimizada:
services:
ollama:
image: ollama/ollama:latest
ports:
- 11434:11434
volumes:
- ollama:/root/.ollama
container_name: ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
volumes:
- open-webui:/app/backend/data
depends_on:
- ollama
ports:
- 3000:8080
environment:
- 'OLLAMA_BASE_URL=http://ollama:11434'
- 'WEBUI_SECRET_KEY=tu-clave-secreta-aqui'
restart: unless-stopped
volumes:
ollama: {}
open-webui: {}
Iniciar los Servicios
Ejecuta este comando desde el directorio que contiene tu docker-compose.yml:
docker compose up -d
Docker descargará las imágenes necesarias y levantará ambos contenedores en segundo plano. Este proceso puede tardar varios minutos la primera vez.
Descargar Modelos de IA
Una vez los contenedores están activos, necesitas descargar al menos un modelo de lenguaje. Los más populares son:
Modelos ligeros (ideales para pruebas):
docker compose exec ollama ollama pull smollm2:135m
docker compose exec ollama ollama pull phi:latest
Modelos de rendimiento medio:
docker compose exec ollama ollama pull llama3:8b
docker compose exec ollama ollama pull gemma:7b
Modelos avanzados (requieren más recursos):
docker compose exec ollama ollama pull llama3:70b
docker compose exec ollama ollama pull mixtral:8x7b
El tamaño de descarga varía desde 100 MB para modelos pequeños hasta 40 GB para los más potentes. Elige según tu hardware disponible.
Primer Acceso y Configuración
Abre tu navegador y accede a http://localhost:3000. La primera vez verás una pantalla de registro donde crearás tu cuenta de administrador.
Importante: El primer usuario registrado obtiene privilegios de administrador. Elige un email y contraseña seguros.
Tras iniciar sesión, selecciona uno de los modelos descargados en el desplegable superior y comienza a chatear. La interfaz es intuitiva y similar a ChatGPT.
Características Avanzadas
RAG Integrado (Retrieval Augmented Generation)
Sube documentos PDF, TXT o Markdown para que el modelo responda preguntas basándose en tu información. La herramienta incluye soporte para 9 bases de datos vectoriales diferentes.
Generación de Imágenes
Integra DALL-E, Stable Diffusion (vía AUTOMATIC1111) o ComfyUI para generar imágenes desde la misma interfaz de chat.
Búsqueda Web
Conecta proveedores de búsqueda como Google, DuckDuckGo o Brave para que el modelo acceda a información actualizada de internet.
Control de Acceso
Configura roles y permisos para equipos. Soporta LDAP, Active Directory y SCIM 2.0 para integraciones empresariales.
Python Function Calling
Crea herramientas personalizadas en Python que el modelo puede ejecutar automáticamente según el contexto de la conversación.
Mejores Prácticas de Seguridad
Establece WEBUI_SECRET_KEY: Genera una clave robusta para producción:
environment:
- 'WEBUI_SECRET_KEY=tu-clave-aleatoria-de-32-caracteres'
Usa proxy inverso: Implementa Nginx Proxy Manager o Traefik para HTTPS y autenticación adicional.
Limita acceso externo: Si solo usas la aplicación localmente, no expongas el puerto 3000 al exterior. Mantén la línea ports: - 3000:8080 solo para acceso en LAN.
Backups regulares: Los volúmenes ollama y open-webui contienen modelos descargados y configuración. Realiza copias de seguridad periódicas.
Merece la pena decir algo sobre el rendimiento, porque condiciona la experiencia más que cualquier ajuste. La velocidad de respuesta no depende de esta interfaz, que es solo la capa visual, sino del motor que tiene detrás y del hardware donde corre. Si las respuestas van lentas, el cuello de botella está en el servidor de inferencia y en la memoria de la tarjeta gráfica, no aquí.
Eso tiene una consecuencia práctica cómoda: puedes instalar la interfaz en una máquina modesta —incluso en el mismo servidor donde tienes el resto de servicios— y apuntarla a otra con la tarjeta gráfica. Separar ambas piezas es además lo que te permite dar acceso a varias personas sin multiplicar el hardware, porque las peticiones se encolan contra un único motor.
Trabajar con tus propios documentos
Es la función que convierte la instalación en algo más que un chat bonito: subir tus manuales, contratos o apuntes y preguntar sobre ellos con la garantía de que nada sale de tu servidor.
El proceso por debajo tiene tres pasos. El documento se trocea en fragmentos, cada fragmento se convierte en un vector mediante un modelo de embeddings, y al preguntar se recuperan los fragmentos más parecidos a tu consulta para dárselos al modelo como contexto. De ahí que la calidad dependa tanto del troceado como del modelo que responde.
- Documentos sueltos: se adjuntan a una conversación concreta y se descartan al terminar.
- Colecciones: se agrupan por tema y se invocan escribiendo
#seguido del nombre. - Búsqueda web: añade resultados en vivo al contexto, útil para lo que el modelo no puede saber.
Si las respuestas salen imprecisas, casi nunca es culpa del modelo. Revisa primero el tamaño de fragmento —demasiado pequeño pierde contexto, demasiado grande diluye lo relevante— y cuántos fragmentos se recuperan por consulta. Ajustar esos dos parámetros suele mejorar los resultados más que cambiar a un modelo mayor.
Una limitación honesta: para documentación técnica corta funciona muy bien, pero con cientos de PDF largos el sistema integrado se queda corto frente a una solución dedicada. Si llegas a ese punto, la vía es montar la base vectorial aparte y conectarla mediante una tubería.
Multiusuario y autenticación en Open WebUI Docker Compose
En cuanto la instalación deja de ser solo tuya, la gestión de cuentas pasa a primer plano. El primer usuario que se registra se convierte en administrador, y a partir de ahí conviene cerrar el registro abierto desde el panel.
environment:
- WEBUI_AUTH=true
- ENABLE_SIGNUP=false
- DEFAULT_USER_ROLE=pending
- ENABLE_ADMIN_EXPORT=false
Ese DEFAULT_USER_ROLE=pending es la opción más práctica en un equipo: quien se registre queda a la espera de que un administrador le dé acceso, en lugar de entrar directamente. Y ENABLE_ADMIN_EXPORT en falso evita que se pueda volcar la base de conversaciones de golpe.
Si ya tienes un proveedor de identidad, la interfaz admite OIDC y te ahorra mantener otro juego de contraseñas. Encaja directamente con Authentik, con Keycloak o con Pocket ID si prefieres algo ligero basado en passkeys.
- ENABLE_OAUTH_SIGNUP=true
- OAUTH_CLIENT_ID=open-webui
- OAUTH_CLIENT_SECRET=el-secreto-del-proveedor
- OPENID_PROVIDER_URL=https://auth.midominio.es/.well-known/openid-configuration
Cada usuario mantiene sus conversaciones y sus documentos aislados del resto, así que puedes compartir la instalación con el equipo sin que nadie vea el historial ajeno. Los modelos, en cambio, son comunes: se descargan una vez y los usa todo el mundo.
Más allá de Ollama: modelos externos y funciones
Aunque el uso habitual sea contra un servidor local, la interfaz habla el protocolo de OpenAI, y eso abre dos posibilidades interesantes.
La primera es convivir con proveedores externos: puedes tener modelos locales para lo cotidiano y añadir un servicio de pago para las tareas que de verdad lo necesiten, eligiendo en cada conversación desde el mismo desplegable.
- OPENAI_API_BASE_URL=https://api.proveedor.example/v1
- OPENAI_API_KEY=tu-clave
La segunda es apuntar a cualquier motor compatible que tengas montado, no solo al que vimos en la guía de Ollama con Docker Compose. Servidores de inferencia orientados a rendimiento exponen la misma interfaz y se conectan igual.
Cuidado con las claves. Si metes una clave de un proveedor de pago, cualquiera con acceso a la instalación puede consumirla. Con el registro abierto y la instancia publicada en Internet, eso se traduce en una factura que no esperabas. Cierra el registro antes de configurar nada externo.
Para lo demás, el sistema de funciones permite añadir capacidades sin tocar el código: filtros que procesan los mensajes antes o después del modelo, herramientas que el asistente puede invocar y tuberías que encadenan varios pasos. Es donde acaban las integraciones más ambiciosas, como conectar la conversación con una base vectorial tipo Qdrant para consultar tu propia documentación.
Un consejo de dimensionamiento antes de emocionarse: cada documento que subes se convierte en vectores y se guarda, de modo que el disco crece más rápido de lo que la gente espera. Vigila el volumen de datos el primer mes y define qué se conserva y qué no.
Comparación: Open WebUI vs ChatGPT
| Característica | Open WebUI | ChatGPT |
|---|---|---|
| Privacidad | Total (local) | Datos en servidores OpenAI |
| Coste | Gratis | $20/mes (Plus) |
| Modelos disponibles | Llama, Mistral, Gemma, etc. | GPT-3.5, GPT-4 |
| Offline | Sí | No |
| Personalización | Total | Limitada |
| Velocidad | Según hardware | Rápida (cloud) |
Solución de Problemas Comunes
El contenedor no inicia:
Verifica que los puertos 3000 y 11434 no estén ocupados:
netstat -tuln | grep -E '3000|11434'
Modelos lentos:
Los LLMs grandes requieren RAM y CPU potentes. Prueba modelos más pequeños como phi:latest o considera añadir una GPU.
Error de conexión entre servicios:
Asegúrate que OLLAMA_BASE_URL apunta correctamente a http://ollama:11434. Docker Compose crea una red interna donde los servicios se comunican por nombre.
Espacio en disco insuficiente:
Los modelos pueden ocupar decenas de GB. Limpia modelos antiguos:
docker compose exec ollama ollama rm nombre-modelo
Preguntas Frecuentes (FAQ)
¿Puedo usar Open WebUI con modelos de OpenAI?
Sí, puedes configurar la aplicación para conectarse a la API de OpenAI, Claude u otros proveedores compatibles mediante variables de entorno.
¿Cuánta RAM necesito?
Mínimo 8 GB, pero 16 GB es recomendable para modelos de 7B parámetros. Modelos de 70B requieren 32 GB o más.
¿Es compatible con Mac y Windows?
Sí, funciona en cualquier sistema que soporte Docker. En Windows necesitarás WSL2 habilitado.
¿Puedo acceder desde dispositivos móviles?
Absolutamente. La interfaz web es responsive y funciona perfectamente en smartphones y tablets conectados a tu red local.
¿Cómo actualizo a nuevas versiones?
Ejecuta docker compose pull seguido de docker compose up -d para descargar y aplicar actualizaciones automáticamente.
Conclusión
Implementar tu propia instancia de inteligencia artificial privada es más accesible que nunca gracias a esta combinación de tecnologías. La privacidad, el control total y la ausencia de costes recurrentes hacen de esta solución una alternativa seria a servicios cloud.
Con esta guía tienes todo lo necesario para empezar a experimentar con modelos de lenguaje localmente. Explora diferentes LLMs, prueba características avanzadas como RAG o generación de imágenes, y disfruta de una plataforma de IA completamente bajo tu control.
Para más tutoriales sobre servicios autohospedados con Docker, visita nuestra categoría Docker Compose.
Enlaces útiles:
- Repositorio oficial Open WebUI en GitHub
- Documentación oficial de Open WebUI
- Ollama – Runner de modelos LLM
- Repositorio de Ollama en GitHub
- Documentación oficial de Docker Compose
- Tutorial: Ollama con Open WebUI en Docker Compose
- Guía: Setup Open WebUI con Ollama y Docker Desktop
