133 lines
3.4 KiB
Markdown
133 lines
3.4 KiB
Markdown
# 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@<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
|
|
|
|
```bash
|
|
ssh root@<IP_VPS>
|
|
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 <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:
|
|
```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
|