Autoalojar Hermes Agent en un VPS
Despliega Hermes Agent de Nous Research en tu propio VPS con sandboxing Docker, mensajeria Telegram y persistencia systemd. Cada comando probado en un servidor real.
Hermes Agent funciona localmente en la mayoria de maquinas de desarrollo. Pero local significa fuera de linea cuando tu portatil duerme, sin acceso desde el telefono y sin workspace persistente. Moverlo a un VPS resuelve los tres problemas: el agente corre 24/7, le hablas desde Telegram y mantiene su memoria y habilidades entre sesiones.
Esta guia te lleva paso a paso para desplegar Hermes Agent en un VPS desde cero. Vas a instalarlo, conectar un proveedor de LLM, aislar los comandos de terminal en Docker, conectar Telegram y ejecutar todo como un servicio systemd que sobrevive a reinicios. Cada comando fue probado en un VPS Ubuntu 24.04 con 4 vCPU y 8 GB de RAM.
Autoalojar agentes IA en un VPS
Que es Hermes Agent y por que autoalojarlo?
Hermes Agent es un agente IA de codigo abierto creado por Nous Research. Se conecta a proveedores de LLM (OpenRouter, Anthropic, Ollama y otros), ejecuta comandos de terminal, navega la web y recuerda lo que aprende entre sesiones. Almacena memorias persistentes, construye habilidades reutilizables a partir de tareas completadas y soporta pasarelas de mensajeria para que puedas hablarle desde Telegram, Discord, Slack, WhatsApp o Signal.
Autoalojar significa que tus prompts y datos se quedan en tu servidor. Ninguna plataforma de agentes de terceros ve tus conversaciones. El agente corre continuamente, construye contexto con el tiempo y solo cuesta el hosting del VPS mas las llamadas API al LLM que hagas. En un VPS de $5-10/mes con OpenRouter, la mayoria de desarrolladores gastan menos de $20/mes en total.
Que necesita Hermes Agent para funcionar en un VPS?
Hermes Agent necesita un servidor Linux con al menos 2 GB de RAM, 10 GB de espacio libre en disco y Git instalado. Docker es necesario si quieres ejecucion aislada de terminal (y la quieres). El instalador gestiona Python 3.11+ y Node.js automaticamente.
| Requisito | Minimo | Recomendado |
|---|---|---|
| OS | Ubuntu 22.04 / Debian 12 | Ubuntu 24.04 |
| RAM | 2 GB | 4 GB+ |
| Disco | 10 GB libres | 20 GB+ (imagenes Docker) |
| CPU | 1 vCPU | 2+ vCPU |
| Prerequisitos | Git | Git, Docker |
| Red | HTTPS saliente | HTTPS saliente |
El agente en si es ligero. La mayor parte de la RAM va a los contenedores Docker al ejecutar comandos. Si planeas ejecutar varias sesiones simultaneas a traves de la pasarela de mensajeria, apunta a 4 GB o mas.
Prerequisitos
Antes de instalar Hermes Agent, configura un usuario no-root y un firewall basico. Si ya tienes un VPS securizado, salta a la seccion de instalacion.
Crear un usuario dedicado
Conectate a tu servidor por SSH como root y crea un usuario para Hermes:
adduser hermes --disabled-password --gecos ""
usermod -aG sudo hermes
Dale sudo sin contrasena a este usuario (necesario para Docker y gestion de servicios):
echo "hermes ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/hermes
chmod 440 /etc/sudoers.d/hermes
Copia tu clave SSH para poder iniciar sesion como este usuario:
mkdir -p /home/hermes/.ssh
cp ~/.ssh/authorized_keys /home/hermes/.ssh/
chown -R hermes:hermes /home/hermes/.ssh
chmod 700 /home/hermes/.ssh
chmod 600 /home/hermes/.ssh/authorized_keys
A partir de ahora, trabaja como el usuario hermes:
su - hermes
Instalar Docker
Hermes Agent usa Docker para aislar los comandos de terminal. Instalalo desde el repositorio oficial de Docker:
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin
Anade el usuario hermes al grupo docker para que pueda ejecutar contenedores sin sudo:
sudo usermod -aG docker hermes
newgrp docker
Verifica que Docker funciona:
docker run --rm hello-world
Deberias ver "Hello from Docker!" en la salida. Esto confirma que Docker puede descargar imagenes y ejecutar contenedores.
Configurar el firewall
Instala UFW y configuralo para permitir solo SSH y bloquear todo lo demas por defecto:
sudo apt-get install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw --force enable
Verifica las reglas:
sudo ufw status verbose
La salida deberia mostrar SSH permitido y todo el trafico entrante denegado. La pasarela de Hermes hace conexiones salientes a la API de Telegram, asi que no necesitas abrir puertos entrantes para la mensajeria.
Como instalar Hermes Agent en Ubuntu?
Hermes Agent se instala con un solo comando que gestiona Python, Node.js y todas las dependencias. Ejecutalo como el usuario hermes, no como root.
Primero, verifica el script del instalador antes de pasarlo a bash. Descargalo, revisalo y luego ejecutalo:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh -o /tmp/hermes-install.sh
less /tmp/hermes-install.sh
Revisa el script. Instala Python 3.11+ via uv, Node.js y el CLI hermes. Cuando estes satisfecho:
bash /tmp/hermes-install.sh
Recarga tu shell para tener disponible el comando hermes:
source ~/.bashrc
Verifica la instalacion:
hermes --version
Deberias ver la version e informacion del entorno:
Hermes Agent v0.4.0 (2026.3.18)
Project: /home/hermes/.hermes/hermes-agent
Python: 3.11.15
...
Ejecuta la herramienta de diagnostico para buscar dependencias faltantes:
hermes doctor
Busca marcas verdes en la salida. Los avisos sobre claves API sin configurar (OpenRouter, Browserbase, etc.) son esperables en este punto. Vas a configurar tu proveedor de LLM a continuacion. Los elementos en rojo sobre Python, Git o Docker necesitan solucion antes de continuar.
Como configurar el proveedor de LLM?
Hermes Agent necesita un proveedor de LLM para funcionar. No incluye un modelo. Tu lo conectas a una API de proveedor y pagas por token. OpenRouter te da acceso a mas de 200 modelos con una sola clave API y es la forma mas rapida de empezar.
Opcion 1: OpenRouter (recomendado para empezar)
Crea una cuenta en openrouter.ai y genera una clave API.
El instalador creo ~/.hermes/.env con una plantilla completa. Primero, restringe sus permisos:
chmod 600 ~/.hermes/.env
Abre el archivo y pon tu clave API en la linea OPENROUTER_API_KEY=:
nano ~/.hermes/.env
Busca la linea OPENROUTER_API_KEY= y anade tu clave despues del signo =. Guarda y sal (Ctrl+X, luego Y, luego Enter).
Establece el modelo por defecto:
hermes config set model.provider openrouter
hermes config set model.default anthropic/claude-sonnet-4
Verifica que el archivo no sea legible por otros usuarios:
ls -la ~/.hermes/.env
Los permisos deberian mostrar -rw------- (600). Solo el usuario hermes puede leer este archivo.
Opcion 2: Endpoint personalizado compatible con OpenAI
Si ejecutas tu propio servidor de inferencia (Ollama, vLLM, llama.cpp) o usas otro proveedor:
echo 'OPENAI_BASE_URL=http://localhost:11434/v1' >> ~/.hermes/.env
echo 'OPENAI_API_KEY=ollama' >> ~/.hermes/.env
echo 'LLM_MODEL=llama3.1:70b' >> ~/.hermes/.env
Comparacion de proveedores de LLM
| Proveedor | Variable de entorno | Coste | Notas |
|---|---|---|---|
| OpenRouter | OPENROUTER_API_KEY |
Por token, varia segun modelo | 200+ modelos, una sola clave |
| Anthropic | ANTHROPIC_API_KEY |
Por token | Acceso directo a Claude |
| Ollama (local) | OPENAI_BASE_URL + OPENAI_API_KEY |
Gratis (autoalojado) | Necesita VPS con GPU para buena velocidad |
| vLLM | OPENAI_BASE_URL + OPENAI_API_KEY |
Gratis (autoalojado) | GPU necesaria |
Prueba que la conexion al LLM funciona:
hermes -m "What is 2+2? Reply with just the number."
Si obtienes una respuesta, el proveedor esta configurado correctamente. Si ves un error de autenticacion, revisa tu clave API en ~/.hermes/.env.
Como aislar Hermes Agent con Docker?
Por defecto, Hermes Agent ejecuta los comandos de terminal directamente en el host. En un VPS, esto es un riesgo de seguridad. Si el LLM genera un comando destructivo, se ejecuta en tu servidor real. El sandboxing con Docker aisla toda la ejecucion de comandos dentro de un contenedor.
Establece Docker como backend de terminal:
hermes config set terminal.backend docker
Configura la imagen Docker y los limites de recursos en ~/.hermes/config.yaml:
hermes config set terminal.docker_image "nikolaik/python-nodejs:python3.11-nodejs20"
hermes config set terminal.container_cpu 1
hermes config set terminal.container_memory 2048
hermes config set terminal.container_persistent true
Que hacen estos ajustes:
docker_image: La imagen base para el sandbox. Esta incluye Python y Node.js, cubriendo la mayoria de tareas de desarrollo.container_cpu: Limita el contenedor a 1 nucleo de CPU. Evita que un proceso desbocado consuma todos los recursos del VPS.container_memory: Limite de 2048 MB de RAM para el contenedor. Aumentalo si trabajas con grandes volúmenes de datos.container_persistent: Mantiene el contenedor entre comandos. Ejecucion mas rapida porque se salta el arranque del contenedor cada vez.
Verifica que el backend esta configurado:
hermes config
En la seccion Terminal, deberias ver Backend: docker.
Comparacion de backends de terminal
| Backend | Seguridad | Velocidad | Caso de uso |
|---|---|---|---|
local |
Ninguna. Comandos en el host | Mas rapido | Solo desarrollo local. Nunca en un VPS |
docker |
Aislamiento por contenedor | Pequeno overhead de arranque | Despliegues en VPS (recomendado) |
ssh |
Aislamiento por red | Latencia de red | Ejecutar en otro servidor |
Configurar el modo de aprobacion
Hermes Agent tiene un sistema de aprobacion integrado que pregunta antes de ejecutar comandos potencialmente peligrosos. En un servidor, mantenlo activado:
hermes config set approval_mode ask
Los tres modos:
- ask: Te pregunta antes de cualquier comando que modifique archivos, instale paquetes o toque la red. Usa este.
- smart: Un modelo de IA evalua el riesgo y solo pregunta para comandos genuinamente peligrosos. Mas rapido, pero depende del criterio de la IA.
- off: Sin controles. Cada comando se ejecuta inmediatamente. No uses esto en un servidor.
Como conectar Hermes Agent a Telegram?
La pasarela de mensajeria te permite chatear con Hermes desde tu telefono. Telegram es la configuracion mas habitual. La pasarela hace conexiones salientes a la API de Telegram, asi que no necesitas abrir ningun puerto entrante en tu firewall.
Paso 1: Crear un bot de Telegram
Abre Telegram y enviale un mensaje a @BotFather. Envia estos comandos:
/newbot- Introduce un nombre para tu bot (por ejemplo, "My Hermes Agent")
- Introduce un nombre de usuario (debe terminar en
bot, por ejemplo,myhermes_agent_bot)
BotFather responde con un token de bot. Se ve como 7123456789:AAHx.... Copialo.
Paso 2: Obtener tu ID de usuario de Telegram
Enviale un mensaje a @userinfobot en Telegram. Te responde con tu ID de usuario numerico. Copia este numero.
Paso 3: Configurar la pasarela
Anade el token del bot y tu ID de usuario al archivo de entorno:
echo 'TELEGRAM_BOT_TOKEN=7123456789:AAHxYourTokenHere' >> ~/.hermes/.env
echo 'TELEGRAM_ALLOWED_USERS=your_numeric_user_id' >> ~/.hermes/.env
La variable TELEGRAM_ALLOWED_USERS es un control de seguridad. Solo los IDs de usuario listados aqui pueden interactuar con tu bot. Sin ella, cualquiera que encuentre tu bot puede enviarle comandos. Separa multiples IDs con comas.
Paso 4: Probar la pasarela
Inicia la pasarela en primer plano para verificar que conecta:
hermes gateway
Envia un mensaje a tu bot en Telegram. Deberias ver el mensaje aparecer en la terminal y una respuesta enviada de vuelta. Pulsa Ctrl+C para detener la pasarela una vez que hayas confirmado que funciona.
Si el bot no responde, comprueba:
- El token del bot es correcto en
~/.hermes/.env - Tu ID de usuario esta en
TELEGRAM_ALLOWED_USERS - El VPS puede alcanzar
api.telegram.orgen el puerto 443 (HTTPS saliente)
Otras plataformas soportadas incluyen Discord, Slack, WhatsApp, Signal y Email. Ejecuta hermes gateway setup para un asistente interactivo que configura cualquiera de ellas.
Como ejecutar Hermes Agent como servicio systemd?
Ejecutar hermes gateway en una sesion de terminal significa que se detiene cuando te desconectas. Un servicio de usuario systemd mantiene la pasarela corriendo despues del logout y la reinicia automaticamente si se cae o el servidor se reinicia.
Instalar el servicio
Hermes proporciona un comando integrado para instalar la pasarela como servicio de usuario systemd:
hermes gateway install
Esto crea un archivo de servicio en ~/.config/systemd/user/hermes-gateway.service y habilita lingering automaticamente. Lingering mantiene los servicios de usuario corriendo despues de que cierres sesion SSH. Sin el, systemd mataria la pasarela cuando tu sesion termine.
Inicia el servicio y habilitalo para el arranque:
systemctl --user enable --now hermes-gateway
El enable hace que arranque con el sistema. El flag --now lo inicia inmediatamente. Usa siempre ambos juntos.
Verifica que el servicio esta corriendo:
systemctl --user status hermes-gateway
Fijate bien: busca Active: active (running) en la salida. Si dice failed, revisa los logs.
Revisar los logs
Ver los logs de la pasarela en tiempo real:
journalctl --user -u hermes-gateway -f
Pulsa Ctrl+C para dejar de seguirlos. Los logs de la pasarela muestran cada mensaje entrante, llamada al LLM y ejecucion de herramientas.
Establecer el directorio de trabajo
Por defecto, la pasarela usa el directorio home como workspace. Establece un directorio de proyecto dedicado:
echo 'MESSAGING_CWD=/home/hermes/projects' >> ~/.hermes/.env
mkdir -p /home/hermes/projects
Reinicia el servicio para aplicar los cambios:
systemctl --user restart hermes-gateway
Como hacer backup de los datos de Hermes Agent?
Hermes almacena todo su estado en ~/.hermes/. Este directorio contiene memorias, habilidades aprendidas, historial de sesiones, configuracion y trabajos cron. Perderlo significa que el agente olvida todo.
Rutas clave:
| Ruta | Contenido |
|---|---|
~/.hermes/config.yaml |
Configuracion |
~/.hermes/.env |
Claves API y secretos |
~/.hermes/memories/ |
Memorias persistentes del agente |
~/.hermes/skills/ |
Habilidades reutilizables creadas por el agente |
~/.hermes/sessions/ |
Historial de sesiones de la pasarela |
~/.hermes/cron/ |
Trabajos programados |
~/.hermes/SOUL.md |
Identidad/persona del agente |
Crea un script de backup:
cat > /home/hermes/backup-hermes.sh << 'SCRIPT'
#!/bin/bash
BACKUP_DIR="/home/hermes/backups"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
mkdir -p "$BACKUP_DIR"
tar czf "$BACKUP_DIR/hermes-$TIMESTAMP.tar.gz" \
--exclude='*.log' \
-C /home/hermes .hermes/
# Keep only the last 7 backups
ls -t "$BACKUP_DIR"/hermes-*.tar.gz | tail -n +8 | xargs -r rm
echo "Backup saved: $BACKUP_DIR/hermes-$TIMESTAMP.tar.gz"
SCRIPT
chmod 700 /home/hermes/backup-hermes.sh
Ejecutalo diariamente con un trabajo cron:
(crontab -l 2>/dev/null; echo "0 3 * * * /home/hermes/backup-hermes.sh") | crontab -
Verifica la entrada cron:
crontab -l
Deberias ver el trabajo de backup programado a las 03:00 diariamente. El script conserva 7 dias de backups y elimina los mas antiguos.
Para backups fuera del servidor, haz rsync del directorio de backups a otra maquina o almacenamiento de objetos. Mantener los backups solo en el mismo VPS no protege contra fallo de disco.
Como actualizar Hermes Agent?
Hermes Agent incluye un comando de actualizacion integrado. Antes de actualizar, haz backup de tus datos.
/home/hermes/backup-hermes.sh
hermes update
Verifica la nueva version:
hermes --version
Comprueba si hay cambios de configuracion necesarios despues de la actualizacion:
hermes config migrate
hermes doctor
config migrate anade nuevas opciones de configuracion con sus valores por defecto. hermes doctor verifica que todo sigue funcionando despues de la actualizacion.
Reinicia el servicio de la pasarela para ejecutar la nueva version:
systemctl --user restart hermes-gateway
systemctl --user status hermes-gateway
Si algo falla despues de una actualizacion, restaura desde backup:
systemctl --user stop hermes-gateway
tar xzf /home/hermes/backups/hermes-YYYYMMDD-HHMMSS.tar.gz -C /home/hermes/
systemctl --user start hermes-gateway
Checklist de hardening de seguridad
Un agente IA alojado en un VPS que ejecuta comandos de terminal requiere atencion a la seguridad. Aqui tienes un resumen de lo que esta guia ya configuro y algunos pasos adicionales.
Ya configurado en esta guia:
- Usuario no-root (
hermes) con directorio home dedicado - Sandboxing Docker para toda la ejecucion de comandos de terminal
- Firewall UFW denegando todo el trafico entrante excepto SSH
- Claves API en
~/.hermes/.envcon permisos600 TELEGRAM_ALLOWED_USERSrestringiendo el acceso al bot a tu ID de usuarioapproval_mode: askrequiriendo confirmacion para comandos peligrosos
Hardening adicional:
Deshabilita el backend de terminal local por completo verificando tu configuracion:
hermes config
En la seccion Terminal, confirma que Backend dice docker, no local.
Establece limites de recursos en los contenedores Docker para evitar que un proceso desbocado consuma todos los recursos del servidor. Esto se configuro anteriormente con container_cpu y container_memory.
Revisa las habilidades aprendidas del agente periodicamente:
ls -la ~/.hermes/skills/
Las habilidades son scripts que el agente escribe y reutiliza. Auditalas como harias con cualquier codigo ejecutandose en tu servidor.
Monitoriza los logs de la pasarela en busca de usuarios inesperados o actividad inusual:
journalctl --user -u hermes-gateway --since "1 hour ago" --no-pager
Solucion de problemas
La pasarela no arranca:
journalctl --user -u hermes-gateway -n 50 --no-pager
Causas comunes: token de bot invalido, clave API faltante, Docker no esta corriendo. Verifica que Docker esta activo con systemctl status docker.
El bot de Telegram no responde:
Verifica que el token del bot y los usuarios permitidos estan configurados:
grep TELEGRAM ~/.hermes/.env
Prueba la conectividad saliente:
curl -s https://api.telegram.org/bot<YOUR_TOKEN>/getMe
Una respuesta valida con la informacion de tu bot confirma que el token y la red funcionan.
Permiso denegado de Docker:
groups
La salida debe incluir docker. Si no, vuelve a ejecutar sudo usermod -aG docker hermes y cierra/abre sesion.
Comando hermes no encontrado despues de instalar:
source ~/.bashrc
Si sigue sin aparecer, comprueba si ~/.local/bin esta en tu PATH:
echo $PATH | tr ':' '\n' | grep local
Alto uso de memoria:
Revisa el consumo de recursos de los contenedores Docker:
docker stats --no-stream
Reduce el ajuste container_memory si los contenedores usan demasiada RAM.
Desglose de costes
Autoalojar Hermes Agent en un VPS cuesta el servidor mas el uso de la API del LLM. Aqui tienes una estimacion realista para un desarrollador individual.
| Concepto | Coste mensual |
|---|---|
| VPS (2 vCPU, 4 GB RAM) | $5-10 |
| API OpenRouter (uso moderado, ~500K tokens/dia) | $5-15 |
| Overhead de Docker | Incluido en el VPS |
| Pasarela Telegram | Gratis |
| Total | $10-25/mes |
Las suscripciones a asistentes IA gestionados cuestan $20-200/mes. Autoalojar cuesta menos y mantiene tus datos en tu propio servidor.
Ejecutar Claude Code en un VPS
Copyright 2026 Virtua.Cloud. Todos los derechos reservados. Este contenido es una obra original del equipo de Virtua.Cloud. La reproduccion, republicacion o redistribucion sin permiso escrito esta prohibida.
¿Listo para probarlo?
Despliega tu propio servidor en segundos. Linux, Windows o FreeBSD.
Ver planes VPS