🐳 Guide de déploiement · 2026

Hermes Agent Docker : Guide de déploiement complet pour 2026

Le guide complet sur le déploiement de Hermes Agent avec Docker en 2026 — couvrant le mode 1 par rapport au mode 2, la configuration de production de Compose, les pièges Windows/WSL2, la prise en charge d'ARM64, l'intégration du robot Telegram et une référence complète de dépannage.

📅 Mise à jour : avril 2026⏱ 14 minutes de lecture✍️ Éditorial EasyClaw
  • X(Twitter) icon
  • Facebook icon
  • LinkedIn icon
  • Copy link icon

Qu'est-ce que l'agent Hermes et pourquoi Docker est la bonne façon de l'exécuter

Agent Hermès est un agent d'IA autonome de Nous Research avec une boucle d'apprentissage intégrée. Contrairement aux agents apatrides qui recommencent à zéro à chaque exécution, Hermes crée une bibliothèque de compétences persistante. Chaque tâche accomplie peut devenir une compétence réutilisable, rendant l'agent sensiblement plus performant au fil du temps.

Exécuter Hermes sans système d'exploitation fonctionne, mais cela crée de réels problèmes :

  • L'état des compétences et l'historique des conversations sont liés au système de fichiers d'une seule machine
  • La reproduction de l'environnement lors des reconstructions VPS nécessite un travail manuel
  • Aucune isolation de processus signifie qu'un sous-processus incontrôlé peut affecter votre hôte

Docker résout les trois. Un conteneur correctement configuré vous offre la portabilité, l'isolation et, avec la bonne stratégie de volume, un état d'apprentissage persistant qui survit aux mises à jour d'images.

Deux modes Docker expliqués – Choisissez avant de commencer

La plupart des guides ignorent complètement cette décision et passent à docker run. Ne le faites pas. Les deux modes ont des profils de sécurité et opérationnels très différents.

Mode 1 : Hermès à l'intérieur du conteneur Mode 2 : Docker comme bac à sable du terminal
Qu'est-ce qui court où Hermes + son runtime en direct à l'intérieur du conteneur Hermès fonctionne sur l'hôte ; Docker crée des conteneurs sandbox jetables pour les tâches du terminal
Isolement Hermès lui-même est isolé Seule la sortie des tâches du terminal est isolée
Gestion de l'État Les volumes gèrent tout Le système de fichiers hôte contient l'état Hermès
Recommandé pour Production VPS, déploiements en équipe Développement local, expérimentation rapide
DOCKER_HOST nécessaire Non Oui (configuration du conteneur frère)

Règle générale : Si vous effectuez un déploiement sur un VPS ou souhaitez un environnement de production reproductible, utilisez le mode 1. Si vous exécutez Hermes localement et souhaitez qu'il fasse tourner les bacs à sable Docker pour l'exécution de code, utilisez le mode 2.

Mode 1 – Hermès fonctionnant à l’intérieur d’un conteneur

Hermès et toutes ses dépendances vivent à l'intérieur de l'image. Vous gérez l'état via des volumes nommés. La stratégie de redémarrage du conteneur le maintient en vie lors des redémarrages. C'est le modèle de production le plus courant.

  • Séparation nette de l'hôte : aucune écriture accidentelle sur votre machine
  • Portabilité totale ; redéployer n'importe où avec le même fichier de composition
  • Frais généraux légèrement plus élevés que l'exécution native

Mode 2 – Docker en tant que bac à sable backend de terminal

Ici, Hermes s'exécute directement sur l'hôte (ou dans un conteneur) et appelle le démon Docker pour faire tourner des conteneurs éphémères pour l'exécution du shell. Vous le configurez en définissant DOCKER_HOST pour qu'Hermes puisse atteindre le démon :

export DOCKER_HOST=unix:///var/run/docker.sock   # Linux
export DOCKER_HOST=tcp://host.docker.internal:2375  # Windows/Mac (Docker Desktop)

Note de sécurité : Le montage du socket Docker à l'intérieur d'un conteneur accorde un accès quasi-root à l'hôte. Ne faites cela que dans des environnements dans lesquels vous faites entièrement confiance à la charge de travail du conteneur.

Conditions préalables et configuration de l'environnement

Avant d'extraire une image, confirmez :

  • Moteur Docker 24+ ou Docker Bureau 4.26+
  • Une clé API LLM prête : OpenAI (OPENAI_API_KEY), Anthropic (Anthropic_API_KEY) ou un point de terminaison Ollama local
  • Accès Internet sortant sur le port 443 (pour les appels API LLM)
  • Au moins 2 Go de RAM alloué au conteneur (4 Go recommandés pour les configurations basées sur Ollama)

Configuration spécifique à Windows (Docker Desktop + WSL2)

Windows est l'endroit où la plupart des déploiements Docker s'interrompent discrètement. Surveillez ceux-ci :

Traduction du chemin du volume

Docker Desktop sous Windows traduit les chemins via WSL2. Utilisez des chemins de style Linux dans les fichiers de composition — évitez les chemins de style Windows (C:\Users\...) dans les définitions de composition volumes:.

# Correct — Docker Desktop translates this automatically
volumes:
  - hermes_data:/root/.hermes

Socket ou tube nommé

Sous Windows, Docker expose un canal nommé, pas un socket Unix. Pour le mode 2, définissez :

DOCKER_HOST=npipe:////./pipe/docker_engine

Limites de mémoire WSL2

Docker Desktop sous Windows définit par défaut WSL2 sur 50 % de la RAM de l'hôte. Si Hermes se sent lent, ajoutez un .wslconfig dans votre profil utilisateur Windows :

[wsl2]
memory=4GB
processors=2

Démarrage rapide – Exécutez l'agent Hermes avec Docker en 5 minutes

Extrayez l'image officielle et exécutez l'assistant de configuration :

# Pull the latest image
docker pull nousresearch/hermes-agent:latest

# Run with a persistent volume for state
docker run -it \
  -v hermes_home:/root/.hermes \
  -e OPENAI_API_KEY=your_key_here \
  nousresearch/hermes-agent:latest

Le assistant de configuration se lance dès la première exécution. Il vous demandera de :

  1. Sélectionnez votre fournisseur LLM (OpenAI, Anthropic, Ollama ou point de terminaison personnalisé)
  2. Saisissez votre clé API ou l'URL de votre point de terminaison
  3. Configurer le backend du terminal (sandbox natif ou Docker)

Une fois terminé, vérifiez que la session fonctionne :

> hello

Hermes devrait répondre et confirmer que sa bibliothèque de compétences est initialisée. Si vous voyez skill store empty sur un nouveau conteneur, c'est normal : les compétences s'accumulent au fil de l'utilisation.

Déploiement en production avec Docker Compose

La commande nue docker run fonctionne pour les tests. Pour tout ce qui est persistant, utilisez Compose.

version: "3.9"

services:
  hermes:
    image: nousresearch/hermes-agent:latest
    container_name: hermes-agent
    restart: unless-stopped
    stdin_open: true
    tty: true

    environment:
      # Use environment secrets — never hardcode keys in compose files
      OPENAI_API_KEY: ${OPENAI_API_KEY}
      Anthropic_API_KEY: ${Anthropic_API_KEY}
      HERMES_LOG_LEVEL: info

    volumes:
      - hermes_home:/root/.hermes         # Config + conversation history
      - hermes_skills:/root/.hermes/skills # Skill store — see next section

    deploy:
      resources:
        limits:
          memory: 2G
          cpus: "1.5"

    healthcheck:
      test: ["CMD", "hermes", "--health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 15s

    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

volumes:
  hermes_home:
  hermes_skills:

Stockez vos clés API dans un fichier .env (jamais engagé dans le contrôle de version) :

OPENAI_API_KEY=sk-...
Anthropic_API_KEY=sk-ant-...

Préserver les compétences d'Hermes lors des reconstructions de conteneurs

C’est le problème de production le plus négligé. Hermes stocke les compétences acquises séparément de la configuration générale. Montez explicitement ces chemins :

Chemin Contient Faut-il persister ?
/root/.hermes Configuration, historique des sessions Oui
/root/.hermes/compétences Bibliothèque de compétences acquises Critique
/root/.hermes/mémoire Stockage de mémoire à long terme Oui

Lors de la mise à jour de l'image :

docker compose pull
docker compose up -d   # Named volumes persist automatically

Topologie avancée – Configuration hôte-Docker (conteneur frère)

Cette architecture est utilisée lorsque vous souhaitez qu'Hermes orchestre des conteneurs frères pour l'exécution de code isolé, par exemple pour exécuter en toute sécurité du code soumis par l'utilisateur.

┌─────────────────────────────────┐
│         Docker Host             │
│                                 │
│  ┌──────────────┐               │
│  │ hermes-agent │◄──socket──────┤── /var/run/docker.sock
│  │  container   │               │
│  └──────┬───────┘               │
│         │ docker run (sibling)  │
│  ┌──────▼───────┐               │
│  │  sandbox-1   │  (ephemeral)  │
│  └──────────────┘               │
└─────────────────────────────────┘

Composez la configuration pour cette topologie :

services:
  hermes:
    image: nousresearch/hermes-agent:latest
    restart: unless-stopped
    environment:
      OPENAI_API_KEY: ${OPENAI_API_KEY}
      DOCKER_HOST: unix:///var/run/docker.sock
      HERMES_TERMINAL_BACKEND: docker
    volumes:
      - hermes_home:/root/.hermes
      - /var/run/docker.sock:/var/run/docker.sock  # Socket mount
    group_add:
      - "999"   # docker group GID — adjust to match your host

Notes de sécurité pour la production :

  • Restreindre l'accès aux sockets à l'aide d'un proxy de socket Docker (par exemple, Tecnativa/docker-socket-proxy) pour limiter les appels d'API qu'Hermes peut effectuer
  • N’exposez jamais le socket Docker dans des environnements multi-locataires
  • Définissez userns-remap sur le démon Docker si vous avez besoin d'une isolation plus forte de l'hôte

Connecter Hermès à Claude via Telegram Bot

Aucun guide écrit ne couvre actuellement ce sujet – il est uniquement présenté sous forme vidéo. Voici la configuration complète.

Étape 1 : Créer un bot Telegram

Parlez à @BotFather sur Telegram :

/newbot
→ Name: Hermes Agent
→ Username: your_hermes_bot
→ Save the token: 123456:ABC-DEF...

Étape 2 : Obtenez votre jeton Claude OAuth

Dans votre console Anthropic, générez une clé API avec la portée claude-3-5-sonnet ou claude-opus-4. Définissez-le comme Anthropic_API_KEY.

Étape 3 : Ajoutez la configuration Telegram à votre fichier de composition

environment:
  Anthropic_API_KEY: ${Anthropic_API_KEY}
  HERMES_LLM_PROVIDER: Anthropic
  HERMES_TELEGRAM_TOKEN: ${TELEGRAM_BOT_TOKEN}
  HERMES_TELEGRAM_ALLOWED_USERS: "your_telegram_user_id"

Étape 4 : Trouvez votre identifiant Telegram

Message @userinfobot sur Telegram — il répond avec votre identifiant d'utilisateur numérique.

Étape 5 : Démarrez le bot

docker compose up -d

Envoyez un message à votre bot sur Telegram. Hermès répondra via le backend Claude. La restriction HERMES_TELEGRAM_ALLOWED_USERS garantit que seul votre compte peut interagir avec l'agent.

Déploiement multi-architecture (ARM64 / Oracle Free Tier / Raspberry Pi)

L'image nousresearch/hermes-agent est livrée sous forme de manifeste multi-arch. ARM64 est pris en charge — extrayez-le explicitement sur les hôtes ARM :

# Oracle Free Tier (Ampere A1) or Raspberry Pi 4/5
docker pull --platform linux/arm64 nousresearch/hermes-agent:latest

# Verify the architecture
docker inspect nousresearch/hermes-agent:latest | grep Architecture

Niveau Oracle toujours gratuit est la meilleure option d'hébergement sans frais pour Hermes en 2026. L'instance Ampere A1 vous offre 4 cœurs ARM64 et 24 Go de RAM – plus que suffisant pour un déploiement Hermes persistant avec un fournisseur LLM distant.

Problèmes connus spécifiques à ARM :

  • Certaines quantifications du modèle Ollama (Q8) s'exécutent plus lentement sur ARM ; préférez Q4_K_M pour l'inférence locale
  • Si vous appuyez sur exec format error, confirmez que vous utilisez l'indicateur --platform linux/arm64.
  • Docker Desktop sur Apple Silicon gère ARM de manière native – aucun indicateur de plate-forme n'est nécessaire

Gérer des flux de travail d'agent complexes ? EasyClaw vous couvre

L'exécution d'Hermes Agent dans Docker est une configuration puissante, mais l'orchestration de plusieurs agents d'IA, la gestion des pipelines de compétences et le maintien d'une mémoire persistante dans des flux de travail complexes sont là où la plupart des équipes se heurtent à un mur. EasyClaw est une plate-forme d'agents d'IA native pour ordinateur de bureau conçue exactement pour cela : une coordination multi-agents de niveau production sans les problèmes d'infrastructure.

  • Orchestration visuelle pour les pipelines multi-agents – pas de conflits YAML
  • Mémoire persistante et bibliothèques de compétences qui survivent aux sessions
  • Fonctionne entièrement sur votre machine : pas de verrouillage dans le cloud, pas de fuite de données
  • Intégrations natives avec Telegram, Slack et webhooks personnalisés
  • Planification, surveillance et inspection des journaux intégrées
Essayez EasyClaw gratuitement →

Dépannage des pannes courantes de Docker de l'agent Hermes

Un tableau de référence des pannes que vous êtes le plus susceptible de rencontrer :

Échec Symptôme Diagnostic Réparer
Erreur d'extraction d'image manifest unknown docker pull nousresearch/hermes-agent:latest échoue Vérifiez Docker Hub pour les balises valides actuelles ; essayez --platform linux/amd64
Autorisation de volume refusée Le conteneur se ferme avec une erreur d'autorisation sur /root/.hermes docker run --rm -v hermes_home:/data busybox ls -la /data docker volume rm hermes_home et recréer, ou corriger avec chown via un conteneur d'initialisation de Busybox
Échec de l'authentification LLM 401 Unauthorized dans les journaux docker logs hermes-agent | grep -i auth Vérifiez que la clé API est correctement définie dans .env ; vérifier les espaces de début et de fin
L'assistant d'installation se bloque L'assistant vous invite mais n'accepte aucune entrée N / A Assurez-vous que les indicateurs -it sont définis sur docker run ; composer nécessite stdin_open: true + tty: true
LLM inaccessible Connection refused vers Ollama ou un point de terminaison local docker exec hermes-agent curl http://host.docker.internal:11434 Utilisez host.docker.internal au lieu de localhost ; ajoutez --add-host si nécessaire
Compétences qui ne persistent pas Bibliothèque de compétences vide après reconstruction docker volume ls — vérifier que le volume existe Assurez-vous que le volume hermes_skills est nommé (pas de montage lié) et que le fichier de composition y fait référence
Erreur de format d'exécution ARM exec /usr/local/bin/hermes: exec format error docker inspect image | grep Architecture Tirez à nouveau avec --platform linux/arm64
Autorisation de socket refusée permission denied /var/run/docker.sock ls -la /var/run/docker.sock sur l'hôte Ajouter un utilisateur de conteneur au groupe Docker via group_add dans composer

Foire aux questions

Q : Mes compétences Hermès survivront-elles à un docker compose pull && up -d ?

R : Oui, à condition que vos compétences soient stockées dans un volume nommé (pas un montage lié ou un volume anonyme). La configuration de composition dans ce guide utilise hermes_skills comme volume nommé, que Docker conserve automatiquement lors des mises à jour d'image.

Q : Puis-je exécuter plusieurs instances Hermes sur le même hôte ?

R : Oui. Attribuez à chaque instance un container_name distinct et des volumes nommés distincts. Vous devrez également vous assurer qu’ils n’entrent pas en conflit sur les ports exposés. Chaque instance accumule sa propre bibliothèque de compétences indépendante.

Q : Hermes Agent prend-il en charge les LLM locaux via Ollama dans Docker ?

R : Oui. Exécutez Ollama en tant que service distinct dans la même pile de composition et pointez Hermes vers http://Ollama:11434 (en utilisant le DNS interne de Docker). Évitez de pointer vers localhost depuis l'intérieur d'un conteneur - utilisez le nom du service ou host.docker.internal pour Ollama côté hôte.

Q : Est-il sécuritaire de monter le socket Docker dans le conteneur Hermes ?

R : Le montage par socket accorde au conteneur des privilèges proches de la racine sur votre hôte. C'est acceptable sur un VPS mono-utilisateur où vous contrôlez toutes les charges de travail. Dans les environnements partagés ou multi-locataires, utilisez un proxy de socket (par exemple, Tecnativa/docker-socket-proxy) pour mettre sur liste blanche uniquement les appels d'API dont Hermes a besoin.

Q : Quelle est la spécification minimale du serveur pour un déploiement Hermes de production ?

R : Avec un fournisseur LLM distant (OpenAI/Anthropic), 1 vCPU et 2 Go de RAM sont réalisables. Pour un backend Ollama auto-hébergé, vous aurez besoin d'au moins 8 Go de RAM et d'un processeur raisonnablement moderne. Le niveau gratuit Ampere A1 d'Oracle (4 cœurs, 24 Go) couvre confortablement les deux scénarios sans frais.

Q : Comment puis-je sauvegarder les compétences acquises et la mémoire d'Hermès ?

R : Utilisez docker run --rm -v hermes_skills:/data -v $(pwd):/backup busybox tar czf /backup/hermes-skills-backup.tar.gz /data. Exécutez-le en tant que tâche cron planifiée sur votre hôte pour des sauvegardes automatisées avant toute mise à jour d'image.

Réflexions finales : liste de contrôle et prochaines étapes

La boucle d'apprentissage est ce qui différencie Hermes de tous les autres agents que vous avez exécutés dans Docker. La configuration ci-dessus garantit que la boucle est réellement accumule - pas de réinitialisation - chaque fois que vous envoyez une mise à jour.

Avant d'appeler un déploiement prêt pour la production, confirmez :

  • Volumes nommés créés pour hermes_home et hermes_skills
  • Clés API stockées dans .env, non codées en dur dans composer
  • Politique restart: unless-stopped active
  • Réussite du bilan de santé : docker inspect hermes-agent --format='{{.State.Health.Status}}'
  • Rotation des journaux configurée (max-size, max-file)
  • Limites de ressources définies pour éviter l'épuisement de la mémoire
  • Assistant de configuration terminé et première session de discussion vérifiée
  • (Si mode 2) Montage du socket Docker confirmé et proxy de socket pris en compte

Prochaines étapes pour obtenir de la valeur immédiatement :

  1. Exécutez quelques tâches réelles (résumé de fichiers, révision de code, recherche sur le Web) pour alimenter la bibliothèque de compétences.
  2. Après 10 à 15 tâches, exécutez hermes skills list pour voir ce qui a été appris
  3. Consultez le Nous Research GitHub pour consulter les documents de configuration d'agent couvrant les modèles de compétences personnalisés et le réglage de la mémoire.
  4. Si vous bénéficiez de l'offre gratuite Oracle, configurez un docker compose pull && docker compose up -d basé sur cron pour des mises à jour d'images sans temps d'arrêt tout en préservant l'état appris.