5.3 KiB
Setup 05 — Despliegue de Agentes
Este es el último paso. Asegúrate de haber completado los setups 01-04 antes de continuar.
Prerequisitos
Antes de empezar, debes tener:
- ✅ GitHub PAT creado (
GITHUB_TOKENyGITHUB_REPO) - ✅ OpenWebUI funcionando (
OPENWEBUI_URLyOPENWEBUI_API_KEY) - ✅ 9 Discord bot tokens (
DISCORD_TOKEN_*) - ✅ 9 Discord channel IDs (
DISCORD_CHANNEL_*)
1. Subir el código de agentes al VPS
Desde tu máquina local:
# Opción A: rsync (recomendado)
rsync -avz --exclude '.env' agents/ root@<IP_VPS>:/opt/agents/
# Opción B: desde el VPS, clonar el repo directamente
ssh root@<IP_VPS>
git clone https://github.com/TU_USUARIO/carlospalanca.es.git /tmp/repo
cp -r /tmp/repo/agents /opt/agents
2. Crear el archivo .env en el VPS
ssh root@<IP_VPS>
cp /opt/agents/.env.example /opt/agents/.env
nano /opt/agents/.env
Rellena TODOS los valores. El archivo debe quedar así:
# OpenWebUI
OPENWEBUI_URL=https://ai.carlospalanca.es
OPENWEBUI_API_KEY=sk-... # Del paso 03
OPENWEBUI_MODEL=gpt-4o # O: claude-3-5-sonnet-20241022
# GitHub
GITHUB_TOKEN=github_pat_... # Del paso 01
GITHUB_REPO=TU_USUARIO/carlospalanca.es
# Discord bot tokens (del paso 04)
DISCORD_TOKEN_TYRION=...
DISCORD_TOKEN_VARYS=...
DISCORD_TOKEN_SAMWELL=...
DISCORD_TOKEN_BRONN=...
DISCORD_TOKEN_BRAN=...
DISCORD_TOKEN_DAVOS=...
DISCORD_TOKEN_ARYA=...
DISCORD_TOKEN_DAENERYS=...
DISCORD_TOKEN_JON=...
# Discord channel IDs (del paso 04)
DISCORD_CHANNEL_TRONO=...
DISCORD_CHANNEL_VARYS=...
DISCORD_CHANNEL_SAMWELL=...
DISCORD_CHANNEL_BRONN=...
DISCORD_CHANNEL_BRAN=...
DISCORD_CHANNEL_DAVOS=...
DISCORD_CHANNEL_ARYA=...
DISCORD_CHANNEL_DAENERYS=...
DISCORD_CHANNEL_JON=...
3. Construir y levantar los agentes
cd /opt/agents
# Construir las imágenes (la primera vez tarda 2-5 minutos)
docker compose build
# Levantar todos los bots
docker compose up -d
# Verificar que todos están corriendo
docker compose ps
Deberías ver los 9 servicios con estado running.
4. Verificar logs de cada agente
# Ver logs de Tyrion
docker compose logs -f tyrion
# Ver logs de todos
docker compose logs -f
Deberías ver para cada bot:
[TYRION] Conectado como Tyrion Lannister#1234
[SAMWELL] Conectado como Samwell Tarly#5678
...
5. Verificar en Discord
En tu servidor Discord, los 9 bots deberían aparecer ahora como online (punto verde).
6. Test del flujo completo
Test 1: Tyrion responde
Escribe en #el-trono-de-hierro:
Tyrion, ¿estás ahí?
Tyrion debería responder en el canal.
Test 2: Enrutamiento a Varys
Escribe en #el-trono-de-hierro:
Tyrion, necesito los mejores títulos para un vídeo sobre Docker Compose
Deberías ver:
- Tyrion responde en
#el-trono-de-hierroconfirmando que delega a Varys - En
#el-pajarilloaparece el mensaje con la tarea - Varys procesa y responde con los títulos
Test 3: Samwell crea un PR
Escribe en #el-trono-de-hierro:
Tyrion, pide a Samwell que cree un artículo de blog corto sobre qué es un contenedor Docker
Deberías ver:
- Tyrion delega a Samwell
- Samwell genera el artículo y crea un PR en GitHub
- Samwell responde en
#la-ciudadelacon la URL del PR - En GitHub aparece el PR con etiquetas
agent-createdyneeds-review - El workflow CI comenta en el PR si el build pasa
7. Comandos útiles de mantenimiento
cd /opt/agents
# Reiniciar un agente específico
docker compose restart tyrion
# Reiniciar todos
docker compose restart
# Ver logs en tiempo real de un agente
docker compose logs -f samwell
# Parar todos los agentes
docker compose stop
# Actualizar después de cambios en el código
git pull # En el repo clonado, o rsync de nuevo
docker compose build
docker compose up -d
# Ver uso de recursos
docker stats
8. Actualizar los system prompts sin rebuilder
Los prompt.txt se leen en el arranque del bot. Para actualizar un prompt:
# Editar el prompt
nano /opt/agents/samwell/prompt.txt
# Reiniciar solo ese bot (sin rebuild)
docker compose restart samwell
Troubleshooting
El bot no responde en Discord:
docker compose logs tyrion
# Busca errores de autenticación Discord (token incorrecto)
# o errores de conexión a OpenWebUI
Error "Message Content Intent not enabled":
→ Ve a Discord Developer Portal → la app del bot → Bot → activa "Message Content Intent"
→ Reinicia: docker compose restart <agente>
Error "401 Unauthorized" al llamar OpenWebUI:
→ Verifica que OPENWEBUI_API_KEY en .env es correcto
→ Verifica que OPENWEBUI_URL no tiene barra al final
Samwell no crea el PR:
→ Verifica GITHUB_TOKEN y GITHUB_REPO en .env
→ Verifica que el token tiene permisos Contents: Write y Pull requests: Write
→ Verifica que el repositorio existe y tiene rama main
Checklist
- Código de agentes subido a
/opt/agents/en el VPS .envcreado con todos los tokens y channel IDsdocker compose buildcompletado sin erroresdocker compose up -dejecutado- Los 9 servicios aparecen como
runningendocker compose ps - Los 9 bots aparecen online en Discord
- Test 1: Tyrion responde en
#el-trono-de-hierro - Test 2: Tyrion enruta a Varys
- Test 3: Samwell crea un PR en GitHub
- CI workflow comenta en el PR