# 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: ```bash # Crear el directorio en el VPS ssh root@ "mkdir -p /opt/openwebui" # Subir el docker-compose scp vps/docker-compose.openwebui.yml root@:/opt/openwebui/docker-compose.yml ``` ## 2. Crear el archivo `.env` en el VPS ```bash ssh root@ cd /opt/openwebui ``` Crea el archivo `/opt/openwebui/.env`: ```bash 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:** ```bash openssl rand -hex 32 ``` ## 3. Levantar OpenWebUI ```bash 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. **Account** → **API 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 ```bash curl -X POST https://ai.carlospalanca.es/api/chat/completions \ -H "Authorization: Bearer " \ -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: ```bash 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: ```bash OPENWEBUI_MODEL=claude-3-5-sonnet-20241022 ``` 2. `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