feat(openwebui): añadir stack de interfaz web para modelos de IA

Open WebUI conectado al gateway LiteLLM, con autenticación delegada
a Authentik mediante trusted headers (X-Authentik-Email/Name).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Eduardo David Paredes Vara
2026-05-25 05:49:54 +00:00
parent da4baf44ab
commit 66bec9992d
2 changed files with 83 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
# Open WebUI — Interfaz web para LLMs
Open WebUI conectado al stack de Ollama. Expone una UI de chat accesible en `chat.sherlockhomeless.net`, protegida por CrowdSec. Tiene su propio sistema de login, no usa Authentik.
## Prerequisitos
- Stack **Ollama** desplegado y en la red `proxy`
- DNS + Tunnel registrado para `chat.sherlockhomeless.net`
```bash
cd cloudflared
./add-domain.sh chat
```
## Despliegue
```bash
mkdir -p /opt/openwebui/data
cp openwebui/stack.env openwebui/.env
# Editar .env: cambiar WEBUI_SECRET_KEY por un valor aleatorio
openssl rand -hex 32
docker compose --env-file openwebui/.env -f openwebui/docker-compose.yml up -d
```
## Primer acceso
La primera cuenta registrada se convierte en administrador. Después de crearla, pon `ENABLE_SIGNUP=false` en `.env` y redespliega para bloquear nuevos registros.
## Conexión con Ollama
OpenWebUI se conecta a Ollama via red interna Docker: `http://ollama:11434`.
Ambos contenedores deben estar en la red `proxy`.
## Variables clave
| Variable | Descripción |
|----------|-------------|
| `WEBUI_SECRET_KEY` | Clave para firmar sesiones — generar con `openssl rand -hex 32` |
| `OLLAMA_BASE_URL` | URL interna de Ollama (`http://ollama:11434`) |
| `ENABLE_SIGNUP` | `false` para bloquear nuevos registros |
| `WEBUI_NAME` | Nombre mostrado en la interfaz |
+42
View File
@@ -0,0 +1,42 @@
services:
openwebui:
image: ghcr.io/open-webui/open-webui:${OPENWEBUI_VERSION}
pull_policy: always
container_name: openwebui
restart: unless-stopped
environment:
TZ: ${TZ}
OLLAMA_BASE_URL: ""
OPENAI_API_BASE_URL: ${OPENAI_API_BASE_URL}
OPENAI_API_KEY: ${OPENAI_API_KEY}
WEBUI_SECRET_KEY: ${WEBUI_SECRET_KEY}
WEBUI_URL: https://${OPENWEBUI_DOMAIN}
WEBUI_NAME: ${WEBUI_NAME}
ENABLE_SIGNUP: ${ENABLE_SIGNUP}
ENABLE_LOGIN_FORM: ${ENABLE_LOGIN_FORM}
WEBUI_AUTH_TRUSTED_EMAIL_HEADER: ${WEBUI_AUTH_TRUSTED_EMAIL_HEADER}
WEBUI_AUTH_TRUSTED_NAME_HEADER: ${WEBUI_AUTH_TRUSTED_NAME_HEADER}
volumes:
- ${OPENWEBUI_DATA_PATH}:/app/backend/data:Z
networks:
- proxy
labels:
traefik.enable: "true"
traefik.docker.network: "${TRAEFIK_DOCKER_NETWORK}"
traefik.http.routers.openwebui.rule: "Host(`${OPENWEBUI_DOMAIN}`)"
traefik.http.routers.openwebui.entrypoints: "${TRAEFIK_ENTRYPOINT_SECURE}"
traefik.http.routers.openwebui.tls: "true"
traefik.http.routers.openwebui.tls.certresolver: "${TRAEFIK_CERTRESOLVER}"
traefik.http.routers.openwebui.middlewares: "crowdsec-bouncer@file,${TRAEFIK_AUTH_MIDDLEWARE}"
traefik.http.services.openwebui.loadbalancer.server.port: "8080"
homepage.group: "IA"
homepage.name: "Open WebUI"
homepage.icon: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/open-webui.svg"
homepage.description: "Interfaz web para LLMs via LiteLLM"
homepage.href: "https://${OPENWEBUI_DOMAIN}"
homepage.siteMonitor: "http://openwebui:8080/"
homepage.weight: "10"
networks:
proxy:
external: true