Blog

Cómo mantener Hermes Agent funcionando en un servidor las 24 horas del día

Markdown

Cómo mantener Hermes Agent funcionando en un servidor las 24 horas del día: instalación en un VPS sin navegador, ejecución de la puerta de enlace como servicio del sistema, inicio automático tras un reinicio, linger y Docker.

Leer el artículo completo

Después de instalar Hermes Agent en un portátil, surge una pregunta: ¿quién responderá en Telegram y preparará los resúmenes matutinos cuando el portátil esté cerrado? En tu escritorio, el agente solo funciona mientras el ordenador está encendido. Para mantener el bot en línea todo el tiempo y hacer que las tareas programadas se ejecuten por sí solas, tienes que trasladar el agente a un servidor.

A continuación, se explica cómo instalar Hermes en un servidor Linux normal, convertir la puerta de enlace en un servicio que funcione de forma continua y se inicie automáticamente tras un reinicio, y restringir el acceso para que personas desconocidas no puedan entrar en el terminal. Esta guía se basa en la documentación oficial.

Si todavía no has instalado Hermes, empieza por la guía aparte sobre qué es este agente y cómo instalarlo. Esta guía presupone que ya lo tienes funcionando en tu propio equipo y solo trata de trasladarlo a un servidor.

Encontrarás información sobre el uso de Ailoot en la documentación.

¿Por qué trasladar Hermes Agent de un portátil a un servidor?

Puntos clave

Un ordenador personal funciona mientras estás cerca y está encendido. Para funcionar las 24 horas del día, necesitas un servidor: el bot de Telegram responde cuando tu ordenador está apagado, y las tareas programadas se ejecutan por sí solas. Solo necesitas un servidor para eso; un portátil basta para el trabajo habitual con el agente.

En un portátil, Hermes solo funciona mientras la tapa está abierta y estás cerca. Ciérralo y el bot se queda en silencio; el resumen matutino no llega. Eso no sirve para una tarea como «responder a la gente en un mensajero y ocuparse de cosas según un horario».

Eso es lo que distingue a un servidor: nunca duerme y no depende de nada más. Instalas en él el mismo Hermes, y funciona sin ti: responde en Telegram a las tres de la madrugada, recopila cada mañana noticias sobre tus temas y conserva las sesiones entre ejecuciones.

Trasladarlo tiene sentido cuando tienes una tarea continua para el agente: un bot para ti o para tu equipo, resúmenes matutinos, respuestas automáticas o trabajo habitual con documentos. Si solo estás probando Hermes para un proyecto concreto y estás cerca, todavía no necesitas un servidor; sería un paso adicional.

¿Qué debes preparar antes de instalar Hermes en un VPS?

Puntos clave

Necesitas un servidor Linux con acceso SSH (el equipo oficial prueba el programa en una instalación nueva de Ubuntu), un modelo elegido de antemano y tener claro que el agente normalmente no necesita un navegador en un servidor. Para funcionar sin supervisión, la forma más cómoda de acceder a un modelo es a través de Nous Portal: el inicio de sesión OAuth se renueva automáticamente, así que un token caducado no hará que todo deje de funcionar durante la noche.

Reúne tres cosas antes de instalarlo.

El servidor. Un VPS Linux normal te servirá. La documentación ofrece compatibilidad de primer nivel con Linux y WSL2, y las pruebas se realizan con la versión más reciente de Ubuntu. Si el sistema tiene glibc, systemd y una estructura de directorios habitual, Hermes se instalará correctamente. Esto importa en un servidor porque todos los pasos de inicio automático que se indican a continuación dependen de systemd, que viene incluido de forma predeterminada en Ubuntu y Debian.

Acceso SSH. Te conectas al servidor desde un terminal mediante SSH; allí no utilizarás un ratón. Todos los comandos siguientes se ejecutan en esta sesión SSH. Si haces vibe coding y el terminal todavía te resulta incómodo, no te preocupes: solo hay unos pocos comandos y puedes copiar cada uno completo.

Un modelo elegido. El agente no piensa por sí mismo: llama a un modelo. Para un servidor que funciona sin ti, es importante que el acceso al modelo no caduque. La opción más sencilla es una suscripción a Nous Portal mediante hermes setup --portal: el inicio de sesión utiliza OAuth y el token se renueva automáticamente. También puedes usar tus propias claves API, pero asegúrate de que haya saldo en la cuenta; un agente sin interfaz gráfica y con saldo cero simplemente se quedará en silencio. El modelo debe tener una ventana de contexto de al menos 64.000 tokens o Hermes se negará a iniciarse con él. Todos los modelos en la nube de la lista cumplen este requisito.

Nota

La documentación oficial no da cifras exactas para elegir un VPS ni para los recursos mínimos, así que aquí no se proporcionan cifras concretas. Según la experiencia descrita, basta con una máquina modesta para una puerta de enlace con un bot y un horario, porque el trabajo de cálculo pesado se realiza en el lado del modelo. El propio servidor apenas tiene carga. La automatización del navegador es la parte más exigente, pero normalmente no hace falta en un servidor (hablaremos de ello enseguida).

¿Cómo instalar Hermes Agent en un servidor con un solo comando?

Puntos clave

Conéctate al servidor mediante SSH y ejecuta el instalador con la opción para omitir el navegador en un servidor: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-browser. Después, reinicia el shell del terminal y elige un modelo con hermes setup --portal. Comprueba la instalación con hermes doctor.

La instalación en un servidor es casi igual que en un portátil, con una diferencia: el agente normalmente no necesita un navegador allí. Además, la automatización del navegador incorpora Chromium, que ocupa mucho espacio. Por eso se utiliza la opción --skip-browser.

  1. Conéctate al servidor mediante SSH

    ssh root@your-server-address
    

    Ejecuta todos los comandos siguientes dentro de esta sesión, en el propio servidor.

  2. Ejecuta el instalador sin el navegador

    curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-browser
    

    El script descarga el entorno necesario e instala el comando hermes. La opción --skip-browser omite la instalación de la automatización del navegador; en un servidor sin interfaz gráfica, solo ocuparía espacio. Si más adelante necesitas un navegador, puedes instalarlo por separado.

  3. Reinicia el shell y elige un modelo

    source ~/.bashrc
    hermes setup --portal
    

    La primera línea carga el nuevo PATH para que se encuentre el comando hermes. La segunda abre el inicio de sesión de Nous Portal: confirma el acceso y el agente obtiene un modelo y servicios sin claves separadas para cada uno.

  4. Comprueba la instalación

    hermes doctor
    

    El comando muestra qué está instalado, qué falta y cómo solucionarlo. Las marcas verdes indican que todo está en su sitio.

Antes de añadir un bot y un horario, asegúrate de que funcione una conversación sencilla directamente en el servidor: ejecuta hermes y asígnale una tarea simple cuya respuesta se pueda verificar. La documentación aconseja explícitamente no añadir funciones hasta que funcione una conversación normal; es una buena recomendación.

¿Cómo mantener Hermes funcionando las 24 horas del día?

Puntos clave

Primero, configura la puerta de enlace con hermes gateway setup y conecta Telegram. Después, conviértela en un servicio con un solo comando: hermes gateway install instala un servicio de usuario, mientras que sudo hermes gateway install --system instala un servicio del sistema que se inicia al arrancar el servidor. Para el servicio de usuario, usa hermes gateway start, stop y status. Para el servicio de sistema del VPS, conserva el ámbito explícito --system y los privilegios necesarios en cada comprobación y cambio.

La puerta de enlace es un único proceso de Hermes en segundo plano que mantiene las conexiones con todos los mensajeros, gestiona las sesiones y ejecuta las tareas programadas. Todo el funcionamiento las 24 horas del día gira en torno a ella. El objetivo es que este proceso se inicie por sí solo y permanezca en ejecución.

Primero configura la puerta de enlace y conecta un mensajero:

hermes gateway setup

El asistente de configuración te guía por las plataformas y te ayuda a introducir el token del bot y la lista de acceso. Los pasos para conectar Telegram (crear un bot con BotFather, averiguar tu ID e introducir el token) se explican en la guía principal de instalación; no los repetiré aquí.

A continuación viene el problema que la gente suele olvidar. Si simplemente ejecutas hermes gateway, el proceso solo seguirá en marcha mientras la sesión SSH permanezca abierta. Cierra el terminal y la puerta de enlace se detendrá. Para que funcione continuamente, tienes que ponerla bajo el control del sistema. Hay un comando para ello:

hermes gateway install

Instala la puerta de enlace como servicio: en Linux, como servicio systemd de usuario; en macOS, mediante launchd. El sistema supervisa el proceso y lo vuelve a iniciar si se bloquea.

En un servidor, lo más habitual es que necesites la segunda opción: un servicio del sistema que se inicie cuando arranca la máquina, antes de que inicie sesión cualquier usuario:

sudo hermes gateway install --system

Eso es exactamente lo que necesitas para un VPS: el servidor se reinicia, el servicio se inicia por sí solo y el bot vuelve a estar en línea. Contrólalo con estos sencillos comandos:

hermes gateway start     # start
hermes gateway stop      # stop
hermes gateway status    # check status

Para un servicio del sistema, añade sudo y la opción --system a estos comandos. Sin ellos, los comandos se dirigirán al servicio de usuario en vez de al que se inicia al arrancar:

sudo hermes gateway start --system
sudo hermes gateway stop --system
sudo hermes gateway status --system

¿Por qué hace falta linger y qué falla sin él?

Puntos clave

Si instalaste la puerta de enlace como servicio de usuario (sin --system), systemd la detiene en cuanto sales de SSH y no la inicia al arrancar. Soluciónalo con un comando: sudo loginctl enable-linger username. Después, el servicio funciona independientemente de tus inicios y cierres de sesión.

Este es el obstáculo más común: instalaste el servicio, pero el bot sigue quedándose en silencio por la noche. La razón está en cómo funcionan los servicios de usuario de Linux.

Un servicio systemd de usuario está vinculado a tu sesión de forma predeterminada. Te conectas mediante SSH y se inicia tu gestor de usuario; el servicio funciona. Cierras la sesión y el sistema considera que el usuario está inactivo, así que detiene sus servicios junto con la puerta de enlace. En un servidor al que entras y del que sales, esto supone un fallo: el bot solo está en línea mientras estás conectado por SSH.

Puedes solucionarlo con el modo linger, que permite al sistema mantener en funcionamiento el gestor de usuario aunque ese usuario no haya iniciado sesión:

sudo loginctl enable-linger username

Después de este comando, el servicio de usuario funciona por sí solo y se inicia cuando arranca el servidor, sin esperar a que inicies sesión. Sin linger, se vuelve al comportamiento original: la puerta de enlace se detiene cuando sales de SSH y no se inicia al arrancar. La documentación lo indica explícitamente.

Atención

Esto no se aplica al servicio del sistema (instalado con sudo hermes gateway install --system): ya funciona a nivel de máquina y se inicia al arrancar. Linger solo hace falta para un servicio de usuario. Elige una opción: un servicio del sistema, o un servicio de usuario con linger.

¿Cómo ejecutar Hermes en un servidor con Docker y reinicios automáticos?

Puntos clave

Si prefieres Docker, puedes mantener Hermes en funcionamiento como puerta de enlace persistente dentro de un contenedor: docker run -d --name hermes --restart unless-stopped -v ~/.hermes:/opt/data -p 8642:8642 nousresearch/hermes-agent gateway run. La opción --restart unless-stopped vuelve a iniciar el contenedor tras un reinicio del servidor, y dentro de la imagen también se reinicia el proceso de la puerta de enlace si se bloquea.

Docker es otra forma viable de mantener el agente en un servidor, especialmente si ya estás acostumbrado a los contenedores o quieres aislar el agente del sistema principal. Configúralo una vez con docker run ... setup y luego inicia el contenedor en segundo plano:

docker run -d \
  --name hermes \
  --restart unless-stopped \
  -v ~/.hermes:/opt/data \
  -p 8642:8642 \
  nousresearch/hermes-agent gateway run

Esto es lo que hacen las líneas responsables del funcionamiento las 24 horas del día:

  • -d — el contenedor funciona en segundo plano y no mantiene el terminal abierto.
  • --restart unless-stopped — Docker vuelve a iniciar el contenedor tras un reinicio del servidor o un bloqueo. Solo no lo reinicia si lo detuviste manualmente.
  • -v ~/.hermes:/opt/data — los ajustes, las claves, las sesiones y la memoria se guardan en el servidor, fuera del contenedor, y se conservan aunque lo recrees.

La imagen añade otra protección: el proceso de la puerta de enlace se ejecuta bajo el supervisor s6. Si la puerta de enlace se bloquea, se reinicia en un par de segundos sin perder el contenedor. Es una doble protección: Docker mantiene el contenedor en funcionamiento desde fuera, mientras que s6 supervisa el proceso de dentro.

Recuerda una diferencia del método con Docker: estas instalaciones no se actualizan con el comando hermes update. Para actualizar en Docker, sustituye la imagen por una nueva: descarga la última y vuelve a crear el contenedor.

¿Cómo comprobar que todo funciona y sobrevivirá a un reinicio?

Puntos clave

Comprueba el estado del servicio con systemctl y sigue el registro en directo. Después viene la prueba principal del servidor: reinicia la máquina y asegúrate de que el bot vuelve a estar en línea por sí solo. Las sesiones y las respuestas de Hermes sobreviven a un reinicio; una respuesta sin terminar se enviará cuando se recupere el servicio.

Para un servicio de usuario, comprueba el estado y los registros así:

hermes gateway status
journalctl --user -u hermes-gateway -f

Para el servicio de sistema recomendado en VPS, usa ese ámbito:

sudo hermes gateway status --system
sudo journalctl -u hermes-gateway -f

El primer comando comprueba el servicio seleccionado y el segundo sigue el diario de ese ámbito. Estos nombres corresponden a la instalación predeterminada ~/.hermes. Otras ubicaciones Hermes pueden tener una unidad con sufijo: mira el estado y usa su nombre exacto. No vigiles una unidad de usuario mientras pruebas una instalación de sistema. Los registros de Hermes están en ~/.hermes/logs/ y los secretos se ocultan automáticamente, así que es seguro enviarlos al equipo de asistencia.

Ahora reinicia el servidor y asegúrate de que el agente vuelve a iniciarse por sí solo. Esta es la prueba principal del servidor, y suele ser la que la gente olvida:

sudo reboot

Cuando el servidor vuelva a estar accesible, reconecta por SSH. Para sistema, comprueba sudo hermes gateway status --system y su diario; para usuario con linger, hermes gateway status y el diario de usuario. Después escribe al bot en Telegram. Si responde sin que tengas que intervenir, el inicio automático está bien configurado. Para eso has hecho todo esto.

No tienes que preocuparte por perder la conversación. Hermes guarda las sesiones en el disco, y estas sobreviven al reinicio de la puerta de enlace. Además, si la puerta de enlace se bloquea justo cuando envía una respuesta, la entregará tras recuperarse en vez de volver a ejecutar la tarea. Esto es importante para un bot que funciona las 24 horas del día: un reinicio inesperado no interrumpirá la conversación.

¿Cómo proteger en un servidor a un agente con acceso al terminal?

Puntos clave

Las tres protecciones principales: el acceso al bot está cerrado de forma predeterminada (solo responde a las personas de la lista), el agente pide confirmación antes de ejecutar comandos peligrosos y, para un aislamiento completo, ejecutas el agente en el servidor dentro de un entorno aislado de Docker. Es mejor no activar el modo sin confirmación (YOLO) en un servidor.

Un agente en un servidor es un programa con acceso al terminal que funciona sin tu supervisión. Comprueba primero estos tres ajustes.

Acceso al bot cerrado. De forma predeterminada, la puerta de enlace solo responde a las personas de la lista de acceso o a quienes hayan completado la vinculación mediante código en un mensaje directo. Ese es el comportamiento adecuado para un bot con acceso al terminal: una persona cualquiera que escriba al bot no podrá hacer nada. La lista se establece mediante identificadores numéricos, por ejemplo, para Telegram:

TELEGRAM_ALLOWED_USERS=123456789,987654321

Confirmación para los comandos peligrosos. Antes de hacer algo destructivo, el agente te pide permiso. Existe un modo YOLO que desactiva las confirmaciones; es mejor no activarlo en un servidor que funciona sin ti. Las confirmaciones están precisamente para impedir que ocurra algo irreversible sin que lo sepas.

Un entorno aislado para un aislamiento completo. Si quieres que el agente no pueda ver físicamente el sistema principal del servidor, ejecuta sus comandos dentro de un contenedor Docker:

hermes config set terminal.backend docker

Así, todo lo que el agente haga en el terminal ocurrirá dentro de un entorno aislado y no podrá acceder al servidor activo. Es una protección sensata cuando le das libertad al agente para actuar por su cuenta.

¿Qué debes hacer si el bot no responde o la puerta de enlace se bloquea?

Puntos clave

Primero comprueba el estado del servicio y los registros; lo más habitual es que la causa sea el token del bot, la lista de acceso o el modelo. Si todo el proceso se queda completamente congelado, un servicio systemd tiene un temporizador watchdog que reinicia la puerta de enlace si deja de dar señales de vida.

Cuando el bot deje de responder, sigue este orden. Comprueba primero el ámbito instalado: sudo hermes gateway status --system y diario de sistema para ese servicio, o hermes gateway status y diario de usuario para el servicio de usuario. Si la puerta de enlace está en funcionamiento pero los mensajes no llegan, casi siempre se trata de un problema de configuración de la plataforma: el token del bot es incorrecto o la persona no está en la lista de acceso. Repite hermes gateway setup en el mismo directorio Hermes e inspecciona el servicio elegido: hermes gateway status --system para sistema o hermes gateway status para usuario, con los privilegios necesarios. Completar setup no demuestra que funcione la pasarela correcta.

Si el modelo devuelve respuestas vacías o extrañas, compruébalo con hermes model y confirma el proveedor y el inicio de sesión. La secuencia general de recuperación que te lleva de «todo está roto» a un estado funcional es: hermes doctor, hermes model, hermes setup y después hermes gateway status --system para sistema o hermes gateway status para usuario.

Un detalle más para el caso raro, pero desagradable, en el que todo el proceso se congela sin llegar a bloquearse por completo. Un servicio systemd tiene un temporizador watchdog: añade esta línea a ~/.hermes/config.yaml y vuelve a instalar el servicio.

gateway:
  systemd_watchdog_seconds: 120
# Servicio de sistema del VPS, con el mismo directorio Hermes que la instalación original:
sudo hermes gateway install --system --force
sudo hermes gateway status --system

Para un servicio de usuario, regenera solo ese ámbito con hermes gateway install --force y comprueba hermes gateway status. Elige un ámbito; no instales ambos para reparar una sola pasarela.

Después, la puerta de enlace envía regularmente al sistema una señal que dice: «Sigo funcionando»; si las señales dejan de llegar, systemd reinicia automáticamente el proceso. Esto solo funciona en Linux con systemd y únicamente cuando el proceso se congela. El temporizador watchdog no afecta a una interrupción de red habitual entre el servidor y el mensajero.

¿Qué más suele preguntarse la gente sobre Hermes Agent en un servidor?

Puntos clave

Respuestas rápidas a preguntas frecuentes: si se necesita específicamente un VPS, si se pueden mantener varios bots en una máquina, si el servidor necesita una interfaz gráfica y qué pasa con las tareas programadas cuando el agente funciona en un servidor.

Preguntas frecuentes

¿Tengo que conseguir un VPS o me sirve mi propio ordenador?

Para funcionar las 24 horas del día, necesitas una máquina que esté siempre encendida. Tu propio ordenador solo sirve si estás dispuesto a no apagarlo nunca. Un VPS es más cómodo: siempre está encendido y no depende de si estás trabajando o durmiendo. Un servidor Linux normal es suficiente; la documentación ofrece compatibilidad de primer nivel con Linux y las pruebas se realizan en una instalación nueva de Ubuntu.

¿Puedo ejecutar varios bots en un servidor?

Sí. Hermes tiene perfiles y cada perfil dispone de su propio servicio. Un comando como <profile> gateway install crea un servicio independiente llamado hermes-gateway-<profile>, y funcionan por separado. Cada perfil tiene sus propios ajustes, token de bot y memoria.

¿El servidor necesita monitor y gráficos?

No. El servidor funciona sin pantalla y lo gestionas desde el terminal mediante SSH. La automatización del navegador suele ser innecesaria para un agente en este tipo de servidor, así que ejecuta el instalador con la opción --skip-browser; esto elimina el único componente voluminoso que requiere gráficos.

¿Se ejecutarán las tareas programadas cuando no esté?

Sí, ese es precisamente el objetivo de trasladarlo a un servidor. La misma puerta de enlace ejecuta las tareas programadas: comprueba el horario una vez por minuto y ejecuta las tareas cuando corresponde; después envía el resultado al mismo chat. Como la puerta de enlace funciona las 24 horas del día como servicio, el horario se cumple por sí solo, sin que tengas que intervenir.

¿El bot sobrevivirá a una actualización y al reinicio del servidor?

Sí. Los ajustes, las sesiones y la memoria se guardan en la carpeta ~/.hermes y no se pierden. Tras un reinicio, el servicio del sistema (o Docker con --restart unless-stopped) inicia la puerta de enlace por sí solo. Una respuesta sin terminar se enviará tras el reinicio y no se perderá nada; aunque, si la respuesta ya se había enviado a medias cuando ocurrió el bloqueo, podría llegar de nuevo con un aviso de posible duplicado.

Conoce Ailoot.

Más detalles

Preguntas sobre Hermes Agent

¿Por qué la pasarela puede parecer detenida tras instalarla como servicio del sistema?

Una comprobación sin ámbito puede mirar otro servicio. Usa hermes gateway status --system y el diario del sistema para esa instalación; reserva el estado sin ámbito y diario de usuario para servicios de usuario. Mantén siempre el mismo directorio Hermes.

¿Un servicio de sistema en VPS necesita loginctl linger?

No. Linger corresponde a un servicio systemd de usuario que debe continuar al cerrar sesión y arrancar con el equipo. Uno de sistema ya inicia al arrancar; elige un ámbito y repite estado y respuesta del bot después de reiniciar.

Todos los artículos