Files
carlospalanca.es/docs/setup/03-openwebui.md

3.4 KiB

Setup 03 — OpenWebUI

OpenWebUI es el gateway de LLM. Los 9 agentes lo llaman vía API en lugar de llamar directamente a OpenAI/Anthropic. Esto centraliza el modelo y permite cambiarlo sin redeployar los bots.

1. Subir el archivo de configuración al VPS

Desde tu máquina local:

# Crear el directorio en el VPS
ssh root@<IP_VPS> "mkdir -p /opt/openwebui"

# Subir el docker-compose
scp vps/docker-compose.openwebui.yml root@<IP_VPS>:/opt/openwebui/docker-compose.yml

2. Crear el archivo .env en el VPS

ssh root@<IP_VPS>
cd /opt/openwebui

Crea el archivo /opt/openwebui/.env:

cat > .env << 'EOF'
# Genera con: openssl rand -hex 32
WEBUI_SECRET_KEY=CAMBIA_ESTO_POR_STRING_ALEATORIO

# Modelo por defecto que verán los usuarios en la UI
DEFAULT_MODEL=gpt-4o

# Pon SOLO la clave del proveedor que vayas a usar:

# OpenAI (GPT-4o, GPT-4, etc.)
OPENAI_API_KEY=sk-...

# Anthropic (Claude 3.5 Sonnet, Claude 3 Opus, etc.)
# ANTHROPIC_API_KEY=sk-ant-...
EOF

Para generar un WEBUI_SECRET_KEY seguro:

openssl rand -hex 32

3. Levantar OpenWebUI

cd /opt/openwebui
docker compose up -d

# Verificar que está corriendo
docker compose ps
docker compose logs -f openwebui

Espera a que aparezca Application startup complete en los logs.

4. Verificar acceso

Abre en el navegador: https://ai.carlospalanca.es

Deberías ver la pantalla de login de OpenWebUI.

  1. Crea una cuenta de administrador (la primera cuenta es admin automáticamente)
  2. Verifica que puedes chatear (Settings → Models → selecciona un modelo)

5. Crear el API Key para los agentes

Los agentes necesitan un API key para autenticarse contra OpenWebUI.

  1. Inicia sesión en https://ai.carlospalanca.es
  2. Ve a Settings (icono de usuario arriba a la derecha)
  3. AccountAPI Keys
  4. Clic en "Create new secret key"
  5. Nombre: agents-key
  6. Copia el token (empieza por sk-...) — solo lo verás una vez

Guarda este token como OPENWEBUI_API_KEY en el .env de los agentes.

6. Verificar el API con curl

curl -X POST https://ai.carlospalanca.es/api/chat/completions \
  -H "Authorization: Bearer <TU_OPENWEBUI_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "Responde solo: OK"}]
  }'

Debería responder algo como: {"choices":[{"message":{"content":"OK",...

7. (Opcional) Añadir modelos de Ollama para uso local

Si quieres usar modelos locales (Llama 3.1, Mistral, etc.) además de los de OpenAI:

En docker-compose.yml, descomenta la sección de ollama y la variable OLLAMA_BASE_URL.

Luego:

docker compose up -d
# Descargar un modelo (ej: llama3.1:8b)
docker exec -it ollama ollama pull llama3.1:8b

Los modelos locales requieren más RAM. Para el CX22 de Hetzner (4 GB), usa solo modelos de 7-8B.

Cambiar el modelo que usan los agentes

Para cambiar de GPT-4o a Claude (sin tocar código):

  1. En /opt/agents/.env, cambia:
OPENWEBUI_MODEL=claude-3-5-sonnet-20241022
  1. docker compose restart en la carpeta de agentes

Checklist

  • /opt/openwebui/ creado en el VPS
  • docker-compose.yml subido
  • .env creado con las API keys
  • docker compose up -d ejecutado
  • https://ai.carlospalanca.es accesible
  • Cuenta de admin creada
  • API Key creada y copiada
  • Verificado con curl que el API responde