Files
Portainer/openwebui/README.md
T
2026-08-16 21:45:05 +00:00

2.7 KiB

Open WebUI

Interfaz de chat para los modelos publicados por LiteLLM. Ollama está deshabilitado explícitamente; este despliegue usa únicamente la API compatible con OpenAI.

Arquitectura

Open WebUI se une a proxy, desde donde Traefik lo publica y puede alcanzar litellm:4000. Los chats, usuarios y ajustes se guardan en OPENWEBUI_DATA_PATH.

Configuración

Variable Uso
OPENAI_API_BASE_URL http://litellm:4000/v1 para tráfico interno
OPENAI_API_KEY Valor de LITELLM_MASTER_KEY, no una credencial de Codex
WEBUI_SECRET_KEY Firma sesiones; debe ser aleatoria y estable
OPENWEBUI_DOMAIN, WEBUI_URL URL pública detrás de Traefik
ENABLE_SIGNUP Debe desactivarse salvo durante un alta controlada
ENABLE_LOGIN_FORM Mantiene o elimina el login local según la estrategia SSO
WEBUI_AUTH_TRUSTED_*_HEADER Cabeceras de identidad entregadas por el proxy autenticado

Las cabeceras de usuario sólo son seguras si Open WebUI no puede alcanzarse evitando Traefik y si el proxy elimina cualquier cabecera equivalente enviada por el cliente. WEBUI_SECRET_KEY no debe cambiarse en cada recreación porque invalidaría sesiones.

Relación con Codex

Open WebUI nunca monta ni lee auth.json. Envía una petición OpenAI-compatible a LiteLLM; LiteLLM valida su clave, selecciona el alias y, si corresponde, usa su proveedor Codex. Esto limita la exposición del refresh token a un único contenedor.

Despliegue

cd openwebui
docker compose --env-file .env config
docker compose --env-file .env up -d
sudo install -o root -g root -m 0644 traefik-dynamic.yml /opt/traefik/dynamic/openwebui.yml

Traefik observa /opt/traefik/dynamic y recarga este fichero sin reiniciar el contenedor. La ruta /_app/immutable/ usa un router de mayor prioridad: conserva CrowdSec, omite el ForwardAuth repetitivo de Authentik y entrega los bundles con compresion y cache inmutable. El HTML, /api, /static y las rutas de usuario siguen protegidos por Authentik. No amplíes la excepción a rutas que puedan contener datos o recursos mutables.

Verificación

docker compose --env-file .env ps
docker compose --env-file .env logs -f openwebui
curl -I -H 'Accept-Encoding: br, gzip' \
  https://oweb.sherlockhomeless.net/_app/immutable/chunks/<bundle>.js
curl -I https://oweb.sherlockhomeless.net/api/config

El primer comando debe devolver 200, Content-Encoding y Cache-Control: public, max-age=31536000, immutable. Sin una sesión activa, el segundo debe seguir redirigiendo a Authentik.

Si no aparecen modelos, prueba primero /v1/models contra LiteLLM con la misma clave. Si los modelos aparecen pero fallan sólo los alias Codex, revisa el montaje y renovación de auth.json en LiteLLM.