Comment faire fonctionner Hermes Agent 24 h/24 sur un serveur
MarkdownComment faire fonctionner Hermes Agent 24 h/24 sur un serveur : installation sur un VPS sans navigateur, exécution de la passerelle comme service système, démarrage automatique après un redémarrage, linger et Docker.
Lire l’article complet
Après avoir installé Hermes Agent sur un ordinateur portable, une question se pose : qui répondra sur Telegram et préparera les récapitulatifs du matin quand l’ordinateur sera fermé ? À votre bureau, l’agent reste disponible uniquement tant que l’ordinateur est allumé. Pour que le bot soit toujours en ligne et que les tâches planifiées s’exécutent automatiquement, vous devez déplacer l’agent sur un serveur.
Voici comment installer Hermes sur un serveur Linux ordinaire, transformer la passerelle en un service qui fonctionne en continu et démarre automatiquement après un redémarrage, et restreindre l’accès afin que des inconnus ne puissent pas accéder au terminal. Ce guide s’appuie sur la documentation officielle.
Si vous n’avez pas encore installé Hermes, commencez par la présentation séparée de ce qu’est cet agent et comment l’installer. Ce guide suppose qu’il fonctionne déjà sur votre propre ordinateur et traite uniquement de son transfert vers un serveur.
Des informations sur l’utilisation d’Ailoot sont disponibles dans la documentation.
Pourquoi déplacer Hermes Agent d’un ordinateur portable vers un serveur ?
L’essentiel
Un ordinateur personnel fonctionne tant que vous êtes à proximité et qu’il est allumé. Pour un fonctionnement 24 h/24, il vous faut un serveur : le bot Telegram répond quand votre ordinateur est éteint, et les tâches planifiées s’exécutent automatiquement. Vous avez seulement besoin d’un serveur pour cela ; un ordinateur portable suffit pour une utilisation ordinaire de l’agent.
Sur un ordinateur portable, Hermes ne fonctionne que si l’écran est ouvert et que vous êtes à proximité. Fermez-le, et le bot se tait ; le récapitulatif du matin n’arrive jamais. Ce n’est pas adapté à une tâche comme « répondre aux gens dans une messagerie et s’occuper de certaines choses selon un calendrier ».
C’est ce qui distingue un serveur : il ne se met jamais en veille et ne dépend de rien d’autre. Vous y installez le même Hermes, qui fonctionne alors sans vous : il répond sur Telegram à trois heures du matin, rassemble chaque matin des informations sur vos sujets et conserve les sessions entre les exécutions.
Le transfert est pertinent si vous avez une tâche récurrente pour l’agent : un bot pour vous-même ou votre équipe, des récapitulatifs matinaux, des réponses automatiques ou un travail régulier sur des documents. Si vous essayez simplement Hermes pour un projet précis et que vous êtes à proximité, vous n’avez pas encore besoin d’un serveur ; ce serait une étape supplémentaire.
Que préparer avant d’installer Hermes sur un VPS ?
L’essentiel
Il vous faut un serveur Linux avec accès SSH (l’équipe officielle effectue ses tests sur une nouvelle installation d’Ubuntu), un modèle choisi à l’avance et la compréhension que l’agent n’a généralement pas besoin d’un navigateur sur un serveur. Pour un fonctionnement sans surveillance, le moyen le plus pratique d’accéder à un modèle est Nous Portal : l’authentification OAuth se renouvelle automatiquement, de sorte qu’un jeton expiré ne provoquera pas de panne pendant la nuit.
Rassemblez trois éléments avant l’installation.
Le serveur. Un VPS Linux ordinaire fera l’affaire. La documentation accorde son niveau de support prioritaire à Linux et WSL2, et les tests sont effectués sur la dernière version d’Ubuntu. Si le système dispose de glibc, de systemd et d’une structure de répertoires familière, Hermes s’installera correctement. C’est important sur un serveur, car toutes les étapes de démarrage automatique ci-dessous reposent sur systemd, inclus par défaut dans Ubuntu et Debian.
L’accès SSH. Vous vous connectez au serveur depuis un terminal via SSH ; vous n’y utiliserez pas de souris. Toutes les commandes ci-dessous s’exécutent dans cette session SSH. Si vous faites du vibe coding et que le terminal ne vous est pas encore familier, ne vous inquiétez pas : il n’y a que quelques commandes, et vous pouvez copier chacune d’elles en entier.
Un modèle choisi. L’agent ne réfléchit pas de lui-même ; il appelle un modèle. Pour un serveur qui fonctionne sans vous, il est important que l’accès au modèle n’expire pas. L’option la plus simple est un abonnement Nous Portal avec hermes setup --portal : la connexion utilise OAuth, et le jeton se renouvelle automatiquement. Vos propres clés API fonctionnent aussi, mais veillez alors à ce que le compte soit approvisionné : un agent sans interface graphique et avec un solde nul se taira tout simplement. Le modèle doit avoir une fenêtre de contexte d’au moins 64 000 tokens, ou Hermes refusera de démarrer avec ce modèle. Tous les modèles cloud de la liste satisfont à cette exigence.
Remarque
La documentation officielle ne donne pas de chiffres précis pour choisir un VPS ou déterminer les ressources minimales ; aucun chiffre exact n’est donc indiqué ici. D’après l’expérience décrite, une machine modeste suffit pour une passerelle avec un bot et un calendrier, car les calculs lourds ont lieu du côté du modèle. Le serveur lui-même est très peu sollicité. L’automatisation du navigateur est l’élément le plus gourmand, mais elle est généralement inutile sur un serveur (nous y revenons juste après).
Comment installer Hermes Agent sur un serveur avec une seule commande ?
L’essentiel
Connectez-vous au serveur via SSH et lancez le programme d’installation avec l’option permettant d’ignorer le navigateur sur un serveur : curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-browser. Redémarrez ensuite le shell du terminal et choisissez un modèle avec hermes setup --portal. Vérifiez l’installation avec hermes doctor.
L’installation sur un serveur est presque identique à celle sur un ordinateur portable, à une différence près : l’agent n’a généralement pas besoin d’un navigateur. L’automatisation du navigateur entraîne également l’installation de Chromium, qui est volumineux. C’est pourquoi vous utilisez l’option --skip-browser.
Connectez-vous au serveur via SSH
ssh root@your-server-addressExécutez toutes les commandes suivantes dans cette session, directement sur le serveur.
Lancez le programme d’installation sans le navigateur
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-browserLe script télécharge l’environnement nécessaire et installe la commande
hermes. L’option--skip-browserignore l’installation de l’automatisation du navigateur ; sur un serveur sans interface graphique, elle ne ferait qu’occuper de l’espace. Si vous avez besoin d’un navigateur plus tard, vous pourrez l’installer séparément.Redémarrez le shell et choisissez un modèle
source ~/.bashrc hermes setup --portalLa première ligne récupère le nouveau
PATHafin que la commandehermessoit trouvée. La deuxième ouvre la connexion à Nous Portal : confirmez la connexion, et l’agent obtient un modèle et des services sans clés distinctes pour chacun.Vérifiez l’installation
hermes doctorLa commande indique ce qui est installé, ce qui manque et comment y remédier. Les marques vertes signifient que tout est en place.
Avant d’ajouter un bot et un calendrier, assurez-vous qu’une conversation simple fonctionne directement sur le serveur : lancez hermes et donnez-lui une tâche simple dont la réponse peut être vérifiée. La documentation recommande explicitement de ne pas accumuler les fonctionnalités avant qu’une conversation ordinaire ne fonctionne — un bon conseil.
Comment faire fonctionner Hermes 24 h/24 ?
L’essentiel
Configurez d’abord la passerelle avec hermes gateway setup et connectez Telegram. Transformez ensuite la passerelle en service avec une seule commande : hermes gateway install installe un service utilisateur, tandis que sudo hermes gateway install --system installe un service système qui démarre au démarrage du serveur. Pour le service utilisateur, utilisez hermes gateway start, stop et status. Pour le service système VPS, gardez --system et les privilèges requis dans chaque contrôle ou changement.
La passerelle est un processus Hermes unique en arrière-plan qui maintient les connexions à toutes les messageries, gère les sessions et exécute les tâches planifiées. Tout le fonctionnement 24 h/24 repose sur elle. L’objectif est de faire démarrer ce processus automatiquement et de le maintenir en fonctionnement.
Configurez d’abord la passerelle et connectez une messagerie :
hermes gateway setup
L’assistant de configuration vous guide parmi les plateformes et vous aide à saisir le jeton du bot et la liste d’accès. Les étapes pour connecter Telegram (créer un bot avec BotFather, trouver votre ID et saisir le jeton) sont décrites dans le guide principal d’installation ; je ne les répéterai pas ici.
Vient ensuite le piège que l’on oublie le plus souvent. Si vous lancez simplement hermes gateway, le processus ne fonctionnera que tant que la session SSH reste ouverte. Fermez le terminal, et la passerelle s’arrête. Pour la faire fonctionner en continu, vous devez la confier au système. Une commande suffit :
hermes gateway install
Elle installe la passerelle comme service : sous Linux, comme service systemd utilisateur ; sous macOS, via launchd. Le système surveille le processus et le relance en cas de plantage.
Sur un serveur, vous aurez plus souvent besoin de la seconde option : un service système qui démarre au démarrage de la machine, avant la connexion de tout utilisateur :
sudo hermes gateway install --system
C’est exactement ce qu’il vous faut pour un VPS : le serveur redémarre, le service démarre automatiquement et le bot est de nouveau en ligne. Gérez-le avec ces commandes simples :
hermes gateway start # start
hermes gateway stop # stop
hermes gateway status # check status
Pour un service système, ajoutez sudo et l’option --system à ces commandes. Sans ces éléments, elles cibleront le service utilisateur au lieu de celui qui démarre au démarrage :
sudo hermes gateway start --system
sudo hermes gateway stop --system
sudo hermes gateway status --system
Pourquoi le mode linger est-il nécessaire, et que se passe-t-il sans lui ?
L’essentiel
Si vous avez installé la passerelle comme service utilisateur (sans --system), systemd l’arrête dès que vous quittez SSH et ne la démarre pas au démarrage de la machine. Corrigez cela avec une commande : sudo loginctl enable-linger username. Le service fonctionne alors indépendamment de vos connexions et déconnexions.
C’est le problème le plus courant : vous avez installé le service, mais le bot se tait quand même la nuit. La raison tient au fonctionnement des services utilisateur sous Linux.
Un service systemd utilisateur est lié par défaut à votre session. Vous vous connectez via SSH et votre gestionnaire utilisateur démarre ; le service fonctionne. Vous vous déconnectez, et le système considère l’utilisateur comme inactif ; il arrête donc les services de cet utilisateur, y compris votre passerelle. Pour un serveur auquel vous vous connectez puis vous vous déconnectez, c’est un échec : le bot n’est en ligne que pendant votre session SSH.
Vous pouvez corriger cela avec le mode linger, qui permet au système de maintenir le gestionnaire utilisateur en fonctionnement même lorsque cet utilisateur n’est pas connecté :
sudo loginctl enable-linger username
Après cette commande, le service utilisateur fonctionne de manière autonome et démarre au démarrage du serveur, sans attendre votre connexion. Sans linger, le comportement initial revient : la passerelle s’arrête quand vous quittez SSH et ne démarre pas au démarrage. La documentation l’indique explicitement.
Attention
Cela ne s’applique pas au service système (installé avec sudo hermes gateway install --system) : il fonctionne déjà au niveau de la machine et démarre au démarrage. Le mode linger est uniquement nécessaire pour un service utilisateur. Choisissez l’une des deux options : un service système, ou un service utilisateur avec linger.
Comment faire fonctionner Hermes sur un serveur dans Docker avec des redémarrages automatiques ?
L’essentiel
Si vous préférez Docker, vous pouvez faire fonctionner Hermes comme passerelle persistante dans un conteneur : docker run -d --name hermes --restart unless-stopped -v ~/.hermes:/opt/data -p 8642:8642 nousresearch/hermes-agent gateway run. L’option --restart unless-stopped relance le conteneur après un redémarrage du serveur, et dans l’image le processus de la passerelle est également relancé en cas de plantage.
Docker est une autre façon de faire fonctionner l’agent sur un serveur, en particulier si vous connaissez déjà les conteneurs ou si vous souhaitez isoler l’agent du système principal. Configurez-le une fois avec docker run ... setup, puis démarrez le conteneur en arrière-plan :
docker run -d \
--name hermes \
--restart unless-stopped \
-v ~/.hermes:/opt/data \
-p 8642:8642 \
nousresearch/hermes-agent gateway run
Voici le rôle des lignes responsables du fonctionnement 24 h/24 :
-d— le conteneur fonctionne en arrière-plan et ne garde pas votre terminal ouvert.--restart unless-stopped— Docker relance le conteneur après un redémarrage du serveur ou un plantage. Il ne le relance pas uniquement si vous l’avez arrêté manuellement.-v ~/.hermes:/opt/data— les paramètres, les clés, les sessions et la mémoire sont stockés sur le serveur, à l’extérieur du conteneur, et sont conservés lors de sa recréation.
L’image ajoute une autre protection : le processus de la passerelle s’exécute sous le superviseur s6. Si la passerelle plante, elle est relancée en quelques secondes sans que le conteneur lui-même soit perdu. C’est une double protection : Docker maintient le conteneur en fonctionnement depuis l’extérieur, tandis que s6 surveille le processus à l’intérieur.
Gardez à l’esprit une différence de l’approche Docker : ces installations ne se mettent pas à jour avec la commande hermes update. Pour mettre à jour la version Docker, remplacez l’image par une nouvelle — téléchargez la dernière et recréez le conteneur.
Comment vérifier que tout fonctionne et résistera à un redémarrage ?
L’essentiel
Vérifiez l’état du service avec systemctl et suivez le journal en direct. Vient ensuite le test serveur principal : redémarrez la machine et assurez-vous que le bot se reconnecte tout seul. Les sessions et les réponses de Hermes survivent à un redémarrage ; une réponse inachevée sera envoyée après le rétablissement du service.
Pour un service utilisateur, vérifiez son état et ses journaux ainsi :
hermes gateway status
journalctl --user -u hermes-gateway -f
Pour le service système recommandé sur VPS, utilisez plutôt cette portée :
sudo hermes gateway status --system
sudo journalctl -u hermes-gateway -f
La première commande contrôle le service sélectionné ; la seconde suit son journal. Ces noms correspondent au ~/.hermes par défaut. Un autre Hermes home peut avoir un suffixe : relevez le nom exact dans le statut. Ne surveillez pas un service utilisateur pour tester une installation système. Les journaux de Hermes se trouvent dans ~/.hermes/logs/, et les secrets y sont automatiquement masqués ; vous pouvez donc les envoyer sans risque à l’assistance.
Redémarrez maintenant le serveur et assurez-vous que l’agent redémarre tout seul. C’est le principal test serveur, et c’est généralement celui qu’on oublie :
sudo reboot
Quand le serveur est de nouveau joignable, reconnectez-vous via SSH. Pour l’installation système, vérifiez sudo hermes gateway status --system et le journal système ; pour l’installation utilisateur avec linger, hermes gateway status et le journal utilisateur. Envoyez ensuite un message au bot Telegram. S’il répond sans intervention de votre part, le démarrage automatique est correctement configuré. C’est pour cela que vous avez fait tout ça.
Vous n’avez pas à vous inquiéter de perdre votre conversation. Hermes écrit les sessions sur le disque, et elles survivent au redémarrage de la passerelle. De plus, si la passerelle plante au moment où elle envoie une réponse, elle la transmettra après son rétablissement au lieu de relancer la tâche. C’est important pour un bot actif 24 h/24 : un redémarrage inattendu n’interrompra pas la conversation.
Comment sécuriser un agent avec accès au terminal sur un serveur ?
L’essentiel
Les trois principales protections : l’accès au bot est fermé par défaut (il ne répond qu’aux personnes de la liste), l’agent demande confirmation avant d’exécuter des commandes dangereuses et, pour une isolation complète, vous exécutez l’agent sur le serveur dans un bac à sable Docker. Il vaut mieux ne pas activer le mode sans confirmation (YOLO) sur un serveur.
Un agent sur un serveur est un programme qui dispose d’un accès au terminal et fonctionne sans votre supervision. Vérifiez d’abord ces trois paramètres.
Accès au bot fermé. Par défaut, la passerelle ne répond qu’aux personnes de la liste d’accès ou à celles qui ont terminé une association par code dans un message direct. C’est le bon comportement pour un bot avec accès au terminal : une personne inconnue qui lui écrit ne peut rien faire. La liste est définie à l’aide d’identifiants numériques, par exemple pour Telegram :
TELEGRAM_ALLOWED_USERS=123456789,987654321
Confirmation pour les commandes dangereuses. Avant toute action destructrice, l’agent vous demande votre autorisation. Il existe un mode YOLO qui désactive les confirmations ; il vaut mieux ne pas l’activer sur un serveur qui fonctionne sans vous. Les confirmations servent précisément à éviter qu’une action irréversible se produise à votre insu.
Un bac à sable pour une isolation complète. Si vous voulez que l’agent ne puisse physiquement pas voir le système principal du serveur, exécutez ses commandes dans un conteneur Docker :
hermes config set terminal.backend docker
Toutes les actions de l’agent dans le terminal s’effectuent alors dans un bac à sable isolé, sans accès au serveur en production. C’est une protection raisonnable lorsque vous laissez l’agent agir de manière autonome.
Que faire si le bot ne répond plus ou si la passerelle plante ?
L’essentiel
Vérifiez d’abord l’état du service et les journaux ; la cause est le plus souvent le jeton du bot, la liste d’accès ou le modèle. Si le processus entier se fige complètement, un service systemd dispose d’un minuteur watchdog qui redémarre la passerelle si elle ne donne plus signe de vie.
Si le bot cesse de répondre, procédez dans cet ordre. Vérifiez la portée installée : sudo hermes gateway status --system et journal système pour un service système, ou hermes gateway status et journal utilisateur pour un service utilisateur. Si la passerelle fonctionne mais que les messages ne passent pas, il s’agit presque toujours d’un problème de configuration de la plateforme : le jeton du bot est incorrect ou la personne ne figure pas sur la liste d’accès. Relancez hermes gateway setup dans le même Hermes home, puis contrôlez le service choisi avec hermes gateway status --system pour système ou hermes gateway status pour utilisateur. La réussite du setup ne prouve pas que la bonne passerelle tourne.
Si le modèle renvoie des réponses vides ou étranges, vérifiez-le avec hermes model et confirmez le fournisseur ainsi que la connexion. La séquence générale de récupération qui vous ramène de « tout est cassé » à un fonctionnement normal est : hermes doctor, hermes model, hermes setup, puis hermes gateway status --system pour une installation système ou hermes gateway status pour utilisateur.
Un dernier point pour le cas rare, mais désagréable, où tout le processus se fige sans réellement planter. Un service systemd dispose d’un minuteur watchdog : ajoutez cette ligne à ~/.hermes/config.yaml, puis réinstallez le service.
gateway:
systemd_watchdog_seconds: 120
# Service système VPS : même Hermes home que l’installation initiale
sudo hermes gateway install --system --force
sudo hermes gateway status --system
Pour un service utilisateur, régénérez seulement cette portée avec hermes gateway install --force, puis vérifiez hermes gateway status. Choisissez une portée ; n’installez pas les deux pour réparer une seule passerelle.
Ensuite, la passerelle signale régulièrement au système : « Je suis en vie », et si les signaux cessent, systemd redémarre automatiquement le processus. Cela fonctionne uniquement sous Linux avec systemd, et uniquement en cas de blocage du processus. Le minuteur watchdog n’a aucun effet sur une interruption réseau ordinaire entre le serveur et la messagerie.
Quelles autres questions pose-t-on sur Hermes Agent sur un serveur ?
L’essentiel
Réponses rapides aux questions fréquentes : faut-il impérativement un VPS, peut-on garder plusieurs bots sur une même machine, le serveur a-t-il besoin d’une interface graphique et que deviennent les tâches planifiées lorsque l’agent fonctionne sur un serveur ?
Questions fréquemment posées
Dois-je prendre un VPS, ou mon propre ordinateur fera-t-il l’affaire ?
Pour un fonctionnement 24 h/24, il vous faut une machine qui reste toujours allumée. Votre propre ordinateur ne convient que si vous êtes prêt à ne jamais l’éteindre. Un VPS est plus pratique : il est toujours allumé et ne dépend pas de vos périodes de travail ou de sommeil. Un serveur Linux ordinaire fera l’affaire — la documentation accorde son niveau de support prioritaire à Linux, et les tests sont effectués sur une nouvelle installation d’Ubuntu.
Puis-je faire fonctionner plusieurs bots sur un même serveur ?
Oui. Hermes dispose de profils, et chaque profil a son propre service. Une commande comme <profile> gateway install crée un service distinct nommé hermes-gateway-<profile> ; les services fonctionnent indépendamment. Chaque profil a ses propres paramètres, son jeton de bot et sa mémoire.
Le serveur a-t-il besoin d’un écran et d’une carte graphique ?
Non. Le serveur fonctionne sans écran, et vous le gérez depuis un terminal via SSH. L’automatisation du navigateur est généralement inutile pour un agent sur ce type de serveur ; lancez donc le programme d’installation avec l’option --skip-browser, qui supprime le seul composant volumineux nécessitant une interface graphique.
Les tâches planifiées s’exécuteront-elles pendant mon absence ?
Oui, c’est tout l’intérêt du transfert sur un serveur. La même passerelle exécute les tâches planifiées : elle vérifie le calendrier une fois par minute, lance les tâches à leur échéance, puis envoie le résultat dans la même conversation. Comme la passerelle fonctionne en continu comme un service, le calendrier s’exécute automatiquement sans intervention de votre part.
Le bot résistera-t-il à une mise à jour et au redémarrage du serveur ?
Oui. Les paramètres, les sessions et la mémoire sont stockés dans le dossier ~/.hermes et ne sont pas perdus. Après un redémarrage, le service système (ou Docker avec --restart unless-stopped) démarre la passerelle automatiquement. Une réponse inachevée sera envoyée après le redémarrage et rien ne sera perdu — toutefois, si la réponse était déjà à moitié envoyée au moment du plantage, elle peut arriver de nouveau avec un avis de doublon possible.
Sources
Découvrez Ailoot.
Plus de détails
Questions fréquentes : Comment faire fonctionner Hermes Agent 24 h/24 sur un serveur
Pourquoi la passerelle paraît-elle arrêtée après installation système ?
Un contrôle sans portée peut viser un autre service. Utilisez hermes gateway status --system et le journal système pour cette installation ; statut sans option et journal utilisateur pour un service utilisateur. Gardez le même Hermes home.
Un service système VPS a-t-il besoin de loginctl linger ?
Non. Linger concerne un service systemd utilisateur devant survivre à la déconnexion et démarrer au boot. Un service système démarre déjà au boot ; choisissez une portée et répétez contrôle de statut et réponse du bot après redémarrage.