Retour au blog
HermesTailscaleSelf-HostingNetworking

Hermes Agent + Tailscale : accès distant sécurisé

Accédez à un Hermes Agent auto-hébergé depuis n'importe où sans ouvrir de port. Installez Tailscale sur l'hôte et vos appareils, joignez le 8642 par le tailnet.

Par Hermify Team||8 min de lecture
Un maillage privé de nœuds verts lumineux sur une carte sombre, évoquant un tailnet Tailscale reliant un hôte Hermes Agent à un téléphone et à un portable

Arrêtez d'exposer le port 8642 à l'internet public

Dès qu'un Hermes Agent auto-hébergé quitte votre portable pour un VPS, vous avez une décision à prendre. Le gateway écoute sur le port 8642, et l'instinct naturel est d'ouvrir ce port sur le pare-feu de l'hôte pour que votre téléphone, votre bureau ou l'app Hermes Desktop puissent l'atteindre depuis n'importe où. Ça marche, et c'est exactement la mauvaise forme pour un processus qui garde vos clés de fournisseur, lit votre boîte mail et exécute des commandes shell sur l'hôte.

Une meilleure forme, c'est un maillage WireGuard. Installez Tailscale sur l'hôte Hermes et sur chaque appareil depuis lequel vous discutez, connectez les deux côtés au même tailnet, puis atteignez le gateway sur http://<hostname>:8642 depuis n'importe lequel de ces appareils, sans aucune règle de pare-feu entrante sur le VPS. Rien sur le port 8642 n'est joignable depuis l'internet public. L'agent n'est visible que pour les machines que vous avez explicitement connectées à votre tailnet. C'est le setup que nous recommandons à tout auto-hébergeur qui compte sortir Hermes de son réseau local.

Ce qu'est vraiment Tailscale

Tailscale est un VPN en maille construit au-dessus de WireGuard. Au lieu du classique VPN en étoile où tout le trafic transite par un concentrateur central, Tailscale établit des tunnels chiffrés point-à-point entre les appareils de votre tailnet, en n'utilisant un serveur de coordination que pour aider les pairs à se trouver. Quand deux appareils peuvent se parler directement, ils le font. Quand ils ne peuvent pas parce que les deux sont derrière des NAT restrictifs, les paquets basculent sur des relais DERP chiffrés qui ne voient jamais le texte en clair.

Pour un déploiement Hermes, les conséquences pratiques sont :

  • Aucune règle de pare-feu entrante sur l'hôte. Le gateway continue d'écouter sur 0.0.0.0:8642 à l'intérieur du VPS, mais le pare-feu de l'hôte n'accepte jamais de connexion publique sur ce port. Tailscale se lie à l'interface tailscale0, qui n'est pas exposée à internet.
  • Noms d'appareils stables via MagicDNS. Votre hôte Hermes devient joignable comme http://hermes-vps:8642 depuis n'importe quel pair du tailnet, quel que soit l'IP sous-jacent du VPS.
  • Aucune gestion de clés. Chaque appareil est authentifié via votre fournisseur SSO (Google, GitHub, Okta, Apple ou un endpoint OIDC). Ajouter un nouveau téléphone ou révoquer un volé est une opération à deux clics dans la console d'administration Tailscale.
  • Gratuit pour un usage personnel. Le plan Personal couvre jusqu'à 6 utilisateurs et un nombre illimité d'appareils sans frais, ce qui tient largement dans un déploiement Hermes mono-opérateur avec quelques clients.

Si vous n'avez pas encore décidé si vous voulez auto-héberger l'agent, lisez d'abord auto-hébergement vs Hermes Agent géré. La suite de cet article suppose que vous avez déjà un Hermes Agent en Docker qui tourne sur un VPS (la recette est dans le guide Hermes Agent Docker) et que vous voulez maintenant l'atteindre en toute sécurité depuis l'extérieur.

Prérequis

Il vous faut :

  • Un VPS ou une machine de homelab qui fait tourner Hermes Agent, idéalement en Docker, avec le gateway lié à 0.0.0.0:8642 à l'intérieur du conteneur.
  • Un compte Tailscale gratuit (le plan Personal suffit).
  • Un accès SSH à l'hôte et un accès administrateur au téléphone ou portable depuis lequel vous voulez discuter.
  • Le pare-feu public de l'hôte configuré pour refuser le port 8642 entrant. Si vous l'aviez ouvert à l'installation, refermez-le avant de continuer. C'est tout l'enjeu de l'exercice.

Étape 1 - Installer Tailscale sur l'hôte Hermes

L'installateur en une ligne fonctionne sur toute distribution Linux courante :

curl -fsSL https://tailscale.com/install.sh | sh

Le script détecte votre distribution, ajoute le dépôt de paquets Tailscale et installe les binaires tailscale et tailscaled. Sur Debian, Ubuntu, Fedora, Arch et Alpine, il choisit le bon gestionnaire de paquets automatiquement. Sur macOS l'équivalent est brew install tailscale ; sur Windows, téléchargez l'installateur depuis le site Tailscale.

Ensuite, démarrez le daemon et connectez-vous :

sudo systemctl enable --now tailscaled
sudo tailscale up --ssh

L'option --ssh active en plus Tailscale SSH, qui vous permet de vous connecter en SSH à l'hôte via le tailnet en utilisant votre identité SSO au lieu d'une paire de clés statique. Si vous avez déjà un SSH qui marche, vous pouvez laisser tomber cette option ; c'est un ajout optionnel et réversible.

tailscale up affiche une URL de connexion à usage unique. Ouvrez-la dans un navigateur, authentifiez-vous auprès de votre fournisseur d'identité, et l'hôte rejoint votre tailnet. Récupérez son IP tailnet et son nom MagicDNS :

tailscale ip -4
tailscale status

Vous verrez quelque chose comme 100.64.1.5 et hermes-vps.tailnet-name.ts.net. Les deux fonctionnent comme cible du gateway.

Étape 2 - Installer Tailscale sur votre téléphone et votre portable

Installez l'app Tailscale sur chaque appareil depuis lequel vous voulez discuter :

  • iOS / Android : installez l'app Tailscale depuis l'App Store ou le Play Store, ouvrez-la et connectez-vous avec la même identité que sur l'hôte.
  • macOS / Windows / bureau Linux : téléchargez l'installateur sur tailscale.com/download et connectez-vous.

Une fois connecté, chaque appareil est un pair sur le même tailnet. Depuis le navigateur du téléphone, ouvrez http://hermes-vps:8642/health et vous devriez recevoir le JSON de santé standard. Depuis un portable sur un autre Wi-Fi, la même URL fonctionne toujours. Aucun port n'a été ouvert sur le VPS.

Étape 3 - Pointer l'app Hermes Desktop vers le gateway distant

Si vous utilisez l'app Hermes Desktop, réglez son URL de gateway sur l'adresse tailnet de l'hôte. Dans les paramètres de l'app, remplacez le http://localhost:8642 par défaut par :

http://hermes-vps:8642

Pour le tunnel WebSocket du desktop, utilisez le même hostname avec l'endpoint websocket --tui. Fixez un HERMES_DASHBOARD_SESSION_TOKEN dans le .env du conteneur pour que le desktop s'authentifie proprement contre un token stable plutôt que contre un jeton fraîchement tourné. Le reste de l'app est agnostique au transport ; de son point de vue le gateway est sur localhost, et Tailscale s'occupe du routage.

Une fois que l'app desktop parle au gateway distant, toutes les surfaces habituelles de Hermes (mode vocal, skills, outils MCP, tâches planifiées) fonctionnent exactement comme sur une installation locale. Voyez le mode vocal de Hermes Agent pour ce que donne la voix sur ce même setup.

Optionnel : Tailscale Funnel pour du HTTPS public

De temps en temps vous avez vraiment besoin d'une cible de webhook accessible depuis l'internet public : un webhook Stripe, un endpoint de slash-command Discord, un webhook Telegram si vous n'utilisez pas le long polling. Tailscale Funnel est la porte de sortie. Il expose un port local choisi du tailnet comme un endpoint HTTPS public sur https://hermes-vps.tailnet-name.ts.net, avec Tailscale qui provisionne un certificat Let's Encrypt valide pour vous.

Activez-le sur l'hôte :

sudo tailscale funnel 8642

Funnel est désactivé par défaut et s'active par service, ce qui vous permet d'ouvrir un endpoint étroit sans déverrouiller tout le gateway. Si vous n'avez jamais besoin d'une URL HTTPS publique, sautez cette étape et gardez l'agent entièrement à l'intérieur du tailnet. Les détails sont dans les docs Tailscale Funnel.

Tailscale vs Cloudflare Tunnel vs pare-feu et reverse proxy

Trois façons d'atteindre un Hermes Agent auto-hébergé depuis l'extérieur, classées par la charge mentale qu'elles imposent :

Approche Exposition publique Effort de setup Meilleur usage
Maillage Tailscale Aucune Faible Vous contrôlez tous les appareils depuis lesquels vous discutez
Cloudflare Tunnel Oui, avec auth Moyen Vous devez partager l'agent avec des utilisateurs externes
Pare-feu + reverse proxy + auth Oui Élevé Vous voulez le classique Nginx devant tout

Cloudflare Tunnel est un juste milieu raisonnable quand votre audience n'est pas seulement vos propres appareils, mais il expose l'endpoint à toute l'internet et s'appuie sur Cloudflare Access pour l'authentification. Pare-feu plus reverse proxy fonctionne, mais vous portez toute la pile : TLS, limites de débit, middleware d'auth, revue des logs. Tailscale est le chemin le plus court vers un agent réellement privé. Les conseils de durcissement pour les deux options les plus exposées sont dans le guide de sécurité Hermes Agent.

L'alternative gérée

Tailscale est la bonne réponse si vous êtes engagé dans l'auto-hébergement. C'est aussi six pièces mobiles en plus : un compte Tailscale, une dépendance au serveur de coordination, le daemon tailscaled sur chaque hôte, une politique pour ajouter et retirer des appareils, des noms MagicDNS à retenir et un inventaire d'appareils à auditer. Ça vaut le coup pour un homelab ou un week-end de curiosité, moins évident quand vous voulez juste un agent personnel qui répond à vos messages.

Si l'objectif est "un agent à qui je peux parler sur Telegram depuis n'importe où" et pas "opérer un maillage WireGuard privé", la voie gérée est un raccourci direct. Commencez avec Hermify et votre Hermes Agent est en ligne comme contact Telegram en une minute environ, avec une mémoire qui reste la vôtre, sans port à ouvrir et sans tailnet à surveiller. L'appareil depuis lequel vous discutez est votre client Telegram habituel, sans configuration VPN.

Sources

Lancez votre propre agent Hermes

Apportez votre clé API, connectez Telegram et obtenez un agent IA auto-améliorant opérationnel en 60 secondes.

Commencer