Cómo publicar Hermes Agent en Internet con tu dominio y HTTPS

Solo si lo necesitas y bajo tu responsabilidad: publica el panel de Hermes Agent con tu dominio, HTTPS de Let's Encrypt y contraseña obligatoria.

No lo recomendamos. Tu VPS Hermes Agent se entrega con el panel cerrado a Internet, y así debería quedarse: el panel da control total del servidor, con un terminal que ejecuta órdenes como root. Para el día a día usa Cómo acceder a Hermes Agent de forma privada con Tailscale Serve. Sigue esta guía solo si necesitas expresamente entrar desde cualquier navegador y asumes el riesgo de publicar el panel.

Un dominio con HTTPS permite entrar en el panel de Hermes Agent desde cualquier navegador. nginx recibe la conexión cifrada y la entrega al panel por loopback; el puerto 9119 sigue cerrado desde fuera. Hermes no permite un panel público sin autenticación: al declarar la dirección pública, exige usuario y contraseña.

Antes de empezar

  • Completa Cómo empezar con tu VPS Hermes Agent de forma segura y conserva el túnel SSH como recuperación.
  • Al publicar el panel, cualquiera en Internet puede intentar entrar: la contraseña pasa a ser la única barrera. Usa una contraseña larga y única, no la reutilices y cámbiala si sospechas que se ha filtrado. Hermes limita a 10 los intentos de inicio de sesión por minuto.
  • En administrado, Netebu solo publica el panel a petición expresa del cliente y bajo su responsabilidad.
  • Estos pasos son para un VPS dedicado a Hermes y sin otro nginx configurado. Si ya hay sitios o certificados, no sustituyas su configuración: adapta el cambio con tu administrador.
  • hermes.tudominio.es es un marcador: sustitúyelo en DNS, comandos y configuración por un nombre que controles. Necesitas autorización para modificar su zona DNS.
  • En autogestionado lo haces tú; en administrado Netebu prepara el dominio acordado y tú facilitas las autorizaciones. No envíes contraseñas ni claves en el ticket.
  • Prepara una copia según Copias de seguridad, instantáneas y clave SSH en tu VPS. Para conectarte por SSH, consulta Cómo entrar al panel de tu VPS desde el área de cliente. Todos los comandos se ejecutan como root por SSH.

Paso a paso

  1. Crea un registro A para hermes con la IPv4 del VPS. Añade AAAA solo si tu VPS tiene IPv6 funcional. Un AAAA antiguo puede romper la emisión del certificado aunque A sea correcto. Guarda los valores DNS anteriores para poder volver atrás. Si utilizas un proxy DNS externo, deja inicialmente el registro en modo solo DNS.

Desde tu ordenador comprueba ambos tipos:

dig +short A hermes.tudominio.es
dig +short AAAA hermes.tudominio.es

Deben devolver únicamente las direcciones previstas; AAAA puede estar vacío si no utilizas IPv6. Espera la propagación antes de continuar.

  1. En el VPS, guarda la configuración de Hermes en un directorio privado nuevo e instala nginx y Certbot. No reutilices el nombre de una copia anterior:
COPIA=$(mktemp -d /root/hermes-antes-https.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"
apt-get update
apt-get install -y nginx certbot python3-certbot-nginx
cp -a /etc/nginx "$COPIA/nginx"

La copia puede contener secretos: no la descargues a un lugar público ni la adjuntes a soporte.

  1. Comprueba que no existen /etc/nginx/sites-available/hermes ni /etc/nginx/sites-enabled/hermes; si existen, detente y revisa su contenido. Crea /etc/nginx/sites-available/hermes con este contenido. Mantén literales las variables que empiezan por $:
server {
    listen 80;
    listen [::]:80;
    server_name hermes.tudominio.es;

    location / {
        proxy_pass http://127.0.0.1:9119;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_read_timeout 3600s;
    }
}

Las cabeceras Upgrade y Connection son necesarias para el chat del panel. X-Forwarded-For se sobrescribe con $remote_addr; no uses $proxy_add_x_forwarded_for, que conserva valores enviados por el cliente.

ln -s /etc/nginx/sites-available/hermes /etc/nginx/sites-enabled/hermes
nginx -t && systemctl reload nginx

Todavía no hay contraseña: no abras el panel por el dominio hasta terminar el paso 5.

  1. Solicita el certificado y la redirección a HTTPS:
certbot --nginx --redirect -d hermes.tudominio.es
nginx -t
certbot renew --dry-run
systemctl status certbot.timer --no-pager

Certbot solicita un correo de contacto y aceptar las condiciones. Debe quedar habilitada la renovación automática. No aceptes advertencias del navegador como solución a un certificado incorrecto.

  1. Crea el usuario y la contraseña del panel y declara la dirección pública. La contraseña se pide sin mostrarse y solo se guarda su resumen cifrado (scrypt), nunca el texto:
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://hermes.tudominio.es
systemctl restart hermes-dashboard.service

Usa una contraseña larga y única. Puedes cambiar admin por el usuario que prefieras. La salida de sudo -u hermes -H hermes config set muestra el resumen cifrado, no la contraseña. No cambies la escucha del panel a 0.0.0.0: debe seguir en 127.0.0.1.

Cómo comprobar que ha funcionado

Desde una conexión externa abre https://hermes.tudominio.es sin parámetros: certificado válido y pantalla de inicio de sesión. HTTP debe redirigir a HTTPS. Entra con el usuario y la contraseña del paso 5.

Pantalla de inicio de sesión de Hermes Agent por HTTPS con usuario y contraseña, e indicación Public bind · auth required

Pantalla real del panel publicado con dominio y HTTPS. Sin sesión, Hermes no muestra ningún dato ni permite usar su API.

Desde ese momento el túnel de Cómo empezar con tu VPS Hermes Agent de forma segura también pide usuario y contraseña. En el VPS, comprueba systemctl is-active hermes-dashboard.service, ss -ltn 'sport = :9119' y ufw status verbose: solo debe haber escucha en 127.0.0.1:9119. Desde otro equipo fuera del VPS, nc -vz IP_DEL_VPS 9119 debe fallar; repite con cada IPv4 e IPv6 pública asignada. No añadas una regla de cortafuegos para ese puerto.

Si algo falla

  • Certbot no valida: revisa A y AAAA, propagación y acceso entrante a 80/443. No cambies el panel a escucha pública.
  • 502: comprueba systemctl is-active hermes-dashboard.service y su escucha local. Consulta journalctl -u hermes-dashboard.service -n 50 --no-pager de forma privada.
  • El servicio no arranca tras el paso 5: Hermes se niega a publicar el panel sin autenticación. Revisa que existen dashboard.basic_auth.username y dashboard.basic_auth.password_hash con sudo -u hermes -H hermes config get y que dashboard.public_url es la dirección exacta, con https:// y sin barra final.
  • Contraseña olvidada: repite el paso 5 por SSH; el nuevo resumen sustituye al anterior.
  • Volver atrás: conserva SSH. Mueve el enlace /etc/nginx/sites-enabled/hermes al directorio privado de copia cuya ruta anotaste, ejecuta nginx -t y recarga solo si pasa. Restaura config.yaml con cp -a desde esa ruta a /home/hermes/.hermes/config.yaml y reinicia hermes-dashboard.service. Restaura los valores DNS anteriores y comprueba que el túnel vuelve a funcionar. No borres certificados ni restaures todo nginx si hay otros cambios posteriores.

Relacionados

  • 0 Los Usuarios han Encontrado Esto Útil
¿Fue útil la respuesta?

Artículos Relacionados

¿Cómo gestiono mi servidor VPS?

¿Cómo gestiono mi servidor VPS? En VPS no administrados tú eres el responsable de la...

¿Qué diferencia un VPS de un servidor dedicado?

¿Qué diferencia un VPS de un servidor dedicado? La mayor diferencia es que un servidor dedicado...

¿Qué es un servidor VPS?

¿Qué es un servidor VPS? Un VPS es un Servidor Virtual Privado que se encarga de particionar una...

Ventajas de servidores VPS

Ventajas de servidores VPS A continuación, te explicamos algunas de las grandes ventajas que...

¿Cuál es la diferencia entre un VPS administrado y un VPS no administrado?

¿Cuál es la diferencia entre un VPS administrado y un VPS no administrado? A continuación, te...