Auto-heberger Hermes Agent sur un VPS
Deployez Hermes Agent de Nous Research sur votre propre VPS avec sandboxing Docker, messagerie Telegram et persistance systemd. Chaque commande testee sur un serveur reel.
Hermes Agent tourne en local sur la plupart des machines de dev. Mais local signifie hors ligne quand votre laptop se met en veille, pas d'acces depuis le telephone, et pas d'espace de travail persistant. Le deplacer sur un VPS resout ces trois problemes : l'agent tourne 24h/24, vous lui ecrivez depuis Telegram, et il conserve sa memoire et ses competences entre les sessions.
Ce guide vous accompagne dans le deploiement de Hermes Agent sur un VPS depuis zero. Vous allez l'installer, connecter un fournisseur LLM, isoler les commandes terminal dans Docker, relier Telegram, et faire tourner le tout en service systemd qui survit aux redemarrages. Chaque commande a ete testee sur un VPS Ubuntu 24.04 avec 4 vCPU et 8 Go de RAM.
Auto-heberger des agents IA sur un VPS
Qu'est-ce que Hermes Agent et pourquoi l'auto-heberger ?
Hermes Agent est un agent IA open-source cree par Nous Research. Il se connecte a des fournisseurs LLM (OpenRouter, Anthropic, Ollama et d'autres), execute des commandes terminal, navigue sur le web et retient ce qu'il apprend entre les sessions. Il stocke des memoires persistantes, cree des competences reutilisables a partir des taches accomplies, et supporte les passerelles de messagerie pour communiquer via Telegram, Discord, Slack, WhatsApp ou Signal.
L'auto-hebergement signifie que vos prompts et vos donnees restent sur votre serveur. Aucune plateforme d'agents tierce ne voit vos conversations. L'agent tourne en continu, accumule du contexte au fil du temps, et ne coute que l'hebergement VPS plus les appels API LLM que vous effectuez. Sur un VPS a 5-10 $/mois avec OpenRouter, la plupart des developpeurs depensent moins de 20 $/mois au total.
De quoi Hermes Agent a-t-il besoin pour tourner sur un VPS ?
Hermes Agent necessite un serveur Linux avec au moins 2 Go de RAM, 10 Go d'espace disque libre et Git installe. Docker est requis si vous voulez une execution terminal isolee (et vous le voulez). L'installeur gere Python 3.11+ et Node.js automatiquement.
| Prerequis | Minimum | Recommande |
|---|---|---|
| OS | Ubuntu 22.04 / Debian 12 | Ubuntu 24.04 |
| RAM | 2 Go | 4 Go+ |
| Disque | 10 Go libres | 20 Go+ (images Docker) |
| CPU | 1 vCPU | 2+ vCPU |
| Prerequis | Git | Git, Docker |
| Reseau | HTTPS sortant | HTTPS sortant |
L'agent en lui-meme est leger. La majeure partie de la RAM est consommee par les conteneurs Docker lors de l'execution des commandes. Si vous prevoyez plusieurs sessions simultanees via la passerelle de messagerie, visez 4 Go ou plus.
Prerequis
Avant d'installer Hermes Agent, configurez un utilisateur non-root et un pare-feu de base. Si vous avez deja un VPS securise, passez directement a la section installation.
Creer un utilisateur dedie
Connectez-vous en SSH sur votre serveur en root et creez un utilisateur pour Hermes :
adduser hermes --disabled-password --gecos ""
usermod -aG sudo hermes
Donnez a cet utilisateur le sudo sans mot de passe (necessaire pour Docker et la gestion des services) :
echo "hermes ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/hermes
chmod 440 /etc/sudoers.d/hermes
Copiez votre cle SSH pour pouvoir vous connecter avec cet utilisateur :
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 maintenant, travaillez en tant qu'utilisateur hermes :
su - hermes
Installer Docker
Hermes Agent utilise Docker pour isoler les commandes terminal. Installez-le depuis le depot officiel 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
Ajoutez l'utilisateur hermes au groupe docker pour lancer des conteneurs sans sudo :
sudo usermod -aG docker hermes
newgrp docker
Verifiez que Docker fonctionne :
docker run --rm hello-world
Vous devriez voir « Hello from Docker! » dans la sortie. Cela confirme que Docker peut telecharger des images et lancer des conteneurs.
Configurer le pare-feu
Installez UFW et configurez-le pour n'autoriser que SSH et bloquer tout le reste par defaut :
sudo apt-get install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw --force enable
Verifiez les regles :
sudo ufw status verbose
La sortie devrait afficher SSH autorise et tout autre trafic entrant refuse. La passerelle Hermes etablit des connexions sortantes vers l'API Telegram, donc aucun port entrant n'a besoin d'etre ouvert pour la messagerie.
Comment installer Hermes Agent sur Ubuntu ?
Hermes Agent s'installe avec une seule commande qui gere Python, Node.js et toutes les dependances. Executez-la en tant qu'utilisateur hermes, pas en root.
D'abord, verifiez le script d'installation avant de le piper vers bash. Telechargez-le, examinez-le, puis executez-le :
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh -o /tmp/hermes-install.sh
less /tmp/hermes-install.sh
Lisez le script. Il installe Python 3.11+ via uv, Node.js et la CLI hermes. Quand vous etes satisfait :
bash /tmp/hermes-install.sh
Rechargez votre shell pour rendre la commande hermes disponible :
source ~/.bashrc
Verifiez l'installation :
hermes --version
Vous devriez voir la version et les infos d'environnement :
Hermes Agent v0.4.0 (2026.3.18)
Project: /home/hermes/.hermes/hermes-agent
Python: 3.11.15
...
Lancez l'outil de diagnostic pour verifier les dependances manquantes :
hermes doctor
Cherchez les coches vertes dans la sortie. Les avertissements sur des cles API non configurees (OpenRouter, Browserbase, etc.) sont normaux a ce stade. Vous configurerez votre fournisseur LLM ensuite. Les elements en rouge concernant Python, Git ou Docker doivent etre corriges avant de continuer.
Comment configurer le fournisseur LLM ?
Hermes Agent a besoin d'un fournisseur LLM pour fonctionner. Il n'inclut pas de modele. Vous le connectez a l'API d'un fournisseur et payez au token. OpenRouter donne acces a plus de 200 modeles via une seule cle API et c'est le moyen le plus rapide pour demarrer.
Option 1 : OpenRouter (recommande pour demarrer)
Creez un compte sur openrouter.ai et generez une cle API.
L'installeur a cree ~/.hermes/.env avec un template complet. D'abord, verrouillez ses permissions :
chmod 600 ~/.hermes/.env
Ouvrez le fichier et renseignez votre cle API sur la ligne OPENROUTER_API_KEY= :
nano ~/.hermes/.env
Trouvez la ligne OPENROUTER_API_KEY= et ajoutez votre cle apres le signe =. Sauvegardez et quittez (Ctrl+X, puis Y, puis Enter).
Definissez le modele par defaut :
hermes config set model.provider openrouter
hermes config set model.default anthropic/claude-sonnet-4
Verifiez que le fichier n'est pas lisible par les autres utilisateurs :
ls -la ~/.hermes/.env
Les permissions devraient afficher -rw------- (600). Seul l'utilisateur hermes peut lire ce fichier.
Option 2 : Endpoint compatible OpenAI personnalise
Si vous faites tourner votre propre serveur d'inference (Ollama, vLLM, llama.cpp) ou utilisez un autre fournisseur :
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
Comparaison des fournisseurs LLM
| Fournisseur | Variable d'environnement | Cout | Notes |
|---|---|---|---|
| OpenRouter | OPENROUTER_API_KEY |
Au token, varie selon le modele | 200+ modeles, une seule cle |
| Anthropic | ANTHROPIC_API_KEY |
Au token | Acces direct a Claude |
| Ollama (local) | OPENAI_BASE_URL + OPENAI_API_KEY |
Gratuit (auto-heberge) | Necessite un VPS GPU pour de bonnes performances |
| vLLM | OPENAI_BASE_URL + OPENAI_API_KEY |
Gratuit (auto-heberge) | GPU requis |
Testez que la connexion LLM fonctionne :
hermes -m "What is 2+2? Reply with just the number."
Si vous recevez une reponse, le fournisseur est correctement configure. Si vous voyez une erreur d'authentification, verifiez votre cle API dans ~/.hermes/.env.
Comment isoler Hermes Agent avec Docker ?
Par defaut, Hermes Agent execute les commandes terminal directement sur l'hote. Sur un VPS, c'est un risque de securite. Si le LLM genere une commande destructrice, elle s'execute sur votre vrai serveur. L'isolation Docker enferme toute execution de commande dans un conteneur.
Definissez Docker comme backend terminal :
hermes config set terminal.backend docker
Configurez l'image Docker et les limites de ressources dans ~/.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
Ce que font ces parametres :
docker_image: L'image de base pour le sandbox. Celle-ci inclut Python et Node.js, couvrant la plupart des taches de developpement.container_cpu: Limite le conteneur a 1 coeur CPU. Empeche un processus emballe de priver votre VPS de ressources.container_memory: Limite de 2048 Mo de RAM pour le conteneur. Augmentez si vous travaillez avec de gros jeux de donnees.container_persistent: Garde le conteneur entre les commandes. Execution plus rapide car le demarrage du conteneur est evite a chaque fois.
Verifiez que le backend est defini :
hermes config
Dans la section Terminal, vous devriez voir Backend: docker.
Comparaison des backends terminal
| Backend | Securite | Vitesse | Cas d'usage |
|---|---|---|---|
local |
Aucune. Commandes executees sur l'hote | Le plus rapide | Dev local uniquement. Jamais sur un VPS |
docker |
Isolation par conteneur | Leger surcout au demarrage | Deploiements VPS (recommande) |
ssh |
Isolation reseau | Latence reseau | Executer sur un autre serveur |
Configurer le mode d'approbation
Hermes Agent dispose d'un systeme d'approbation integre qui demande confirmation avant d'executer des commandes potentiellement dangereuses. Sur un serveur, gardez-le active :
hermes config set approval_mode ask
Les trois modes :
- ask : Demande confirmation avant toute commande qui modifie des fichiers, installe des paquets ou touche au reseau. Utilisez celui-ci.
- smart : Un modele IA evalue le risque et ne demande confirmation que pour les commandes reellement dangereuses. Plus rapide, mais depend du jugement de l'IA.
- off : Aucune verification. Chaque commande s'execute immediatement. Ne pas utiliser sur un serveur.
Comment connecter Hermes Agent a Telegram ?
La passerelle de messagerie vous permet de discuter avec Hermes depuis votre telephone. Telegram est la configuration la plus courante. La passerelle etablit des connexions sortantes vers l'API Telegram, donc vous n'avez pas besoin d'ouvrir de ports entrants sur votre pare-feu.
Etape 1 : Creer un bot Telegram
Ouvrez Telegram et envoyez un message a @BotFather. Envoyez ces commandes :
/newbot- Entrez un nom pour votre bot (ex : « My Hermes Agent »)
- Entrez un nom d'utilisateur (doit finir par
bot, ex :myhermes_agent_bot)
BotFather repond avec un token de bot. Il ressemble a 7123456789:AAHx.... Copiez-le.
Etape 2 : Obtenir votre identifiant utilisateur Telegram
Envoyez un message a @userinfobot sur Telegram. Il repond avec votre identifiant utilisateur numerique. Copiez ce nombre.
Etape 3 : Configurer la passerelle
Ajoutez le token du bot et votre identifiant utilisateur au fichier d'environnement :
echo 'TELEGRAM_BOT_TOKEN=7123456789:AAHxYourTokenHere' >> ~/.hermes/.env
echo 'TELEGRAM_ALLOWED_USERS=your_numeric_user_id' >> ~/.hermes/.env
La variable TELEGRAM_ALLOWED_USERS est un controle de securite. Seuls les identifiants utilisateurs listes ici peuvent interagir avec votre bot. Sans elle, n'importe qui trouvant votre bot peut lui envoyer des commandes. Separez les identifiants multiples par des virgules.
Etape 4 : Tester la passerelle
Demarrez la passerelle au premier plan pour verifier la connexion :
hermes gateway
Envoyez un message a votre bot dans Telegram. Vous devriez voir le message apparaitre dans le terminal et une reponse renvoyee. Appuyez sur Ctrl+C pour arreter la passerelle une fois que vous avez confirme que ca fonctionne.
Si le bot ne repond pas, verifiez :
- Le token du bot est correct dans
~/.hermes/.env - Votre identifiant utilisateur est dans
TELEGRAM_ALLOWED_USERS - Le VPS peut atteindre
api.telegram.orgsur le port 443 (HTTPS sortant)
Les autres plateformes supportees incluent Discord, Slack, WhatsApp, Signal et Email. Lancez hermes gateway setup pour un assistant interactif qui configure n'importe laquelle d'entre elles.
Comment faire tourner Hermes Agent en service systemd ?
Executer hermes gateway dans une session terminal signifie qu'il s'arrete quand vous vous deconnectez. Un service utilisateur systemd maintient la passerelle en fonctionnement apres la deconnexion et la redemarre automatiquement en cas de crash ou de redemarrage du serveur.
Installer le service
Hermes fournit une commande integree pour installer la passerelle en tant que service utilisateur systemd :
hermes gateway install
Cela cree un fichier de service a ~/.config/systemd/user/hermes-gateway.service et active le lingering automatiquement. Le lingering maintient les services utilisateur en fonctionnement apres votre deconnexion SSH. Sans lui, systemd tuerait la passerelle a la fin de votre session.
Demarrez le service et activez-le au demarrage :
systemctl --user enable --now hermes-gateway
enable le fait demarrer au boot. Le flag --now le demarre immediatement. Utilisez toujours les deux ensemble.
Verifiez que le service tourne :
systemctl --user status hermes-gateway
Cherchez Active: active (running) dans la sortie. S'il indique failed, consultez les logs.
Consulter les logs
Affichez les logs de la passerelle en temps reel :
journalctl --user -u hermes-gateway -f
Appuyez sur Ctrl+C pour arreter le suivi. Les logs de la passerelle affichent chaque message entrant, appel LLM et execution d'outil.
Definir le repertoire de travail
Par defaut, la passerelle utilise le repertoire home comme espace de travail. Definissez un repertoire projet dedie :
echo 'MESSAGING_CWD=/home/hermes/projects' >> ~/.hermes/.env
mkdir -p /home/hermes/projects
Redemarrez le service pour appliquer :
systemctl --user restart hermes-gateway
Comment sauvegarder les donnees de Hermes Agent ?
Hermes stocke tout son etat dans ~/.hermes/. Ce repertoire contient les memoires, les competences apprises, l'historique des sessions, la configuration et les taches cron. Le perdre signifie que l'agent oublie tout.
Chemins principaux :
| Chemin | Contenu |
|---|---|
~/.hermes/config.yaml |
Configuration |
~/.hermes/.env |
Cles API et secrets |
~/.hermes/memories/ |
Memoires persistantes de l'agent |
~/.hermes/skills/ |
Competences reutilisables creees par l'agent |
~/.hermes/sessions/ |
Historique des sessions de la passerelle |
~/.hermes/cron/ |
Taches planifiees |
~/.hermes/SOUL.md |
Identite/persona de l'agent |
Creez un script de sauvegarde :
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
Lancez-le quotidiennement avec une tache cron :
(crontab -l 2>/dev/null; echo "0 3 * * * /home/hermes/backup-hermes.sh") | crontab -
Verifiez l'entree cron :
crontab -l
Vous devriez voir la tache de sauvegarde planifiee a 03h00 quotidiennement. Le script conserve 7 jours de sauvegardes et supprime les plus anciennes.
Pour des sauvegardes hors serveur, synchronisez le repertoire de sauvegardes vers une autre machine ou du stockage objet avec rsync. Garder les sauvegardes uniquement sur le meme VPS ne protege pas contre une defaillance disque.
Comment mettre a jour Hermes Agent ?
Hermes Agent inclut une commande de mise a jour integree. Avant de mettre a jour, sauvegardez vos donnees.
/home/hermes/backup-hermes.sh
hermes update
Verifiez la nouvelle version :
hermes --version
Verifiez si des changements de configuration sont necessaires apres la mise a jour :
hermes config migrate
hermes doctor
config migrate ajoute les nouvelles options de configuration avec leurs valeurs par defaut. hermes doctor verifie que tout fonctionne encore apres la mise a jour.
Redemarrez le service de passerelle pour executer la nouvelle version :
systemctl --user restart hermes-gateway
systemctl --user status hermes-gateway
Si quelque chose casse apres une mise a jour, restaurez depuis la sauvegarde :
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 securisation
Un agent IA heberge sur VPS qui execute des commandes terminal necessite une attention particuliere a la securite. Voici un resume de ce que ce guide a deja configure et quelques etapes supplementaires.
Deja configure dans ce guide :
- Utilisateur non-root (
hermes) avec repertoire home dedie - Sandboxing Docker pour toute execution de commande terminal
- Pare-feu UFW refusant tout trafic entrant sauf SSH
- Cles API dans
~/.hermes/.envavec permissions600 TELEGRAM_ALLOWED_USERSrestreignant l'acces du bot a votre identifiant utilisateurapproval_mode: askexigeant confirmation pour les commandes dangereuses
Securisation supplementaire :
Desactivez entierement le backend terminal local en verifiant votre configuration :
hermes config
Dans la section Terminal, confirmez que Backend indique docker, pas local.
Definissez des limites de ressources sur les conteneurs Docker pour empecher un processus emballe de consommer toutes les ressources du serveur. Cela a ete configure plus tot avec container_cpu et container_memory.
Passez en revue les competences apprises par l'agent periodiquement :
ls -la ~/.hermes/skills/
Les competences sont des scripts que l'agent ecrit et reutilise. Auditez-les comme vous le feriez pour tout code tournant sur votre serveur.
Surveillez les logs de la passerelle pour detecter des utilisateurs inattendus ou une activite inhabituelle :
journalctl --user -u hermes-gateway --since "1 hour ago" --no-pager
Depannage
La passerelle ne demarre pas :
journalctl --user -u hermes-gateway -n 50 --no-pager
Causes frequentes : token de bot invalide, cle API manquante, Docker non demarre. Verifiez que Docker est actif avec systemctl status docker.
Le bot Telegram ne repond pas :
Verifiez que le token du bot et les utilisateurs autorises sont definis :
grep TELEGRAM ~/.hermes/.env
Testez la connectivite sortante :
curl -s https://api.telegram.org/bot<YOUR_TOKEN>/getMe
Une reponse valide avec les informations de votre bot confirme que le token et le reseau fonctionnent.
Permission Docker refusee :
groups
La sortie doit inclure docker. Sinon, relancez sudo usermod -aG docker hermes et deconnectez-vous/reconnectez-vous.
Commande hermes introuvable apres l'installation :
source ~/.bashrc
Si toujours absente, verifiez que ~/.local/bin est dans votre PATH :
echo $PATH | tr ':' '\n' | grep local
Utilisation memoire elevee :
Verifiez la consommation de ressources des conteneurs Docker :
docker stats --no-stream
Diminuez le parametre container_memory si les conteneurs utilisent trop de RAM.
Estimation des couts
Auto-heberger Hermes Agent sur un VPS coute le serveur plus l'utilisation API LLM. Voici une estimation realiste pour un developpeur solo.
| Element | Cout mensuel |
|---|---|
| VPS (2 vCPU, 4 Go RAM) | 5-10 $ |
| API OpenRouter (usage modere, ~500K tokens/jour) | 5-15 $ |
| Surcout Docker | Inclus dans le VPS |
| Passerelle Telegram | Gratuit |
| Total | 10-25 $/mois |
Les abonnements d'assistants IA geres coutent 20-200 $/mois. L'auto-hebergement coute moins cher et garde vos donnees sur votre propre serveur.
Executer Claude Code sur un VPS
Copyright 2026 Virtua.Cloud. Tous droits reserves. Ce contenu est une creation originale de l'equipe Virtua.Cloud. Toute reproduction, republication ou redistribution sans autorisation ecrite est interdite.
Prêt à essayer ?
Déployez votre serveur en quelques secondes. Linux, Windows ou FreeBSD.
Voir les offres VPS