Autoalojar Hermes Agent en un VPS

13 min de lectura·Matthieu·hermes-agentai-agentself-hostingdockertelegramsystemd|

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:

  1. /newbot
  2. Introduce un nombre para tu bot (por ejemplo, "My Hermes Agent")
  3. 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.org en 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/.env con permisos 600
  • TELEGRAM_ALLOWED_USERS restringiendo el acceso al bot a tu ID de usuario
  • approval_mode: ask requiriendo 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
Autoalojar Hermes Agent en un VPS: Guia paso a paso