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.
- Crea una cuenta de administrador (la primera cuenta es admin automáticamente)
- 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.
- Inicia sesión en
https://ai.carlospalanca.es - Ve a Settings (icono de usuario arriba a la derecha)
- Account → API Keys
- Clic en "Create new secret key"
- Nombre:
agents-key - Copia el token (empieza por
sk-...) — solo lo verás una vez
Guarda este token como
OPENWEBUI_API_KEYen el.envde 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):
- En
/opt/agents/.env, cambia:
OPENWEBUI_MODEL=claude-3-5-sonnet-20241022
docker compose restarten la carpeta de agentes
Checklist
/opt/openwebui/creado en el VPSdocker-compose.ymlsubido.envcreado con las API keysdocker compose up -dejecutadohttps://ai.carlospalanca.esaccesible- Cuenta de admin creada
- API Key creada y copiada
- Verificado con curl que el API responde