Hermes Agent + Tailscale: accesso remoto sicuro
Raggiungi un Hermes Agent auto-ospitato ovunque senza aprire porte. Installa Tailscale sull'host e sui dispositivi e usa la porta 8642 dalla tailnet.
Smetti di esporre la porta 8642 su internet
Nel momento in cui un Hermes Agent auto-ospitato lascia il tuo portatile e finisce su un VPS, hai una decisione da prendere. Il gateway ascolta sulla porta 8642 e l'istinto naturale è aprire quella porta sul firewall dell'host, così telefono, desktop o l'app Hermes Desktop possono raggiungerla da qualunque posto. Funziona, ed è esattamente la forma sbagliata per un processo che tiene le tue chiavi provider, legge la tua casella email ed esegue comandi shell sull'host.
Una forma migliore è una mesh WireGuard. Installa Tailscale sull'host Hermes e su ogni dispositivo da cui chatti, autentica i due lati sulla stessa tailnet e raggiungi il gateway su http://<hostname>:8642 da qualunque di quei dispositivi, senza nessuna regola di firewall in ingresso sul VPS. Nulla della porta 8642 è raggiungibile da internet pubblica. L'agente è visibile solo alle macchine che hai iscritto esplicitamente alla tua tailnet. Questo è il setup che consigliamo a ogni self-hoster che vuole portare Hermes fuori dalla propria rete locale.
Cos'è davvero Tailscale
Tailscale è una VPN mesh costruita sopra WireGuard. Invece della classica VPN a stella, dove tutto il traffico passa per un concentratore centrale, Tailscale stabilisce tunnel cifrati punto-a-punto tra i dispositivi della tua tailnet, usando un server di coordinamento solo per far incontrare i peer. Quando due dispositivi possono parlare direttamente, lo fanno. Quando non ci riescono perché entrambi sono dietro NAT restrittivi, i pacchetti cadono su relay DERP cifrati che non vedono mai il testo in chiaro.
Per un deploy di Hermes le conseguenze pratiche sono:
- Nessuna regola di firewall in ingresso sull'host. Il gateway continua ad ascoltare su
0.0.0.0:8642dentro il VPS, ma il firewall dell'host non accetta mai una connessione pubblica su quella porta. Tailscale si lega all'interfacciatailscale0, che non è esposta a internet. - Nomi stabili via MagicDNS. Il tuo host Hermes diventa raggiungibile come
http://hermes-vps:8642da qualunque peer della tailnet, indipendentemente dall'IP del VPS sottostante. - Nessuna gestione chiavi. Ogni dispositivo si autentica tramite il tuo provider SSO (Google, GitHub, Okta, Apple o un endpoint OIDC). Aggiungere un telefono nuovo o rimuoverne uno rubato è un'operazione da due clic nella console di amministrazione di Tailscale.
- Gratis per uso personale. Il piano Personal copre fino a 6 utenti e dispositivi illimitati a costo zero, il che è più che sufficiente per un deploy Hermes con un singolo operatore e qualche client.
Se non hai ancora deciso se auto-ospitare l'agente, leggi prima self-hosting vs Hermes Agent gestito. Il resto di questo post assume che tu abbia già un Hermes Agent in Docker in esecuzione su un VPS (la ricetta è nella guida Hermes Agent su Docker) e che tu voglia adesso raggiungerlo in sicurezza dall'esterno.
Prerequisiti
Ti serve:
- Un VPS o una macchina di homelab con Hermes Agent in esecuzione, idealmente in Docker, con il gateway legato a
0.0.0.0:8642dentro il container. - Un account Tailscale gratuito (il piano Personal basta).
- Accesso SSH all'host e accesso amministrativo al telefono o portatile da cui vuoi chattare.
- Il firewall pubblico dell'host configurato per negare la porta 8642 in ingresso. Se l'avevi aperta durante il setup, chiudila prima di continuare. È l'intero senso di questo esercizio.
Passo 1 - Installa Tailscale sull'host Hermes
L'installer da una riga funziona su ogni distribuzione Linux mainstream:
curl -fsSL https://tailscale.com/install.sh | sh
Lo script rileva la tua distribuzione, aggiunge il repository dei pacchetti Tailscale e installa i binari tailscale e tailscaled. Su Debian, Ubuntu, Fedora, Arch e Alpine sceglie il gestore di pacchetti giusto in automatico. Su macOS l'equivalente è brew install tailscale; su Windows scarica l'installer dal sito Tailscale.
Poi avvia il daemon e fai login:
sudo systemctl enable --now tailscaled
sudo tailscale up --ssh
Il flag --ssh abilita anche Tailscale SSH, che ti fa entrare in SSH sull'host attraverso la tailnet usando la tua identità SSO invece di una coppia di chiavi statica. Se hai già un SSH funzionante puoi omettere questo flag; è un upgrade opzionale e reversibile.
tailscale up stampa una URL di login usa-e-getta. Aprila in un browser, autenticati con il tuo provider di identità e l'host entra nella tua tailnet. Prendi il suo IP nella tailnet e il nome MagicDNS:
tailscale ip -4
tailscale status
Vedrai qualcosa come 100.64.1.5 e hermes-vps.tailnet-name.ts.net. Entrambi funzionano come target del gateway.
Passo 2 - Installa Tailscale su telefono e portatile
Installa l'app Tailscale su ogni dispositivo da cui vuoi chattare:
- iOS / Android: installa l'app Tailscale dall'App Store o da Play Store, aprila e fai login con la stessa identità usata sull'host.
- macOS / Windows / desktop Linux: scarica l'installer da
tailscale.com/downloade fai login.
Fatto il login, ogni dispositivo è un peer nella stessa tailnet. Dal browser del telefono, apri http://hermes-vps:8642/health e dovresti ricevere il classico JSON di health. Da un portatile su un'altra Wi-Fi, la stessa URL continua a funzionare. Nessuna porta è stata aperta sul VPS.
Passo 3 - Punta l'app Hermes Desktop al gateway remoto
Se usi l'app Hermes Desktop, imposta la sua URL di gateway sull'indirizzo tailnet dell'host. Nelle impostazioni dell'app, sostituisci il http://localhost:8642 di default con:
http://hermes-vps:8642
Per il tunnel WebSocket del desktop usa lo stesso hostname con l'endpoint websocket --tui. Fissa un HERMES_DASHBOARD_SESSION_TOKEN nel .env del container così il desktop si autentica in modo pulito contro un token stabile invece di uno appena ruotato. Il resto dell'app è agnostica al trasporto; dal suo punto di vista il gateway è su localhost e Tailscale si occupa del routing.
Quando l'app desktop parla con il gateway remoto, tutte le superfici usuali di Hermes (voice mode, skill, tool MCP, task programmati) funzionano esattamente come su un'installazione locale. Vedi il voice mode di Hermes Agent per capire come si presenta la voce su questo stesso setup.
Opzionale: Tailscale Funnel per HTTPS pubblico
Ogni tanto ti serve davvero un target di webhook raggiungibile da internet pubblica: un webhook Stripe, un endpoint slash-command Discord, un webhook Telegram se non usi il long polling. Tailscale Funnel è la via d'uscita. Espone una porta locale della tailnet scelta come endpoint HTTPS pubblico su https://hermes-vps.tailnet-name.ts.net, con Tailscale che provvede a un certificato Let's Encrypt valido per te.
Abilitalo sull'host:
sudo tailscale funnel 8642
Funnel è disattivato di default e per singolo servizio, così puoi aprire un endpoint stretto senza sbloccare tutto il gateway. Se non ti serve mai una URL HTTPS pubblica, salta questo passo e tieni l'agente interamente dentro la tailnet. I dettagli sono nei docs di Tailscale Funnel.
Tailscale vs Cloudflare Tunnel vs firewall e reverse proxy
Tre modi per raggiungere un Hermes Agent auto-ospitato dall'esterno, ordinati per quanto devi pensarci:
| Approccio | Esposizione pubblica | Sforzo di setup | Meglio per |
|---|---|---|---|
| Mesh Tailscale | Nessuna | Basso | Controlli tutti i dispositivi da cui chatti |
| Cloudflare Tunnel | Sì, con auth | Medio | Devi condividere l'agente con utenti esterni |
| Firewall + reverse proxy + auth | Sì | Alto | Vuoi il classico Nginx davanti a tutto |
Cloudflare Tunnel è una via di mezzo ragionevole quando il pubblico non sono solo i tuoi dispositivi, ma espone l'endpoint a tutta internet e si appoggia a Cloudflare Access per l'autenticazione. Firewall più reverse proxy funziona, ma ti porti dietro l'intero stack: TLS, rate limit, middleware di auth, revisione dei log. Tailscale è la via più corta per un agente davvero privato. Consigli di hardening per le due opzioni più esposte sono nella guida sicurezza di Hermes Agent.
L'alternativa gestita
Tailscale è la risposta giusta se sei impegnato con il self-hosting. Sono anche sei pezzi mobili che prima non avevi: un account Tailscale, una dipendenza dal server di coordinamento, il daemon tailscaled su ogni host, una policy per aggiungere e rimuovere dispositivi, nomi MagicDNS da ricordare e un inventario dispositivi da presidiare. Vale la pena per un homelab o un weekend di curiosità, meno ovvio quando ti serve solo un agente personale che risponde ai tuoi messaggi.
Se l'obiettivo è "un agente con cui posso chattare su Telegram ovunque" e non "operare una mesh WireGuard privata", il percorso gestito è la scorciatoia diretta. Inizia con Hermify e il tuo Hermes Agent è online come contatto Telegram in circa un minuto, con memoria che resta tua, senza porte da aprire e senza tailnet da tenere d'occhio. Il dispositivo da cui chatti è il tuo client Telegram di sempre, nessuna configurazione VPN.
Sources
Avvia il tuo Hermes Agent
Porta la tua chiave API, collega Telegram e ottieni un agente IA che migliora da solo, online in 60 secondi.
Inizia ora