Volver al Blog
HermesTailscaleSelf-HostingNetworking

Hermes Agent + Tailscale: Acceso Remoto Seguro

Accede a un Hermes Agent autoalojado desde cualquier sitio sin abrir puertos. Instala Tailscale en el host y en tus dispositivos y usa el puerto 8642 por el tailnet.

Por Hermify Team||8 min de lectura
Una red mesh privada de nodos verdes brillantes sobre un mapa oscuro que evoca un tailnet de Tailscale conectando un host de Hermes Agent con un teléfono y un portátil

Deja de exponer el puerto 8642 a internet

En cuanto un Hermes Agent autoalojado sale de tu portátil y aterriza en un VPS tienes que tomar una decisión. El gateway escucha en el puerto 8642 y el instinto natural es abrir ese puerto en el firewall del host para que tu teléfono, tu escritorio o la app Hermes Desktop puedan llegar a él desde cualquier parte. Funciona, y es exactamente la forma equivocada para un proceso que guarda tus claves de proveedor, lee tu bandeja de entrada y ejecuta comandos de shell en el host.

Una forma mejor es una red mesh de WireGuard. Instala Tailscale en el host de Hermes y en cada dispositivo desde el que hables con él, autentica ambos lados en el mismo tailnet y accede al gateway en http://<hostname>:8642 desde cualquiera de esos dispositivos sin ninguna regla de firewall entrante en el VPS. Nada del puerto 8642 queda expuesto a internet. El agente solo es visible para las máquinas que has iniciado sesión explícitamente en tu tailnet. Este es el montaje que recomendamos a todo autoalojador que planee sacar Hermes de su red local.

Qué es Tailscale en realidad

Tailscale es una VPN mesh construida sobre WireGuard. En lugar de la clásica VPN en estrella donde todo el tráfico pasa por un concentrador central, Tailscale establece túneles cifrados punto a punto entre los dispositivos de tu tailnet, usando un servidor de coordinación solo para que los pares se encuentren. Cuando dos dispositivos pueden hablar directamente, lo hacen. Cuando no pueden porque ambos están detrás de NATs restrictivas, los paquetes caen sobre relays DERP cifrados que nunca ven el texto plano.

Para un despliegue de Hermes las consecuencias prácticas son:

  • Ninguna regla de firewall entrante en el host. El gateway sigue escuchando en 0.0.0.0:8642 dentro del VPS, pero el firewall del host nunca acepta una conexión pública en ese puerto. Tailscale se enlaza a la interfaz tailscale0, que no está expuesta a internet.
  • Nombres estables vía MagicDNS. Tu host de Hermes queda accesible como http://hermes-vps:8642 desde cualquier par del tailnet, independientemente de la IP subyacente del VPS.
  • Sin gestión de claves. Cada dispositivo se autentica con tu proveedor SSO (Google, GitHub, Okta, Apple o un endpoint OIDC). Añadir un teléfono nuevo o quitar uno robado es una operación de dos clics en la consola de administración de Tailscale.
  • Gratis para uso personal. El plan Personal cubre hasta 6 usuarios y dispositivos ilimitados sin coste, lo que encaja cómodamente en un despliegue de Hermes de un solo operador más algunos clientes.

Si aún no has decidido si quieres autoalojar el agente, lee primero autoalojar vs Hermes Agent gestionado. El resto de este artículo asume que ya tienes un Hermes Agent basado en Docker corriendo en un VPS (la receta está en la guía de Hermes Agent en Docker) y ahora quieres llegar a él de forma segura desde fuera.

Requisitos previos

Necesitas:

  • Un VPS o una máquina de homelab corriendo Hermes Agent, idealmente en Docker, con el gateway enlazado a 0.0.0.0:8642 dentro del contenedor.
  • Una cuenta gratuita de Tailscale (el plan Personal sirve).
  • Acceso SSH al host y acceso de administración al teléfono o portátil desde el que quieras hablar con el agente.
  • El firewall público del host configurado para denegar el puerto 8642 entrante. Si lo abriste durante la instalación, ciérralo antes de continuar. Ese es todo el sentido de este ejercicio.

Paso 1 - Instalar Tailscale en el host de Hermes

El instalador de una línea funciona en todas las distribuciones Linux mainstream:

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

El script detecta tu distribución, añade el repositorio de paquetes de Tailscale e instala los binarios tailscale y tailscaled. En Debian, Ubuntu, Fedora, Arch y Alpine elige el gestor de paquetes correcto de forma automática. En macOS el equivalente es brew install tailscale; en Windows, descarga el instalador desde la web de Tailscale.

Luego levanta el demonio e inicia sesión:

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

El flag --ssh habilita además Tailscale SSH, que te deja entrar por SSH al host por el tailnet usando tu identidad SSO en vez de un par de claves estático. Si ya tienes un SSH funcionando puedes omitir este flag; es una mejora opcional y reversible.

tailscale up imprime una URL de inicio de sesión de un solo uso. Ábrela en un navegador, autentícate con tu proveedor de identidad y el host se une a tu tailnet. Toma su IP en el tailnet y su nombre MagicDNS:

tailscale ip -4
tailscale status

Verás algo como 100.64.1.5 y hermes-vps.tailnet-name.ts.net. Ambos valen como destino del gateway.

Paso 2 - Instalar Tailscale en tu teléfono y portátil

Instala la app de Tailscale en cada dispositivo desde el que quieras hablar:

  • iOS / Android: instala la app de Tailscale desde la App Store o Google Play, ábrela e inicia sesión con la misma identidad que usaste en el host.
  • macOS / Windows / escritorio Linux: descarga el instalador desde tailscale.com/download e inicia sesión.

Una vez autenticado, cada dispositivo es un par en el mismo tailnet. Desde el navegador del teléfono, entra a http://hermes-vps:8642/health y deberías obtener el JSON de salud estándar. Desde un portátil en un Wi-Fi distinto, la misma URL sigue funcionando. No se ha abierto ningún puerto en el VPS.

Paso 3 - Apuntar la app Hermes Desktop al gateway remoto

Si usas la app Hermes Desktop, ajusta su URL de gateway a la dirección del tailnet del host. En los ajustes de la app, reemplaza el http://localhost:8642 por defecto por:

http://hermes-vps:8642

Para el túnel WebSocket del escritorio usa el mismo hostname con el endpoint websocket --tui. Fija un HERMES_DASHBOARD_SESSION_TOKEN en el .env del contenedor para que el escritorio se autentique limpiamente contra un token estable y no contra uno que se rota. El resto de la app es agnóstica del transporte; desde su punto de vista el gateway está en localhost y Tailscale se encarga del enrutamiento.

Una vez que la app de escritorio hable con el gateway remoto, todas las superficies habituales de Hermes (modo voz, skills, herramientas MCP, tareas programadas) funcionan exactamente igual que en una instalación local. Mira el modo voz de Hermes Agent para ver cómo se ve la voz sobre este mismo montaje.

Opcional: Tailscale Funnel para HTTPS público

De vez en cuando de verdad necesitas un destino de webhook accesible desde internet: un webhook de Stripe, un endpoint de slash-command de Discord, un webhook de Telegram si no usas long polling. Tailscale Funnel es la vía de escape. Expone un puerto local elegido del tailnet como un endpoint HTTPS público en https://hermes-vps.tailnet-name.ts.net, con Tailscale aprovisionando un certificado válido de Let's Encrypt por ti.

Actívalo en el host:

sudo tailscale funnel 8642

Funnel viene desactivado por defecto y funciona por servicio, así que puedes abrir un solo endpoint sin desbloquear todo el gateway. Si nunca necesitas una URL HTTPS pública, sáltate este paso y mantén el agente enteramente dentro del tailnet. Los detalles están en los docs de Tailscale Funnel.

Tailscale vs Cloudflare Tunnel vs firewall y reverse proxy

Tres formas de llegar a un Hermes Agent autoalojado desde fuera, ordenadas por lo mucho que tienes que pensarlas:

Enfoque Exposición pública Esfuerzo de setup Mejor para
Mesh de Tailscale Ninguna Bajo Controlas todos los dispositivos desde los que hablas
Cloudflare Tunnel Sí, con autenticación Medio Necesitas compartir el agente con usuarios externos
Firewall + reverse proxy + auth Alto Quieres el clásico Nginx delante de todo

Cloudflare Tunnel es un punto medio razonable cuando tu audiencia no son solo tus propios dispositivos, pero expone el endpoint a toda internet y se apoya en Cloudflare Access para la autenticación. Firewall más reverse proxy funciona, pero cargas con toda la pila: TLS, límites de rate, middleware de auth, revisión de logs. Tailscale es el camino más corto a un agente genuinamente privado. Los consejos de hardening para las dos opciones más expuestas están en la guía de seguridad de Hermes Agent.

La alternativa gestionada

Tailscale es la respuesta correcta si estás comprometido con el autoalojamiento. También son seis piezas móviles que antes no tenías: una cuenta de Tailscale, una dependencia del servidor de coordinación, el demonio tailscaled en cada host, una política para añadir y retirar dispositivos, nombres MagicDNS que recordar y un inventario de dispositivos que auditar. Eso compensa para un homelab o un fin de semana curioso, y compensa menos cuando lo único que quieres es un agente personal que conteste tus mensajes.

Si el objetivo es "un agente con el que pueda hablar en Telegram desde cualquier sitio" y no "operar una red mesh privada de WireGuard", el camino gestionado es un atajo directo. Empieza con Hermify y tu Hermes Agent está en línea como contacto de Telegram en cerca de un minuto, con memoria que sigue siendo tuya, sin puertos que abrir y sin tailnet que mantener. El dispositivo desde el que hablas es tu cliente de Telegram de siempre, sin configuración de VPN.

Sources

Lanza tu propio agente Hermes

Trae tu clave de API, conecta Telegram y ten un agente de IA que evoluciona solo activo en 60 segundos.

Empezar