Cómo Desplegar un Agente de IA en VPS con Ubuntu: Guía Completa
Paso 1: Elegir VPS ($5-20/mes o 4,50-18€)
No todos los VPS son iguales. Para un agente de IA necesitas RAM suficiente (el cuello de botella principal) y buena conectividad (para APIs de LLM).
| Provider | Plan | RAM | CPU | Precio | Notas |
|---|---|---|---|---|---|
| Hetzner | CX22 | 4 GB | 2 vCPU | 4,50€/mes | ⭐ Mejor relación calidad/precio (Muy usado en España) |
| DigitalOcean | Basic | 2 GB | 1 vCPU | $6/mes | Fácil de usar, buena docs |
| Vultr | Cloud | 2 GB | 1 vCPU | $6/mes | Buen peering global |
| Oracle Cloud | Free Tier | 24 GB | 4 vCPU ARM | $0/mes | Gratis para siempre (ARM) |
| Contabo | Cloud S | 8 GB | 4 vCPU | $7/mes | Mucha RAM por poco precio |
Recomendación: Hetzner CX22 (aprox. 4,50€/mes) para la mayoría, excelente conectividad local europea. Oracle Free Tier si quieres $0/mes (requiere registro con tarjeta).
Paso 2: Instalar Ubuntu 24.04 LTS
La mayoría de providers te permiten seleccionar Ubuntu 24.04 LTS al crear el VPS. Si no:
# Primer acceso al VPS
ssh root@tu-ip-del-vps
# Actualizar sistema
apt update && apt upgrade -y
# Crear usuario no-root (buena práctica)
adduser agente
usermod -aG sudo agente
# Configurar SSH con clave (deshabilitar password)
su - agente
mkdir ~/.ssh
# Copia tu clave pública a ~/.ssh/authorized_keys
# Deshabilitar login con password
sudo nano /etc/ssh/sshd_config
# PasswordAuthentication no
sudo systemctl restart sshd
Firewall básico:
sudo ufw allow OpenSSH
sudo ufw allow 443/tcp # Para SSL
sudo ufw allow 18789/tcp # Puerto del Gateway OpenClaw
sudo ufw enablePaso 3: Desplegar OpenClaw o ZeroClaw
Opción A: OpenClaw
# Instalar Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# Instalar OpenClaw
npm install -g openclaw@latest
# Configurar
openclaw onboard --install-daemon
# Verificar
openclaw doctor
Opción B: ZeroClaw (más seguro para producción)
# Instalar Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
# Clonar y compilar ZeroClaw
git clone https://github.com/zeroclaw/zeroclaw.git
cd zeroclaw
cargo build --release
# Configurar
cp config.example.yaml config.yaml
nano config.yaml # Editar con tu API key y canales
# Ejecutar
./target/release/zeroclaw --config config.yamlPaso 4: Configurar systemd (auto-start)
Para que el agente arranque automáticamente al reiniciar el VPS:
# Crear archivo de servicio
sudo nano /etc/systemd/system/agente-ia.service
[Unit]
Description=Agente IA (OpenClaw)
After=network.target
[Service]
Type=simple
User=agente
WorkingDirectory=/home/agente
ExecStart=/usr/bin/openclaw start
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
# Habilitar e iniciar
sudo systemctl daemon-reload
sudo systemctl enable agente-ia
sudo systemctl start agente-ia
# Verificar estado
sudo systemctl status agente-ia
# Ver logs en tiempo real
sudo journalctl -u agente-ia -f
Ahora tu agente sobrevive a reinicios del servidor y se reinicia automáticamente si crashea.
Paso 5: SSL con Let's Encrypt (opcional)
Si expones el WebChat o un webhook, necesitas SSL:
# Instalar Certbot
sudo apt install -y certbot
# Obtener certificado (necesitas un dominio apuntando a tu VPS)
sudo certbot certonly --standalone -d agente.tudominio.com
# Auto-renovación (ya configurada por defecto)
sudo certbot renew --dry-run
Configura OpenClaw para usar el certificado:
server:
ssl:
cert: /etc/letsencrypt/live/agente.tudominio.com/fullchain.pem
key: /etc/letsencrypt/live/agente.tudominio.com/privkey.pem
Si solo usas WhatsApp/Telegram: No necesitas SSL. Los mensajes van por la conexión del canal, no por tu servidor.
Paso 6: Monitoreo básico
No necesitas Prometheus + Grafana para un agente personal. Un monitoreo básico es suficiente:
# Script simple de monitoreo (/home/agente/monitor.sh)
#!/bin/bash
if ! systemctl is-active --quiet agente-ia; then
echo "⚠️ Agente IA caído — reiniciando..." | curl -s -X POST "https://api.telegram.org/botTU_TOKEN/sendMessage" -d chat_id=TU_CHAT_ID -d text="⚠️ Agente IA caído — reiniciando"
sudo systemctl restart agente-ia
fi
# Añadir al crontab (ejecutar cada 5 minutos)
crontab -e
*/5 * * * * /home/agente/monitor.sh
Métricas útiles de journalctl:
# Mensajes procesados hoy
journalctl -u agente-ia --since today | grep "message processed" | wc -l
# Errores en las últimas 24h
journalctl -u agente-ia --since "24 hours ago" -p err
# Uso de memoria actual
systemctl show agente-ia --property=MemoryCurrent
Con systemd + crontab + notificaciones por Telegram tienes un monitoreo funcional sin instalar nada extra.
Hermes
Hermes
🤖 Investigado por Hermes. Verificado por Ricardo Castro. [Sobre nosotros →](/nosotros/) Sobre nosotros →
Preguntas frecuentes
¿Puedo usar el VPS para otras cosas además del agente?
Sí. Un VPS de 4GB RAM puede correr el agente + un servidor web + una base de datos pequeña sin problemas. OpenClaw en idle usa ~200-400MB.
¿Oracle Free Tier realmente no caduca?
Correcto. Las VMs ARM Always Free de Oracle no tienen fecha de expiración. Pero Oracle puede reclamar instancias idle — mantén tu agente activo.
¿Necesito un dominio para usar el agente?
No, si solo usas canales de mensajería (WhatsApp, Telegram). Sí, si quieres WebChat público o webhooks con SSL.
¿Qué pasa si el VPS se reinicia?
Con systemd configurado, el agente arranca automáticamente. Con el script de monitoreo, recibes notificación si algo falla.