Configura Tailscale Serve con HTTPS para entrar en el panel de Hermes Agent solo desde tu red privada, sin Funnel y con el panel en loopback.
Tailscale Serve permite entrar por HTTPS en el panel de Hermes Agent desde los dispositivos autorizados de tu red privada, sin publicarlo en Internet. Es la vía que recomendamos para el día a día: el panel incluye un terminal con permisos de root y así no queda expuesto a Internet. Necesitas Tailscale tanto en el VPS como en el equipo desde el que accedes. No actives Funnel ni expongas directamente el puerto 9119, tampoco en la interfaz de Tailscale.
Antes de empezar
- Completa Cómo empezar con tu VPS Hermes Agent de forma segura y mantén SSH abierto para recuperar el acceso. Si necesitas localizar el VPS o entrar en su panel, consulta Cómo entrar al panel de tu VPS desde el área de cliente.
- Necesitas una cuenta Tailscale y permiso para añadir el VPS a su red privada (tailnet). Su administrador controla los accesos mediante las políticas de red.
- Este ejemplo parte de Ubuntu 24.04 (Noble) sin otra configuración de Serve. No reemplaces un servicio existente sin revisar su uso.
EQUIPO.RED.ts.netrepresenta el nombre HTTPS asignado al VPS por Tailscale: sustitúyelo por el nombre exacto de tu equipo. No es un dominio que debas registrar.- Hermes admite una sola dirección pública para su panel. Si antes seguiste Cómo publicar Hermes Agent en Internet con tu dominio y HTTPS, al terminar esta guía el dominio dejará de dar acceso; elige una de las dos vías.
- En autogestionado realizas estos pasos; en administrado Netebu configura el acceso acordado, pero la autorización de tu cuenta y de HTTPS te corresponde a ti o al administrador de la red.
- Prepara copia según Copias de seguridad, instantáneas y clave SSH en tu VPS. No envíes enlaces de autorización, contraseñas ni claves a soporte.
Paso a paso
- Como root por SSH, añade el repositorio oficial de Tailscale para Noble e instala el paquete. Si ya está configurado, revisa los ficheros existentes antes de sustituirlos:
apt-get update
apt-get install -y ca-certificates curl
install -d -m 755 /usr/share/keyrings
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg -o /usr/share/keyrings/tailscale-archive-keyring.gpg
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list -o /etc/apt/sources.list.d/tailscale.list
apt-get update
apt-get install -y tailscale
systemctl enable --now tailscaled
En todos los bloques de esta guía, ejecuta cada comando solo si el anterior termina correctamente. No continúes con errores de descarga o firma del repositorio.
- Inicia la autorización:
tailscale up
Abre el enlace mostrado en tu navegador privado, inicia sesión en tu cuenta y autoriza el equipo correcto. El enlace es sensible: no lo captures ni compartas. Si la red exige aprobación de dispositivos, espera a que su administrador apruebe el VPS. Este procedimiento no activa el servicio SSH de Tailscale; conserva tu acceso SSH habitual.
- En la consola de administración de Tailscale, comprueba que MagicDNS está habilitado y autoriza los certificados HTTPS si se solicita. Necesitas permisos de administrador. Al emitir certificados, el nombre completo del equipo puede aparecer en registros públicos de transparencia de certificados: evita nombres que revelen datos sensibles. Esto no convierte el servicio en público.
Comprueba el equipo y su nombre DNS con tailscale status. No copies la salida completa a documentación: puede incluir otros equipos e identidades de tu red.
- Guarda una copia privada nueva de la configuración de Hermes, crea usuario y contraseña para el panel y declara su dirección en la tailnet. La pertenencia a la red no sustituye la autenticación del panel. Si ya creaste usuario y contraseña en Cómo publicar Hermes Agent en Internet con tu dominio y HTTPS, omite las líneas de
read,HASHybasic_auth:
COPIA=$(mktemp -d /root/hermes-antes-tailscale.XXXXXX)
chmod 700 "$COPIA"
printf 'Anota esta ruta privada para volver atrás: %s\n' "$COPIA"
cp -a /home/hermes/.hermes/config.yaml "$COPIA/config.yaml"
cd /usr/local/lib/hermes-agent
read -rsp 'Contraseña para el panel: ' HPW; echo
HASH=$(HPW="$HPW" venv/bin/python -c 'import os; from plugins.dashboard_auth.basic import hash_password; print(hash_password(os.environ["HPW"]))')
unset HPW
sudo -u hermes -H hermes config set dashboard.basic_auth.username admin
sudo -u hermes -H hermes config set dashboard.basic_auth.password_hash "$HASH"
sudo -u hermes -H hermes config set dashboard.public_url https://EQUIPO.RED.ts.net
systemctl restart hermes-dashboard.service
La contraseña no se muestra ni se guarda en texto; solo su resumen cifrado. Mantén la escucha del panel en 127.0.0.1.
- Comprueba que no hay otra publicación con
tailscale serve status, y activa Serve:
tailscale serve --bg --https=443 http://127.0.0.1:9119
tailscale serve status
Si solicita habilitar HTTPS, completa la autorización del paso 3 y repite. El destino debe ser loopback y el alcance, solo la tailnet. No actives ninguna opción de publicación pública. Si detectas Funnel habilitado, detente y pide al administrador que retire esa exposición antes de continuar.
Cómo comprobar que ha funcionado
- Desde un dispositivo conectado y autorizado por las políticas de tu tailnet, abre
https://EQUIPO.RED.ts.netsin parámetros. Debe mostrar un certificado válido y la pantalla de inicio de sesión de Hermes. Entra con el usuario y la contraseña del paso 4.
Hermes muestra esta misma pantalla de acceso siempre que declaras una dirección pública, tanto detrás de Tailscale Serve como detrás de nginx.
- Revisa
tailscale serve status: debe indicar acceso limitado a la tailnet, destino local y ninguna publicación Funnel. Comprueba también las políticas de acceso con el administrador; no presupongas que todos los miembros deben poder entrar. - Desde otro dispositivo sin Tailscale ni ruta hacia esa red, la misma URL no debe abrir el servicio. Una prueba dentro de la tailnet no demuestra privacidad por sí sola.
- En el VPS ejecuta
ss -ltn 'sport = :9119': el panel sigue en127.0.0.1. - Si configuraste antes nginx con un dominio, Serve no lo retira. Para un acceso exclusivamente privado, deshabilita ese sitio siguiendo la vuelta atrás de Cómo publicar Hermes Agent en Internet con tu dominio y HTTPS y verifica desde fuera que el dominio ya no sirve Hermes.
Si algo falla
- No resuelve el nombre: comprueba MagicDNS, que el equipo cliente esté conectado y acepte la configuración DNS de Tailscale, y que usas el nombre completo exacto asignado.
- No conecta: revisa aprobación del dispositivo, políticas de red y estado de
tailscaled. No abras el puerto 9119 ni desactives UFW para probar. - Error 400 o petición rechazada:
dashboard.public_urlno coincide con el nombre que usas en el navegador. Revísalo consudo -u hermes -H hermes config get dashboard.public_url: debe ser exactamentehttps://EQUIPO.RED.ts.net, sin barra final. - Volver atrás: si Serve estaba vacío antes de esta guía, ejecuta
tailscale serve resetpara retirar esta publicación; no lo hagas si había otros servicios. Restaura concp -aelconfig.yamlguardado en la ruta privada que anotaste a/home/hermes/.hermes/config.yamly reiniciahermes-dashboard.service. Comprueba el acceso por túnel. Solo si ya no necesitas la conexión Tailscale, ejecutatailscale logoutdesde tu SSH habitual. No borres copias ni revoques otros equipos.