Self-hosting di Hermes Agent su un VPS

14 min di lettura·Matthieu·hermes-agentai-agentself-hostingdockertelegramsystemd|

Deploy di Hermes Agent di Nous Research sul tuo VPS. Crea un utente dedicato, installa con un comando, scegli il provider LLM, collega Telegram e gestisci il tutto come servizio.

Hermes Agent è uno di quei progetti che si muove veloce. Dal lancio nel febbraio 2026, Nous Research ha pubblicato nove release in sette settimane. La v0.9.0 è uscita il 13 aprile ed è tutta un'altra cosa: una dashboard web locale per gestire impostazioni e sessioni dal browser, 16 piattaforme di messaggistica (inclusi iMessage e WeChat), supporto nativo Android/Termux, comandi integrati di backup e import, una modalità veloce per inferenza a bassa latenza e un motore di contesto estensibile. Il progetto è passato da “esperimento interessante” a “agente personale pronto per la produzione” in meno di due mesi.

Farlo girare sul laptop va bene per esperimenti rapidi. Ma un agent che si spegne quando chiudi il coperchio, raggiungibile solo dalla tua tastiera, e che perde il workspace al riavvio non è molto utile a lungo termine. Un VPS risolve tutti e tre i problemi: l'agent resta online 24/7, lo raggiungi da una qualsiasi delle 16 piattaforme sul telefono, e le sue memorie e skill persistono tra le sessioni.

La configurazione è lineare. Avvia una VM, crea un utente non-root per l'isolamento, installa Hermes, scegli modello e gateway, e avvolgi il tutto in un servizio systemd. Questa è l'intera procedura.

Self-hosting di agent AI su un VPS

Perché fare self-hosting adesso? La lezione del vendor lock-in

Il 4 aprile 2026, Anthropic ha tagliato fuori gli agent AI di terze parti dagli abbonamenti Claude Pro e Max. Fino a quel giorno, strumenti come OpenClaw permettevano di eseguire workload agentici pesanti con un canone mensile fisso. Da un giorno all'altro, quegli utenti hanno ricevuto un errore 400 e un avviso di migrazione. Le uniche opzioni rimaste: passare alla fatturazione per token via API (potenzialmente 10 volte il costo per gli utenti intensivi), acquistare pacchetti di utilizzo enterprise, o migrare su Claude Code Channels di Anthropic, un concorrente diretto di OpenClaw lanciato nello stesso mese.

Lo schema è chiaro. Costruisci il tuo workflow sulla piattaforma di un singolo provider, e un cambio di policy può rompere tutto. Gli agent self-hosted come Hermes evitano questa trappola del tutto. Hermes è provider-agnostic: supporta oltre 15 backend di inferenza nativamente, da OpenRouter a Nous Portal fino a un server Ollama locale. Se un provider cambia le condizioni o i prezzi, lo sostituisci con un comando e continui a lavorare. Le tue memorie, skill e sessioni restano sul tuo server, indipendentemente da quale LLM ci sia dietro.

Cos'è Hermes Agent e perché farne il self-hosting?

Hermes Agent è un agent AI open-source (licenza MIT) sviluppato da Nous Research. Si connette a provider LLM, esegue comandi terminale, naviga il web e ricorda quello che impara tra le sessioni. Costruisce skill riutilizzabili dai task che completa e supporta 16 gateway di messaggistica: Telegram, Discord, Slack, WhatsApp, Signal, Matrix, iMessage, WeChat, WeCom, Email, SMS, DingTalk, Feishu, Mattermost, Home Assistant e Webhooks.

Fare self-hosting significa che i tuoi prompt e dati restano sul tuo server. Nessuna piattaforma agent di terze parti vede le tue conversazioni. L'agent gira in modo continuo, costruisce contesto nel tempo e costa solo l'hosting del VPS più le chiamate API LLM che fai.

Di cosa ha bisogno Hermes Agent per girare su un VPS?

Un server Linux con Git installato. È l'unico prerequisito. L'installer scarica automaticamente Python 3.11+, Node.js v22, ripgrep e ffmpeg. Per l'hardware: 2 GB di RAM e 10 GB di disco è il minimo. 4 GB di RAM sono meglio se prevedi di eseguire più sessioni gateway o usare la dashboard web insieme all'agent.

Requisito Minimo Consigliato
OS Ubuntu 22.04 / Debian 12 Ubuntu 24.04
RAM 2 GB 4 GB+
Disco 10 GB liberi 20 GB+
CPU 1 vCPU 2+ vCPU

Prerequisiti

Prima di installare Hermes Agent, configura un utente non-root e un firewall di base. Se hai già un VPS messo in sicurezza, vai direttamente alla sezione installazione.

Creare un utente dedicato

Connettiti al server via SSH come root e crea un utente per Hermes:

adduser hermes --disabled-password --gecos ""
usermod -aG sudo hermes

Assegna a questo utente sudo senza password (necessario per la gestione dei servizi):

echo "hermes ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/hermes
chmod 440 /etc/sudoers.d/hermes

Copia la tua chiave SSH per poter accedere con questo utente:

mkdir -p /home/hermes/.ssh
cp ~/.ssh/authorized_keys /home/hermes/.ssh/
chown -R hermes:hermes /home/hermes/.ssh
chmod 700 /home/hermes/.ssh
chmod 600 /home/hermes/.ssh/authorized_keys

Da questo momento, lavora come utente hermes:

su - hermes

Configurare il firewall

Installa UFW e consenti solo SSH:

sudo apt-get install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw --force enable

Controlla le regole attive:

sudo ufw status verbose

L'output dovrebbe mostrare SSH consentito e tutto il resto del traffico in ingresso negato. Il gateway Hermes fa connessioni in uscita verso l'API di Telegram, quindi non serve aprire porte in ingresso per la messaggistica.

Come installare Hermes Agent su Ubuntu?

Un solo comando. Eseguilo come utente hermes, non come root.

Installazione con un clic

Virtua.Cloud mantiene uno script di installazione chiavi in mano che configura Hermes Agent con persistenza systemd in un colpo solo:

curl -fsSL https://virtua.sh/i/hermes-ssh | bash

Lo script gestisce tutto quello che viene trattato nelle sezioni seguenti: installazione di Hermes e creazione del servizio systemd. Al termine, passa direttamente alla configurazione del provider LLM.

Installazione manuale

Se preferisci installare passo per passo, scarica l'installer upstream e controllalo prima di eseguirlo:

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh -o /tmp/hermes-install.sh
less /tmp/hermes-install.sh

Lo script installa Python 3.11+ via uv, Node.js v22, ripgrep, ffmpeg e il CLI hermes. Quando sei soddisfatto:

bash /tmp/hermes-install.sh

Ricarica la shell per rendere disponibile il comando hermes:

source ~/.bashrc

Controlla la versione installata:

hermes --version

Output atteso:

Hermes Agent v0.9.0 (2026.4.13)
Project: /home/hermes/.hermes/hermes-agent
Python: 3.11.15
...

Esegui lo strumento diagnostico per controllare le dipendenze mancanti:

hermes doctor

Cerca i segni di spunta verdi. Gli avvisi sulle chiavi API non configurate sono normali a questo punto. Le voci rosse relative a Python o Git vanno risolte prima di continuare.

Come configuro il provider LLM?

Hermes Agent non include un modello. Lo colleghi all'API di un provider e paghi per token. Il modo più rapido per configurare tutto è il wizard di setup:

hermes setup

Il wizard ti guida nella scelta del provider, nell'inserimento della chiave API, nell'attivazione degli strumenti e nella configurazione del gateway in un'unica sessione interattiva. Se preferisci configurare ogni pezzo manualmente, continua a leggere. Puoi anche cambiare provider in qualsiasi momento con hermes model.

Opzione 1: OpenRouter (consigliato per iniziare)

Crea un account su openrouter.ai e genera una chiave API.

L'installer ha creato ~/.hermes/.env con un template completo. Prima, restringi i permessi:

chmod 600 ~/.hermes/.env

Apri il file e imposta la tua chiave API sulla riga OPENROUTER_API_KEY=:

nano ~/.hermes/.env

Trova la riga OPENROUTER_API_KEY= e aggiungi la tua chiave dopo il segno =. Salva ed esci (Ctrl+X, poi Y, poi Enter).

Imposta il modello di default:

hermes config set model.provider openrouter
hermes config set model.default anthropic/claude-sonnet-4

Conferma che il file non sia leggibile da altri utenti:

ls -la ~/.hermes/.env

I permessi dovrebbero mostrare -rw------- (600). Solo l'utente hermes può leggere questo file.

Opzione 2: Nous Portal

Nous Research gestisce il proprio portale di inferenza con oltre 400 modelli. Se vuoi restare nell'ecosistema Nous:

hermes config set model.provider nous

Il comando hermes model ti guida nell'autenticazione.

Opzione 3: Endpoint custom compatibile OpenAI

Se gestisci il tuo server di inferenza (Ollama, vLLM, llama.cpp) o usi un altro provider:

echo 'OPENAI_BASE_URL=http://localhost:11434/v1' >> ~/.hermes/.env
echo 'OPENAI_API_KEY=ollama' >> ~/.hermes/.env
echo 'LLM_MODEL=llama3.1:70b' >> ~/.hermes/.env

Confronto provider LLM

Provider Variabile d'ambiente Modello di prezzo Note
OpenRouter OPENROUTER_API_KEY Per-token, varia per modello (vedi prezzi) 200+ modelli, singola chiave
Nous Portal via hermes model Per-token (vedi prezzi) 400+ modelli, integrazione nativa
Anthropic ANTHROPIC_API_KEY Per-token (vedi prezzi) Accesso diretto a Claude
Google AI Studio GOOGLE_API_KEY Per-token (vedi prezzi) Modelli Gemini, nativo dalla v0.8.0
xAI (Grok) XAI_API_KEY Per-token (vedi prezzi) Modelli Grok, nativo dalla v0.9.0
Hugging Face HF_TOKEN Per-token (vedi prezzi) Suite completa di modelli
Ollama (locale) OPENAI_BASE_URL + OPENAI_API_KEY Gratuito (self-hosted) Serve un VPS con GPU per buone prestazioni
vLLM OPENAI_BASE_URL + OPENAI_API_KEY Gratuito (self-hosted) GPU necessaria

Il failover tra provider è integrato dalla v0.6.0. Puoi impostare una catena ordinata di provider in modo che se uno va giù, l'agent passa automaticamente al successivo.

Verifica che la connessione LLM funzioni:

hermes -m "What is 2+2? Reply with just the number."

Se ricevi una risposta, il provider è configurato. Se vedi un errore di autenticazione, ricontrolla la chiave API in ~/.hermes/.env.

Come configuro la modalità di approvazione?

Hermes Agent ha un sistema di approvazione integrato che chiede conferma prima di eseguire comandi potenzialmente pericolosi. Su un server, tienilo attivo:

hermes config set approval_mode ask

Le tre modalità:

  • ask: chiede conferma prima di qualsiasi comando che modifica file, installa pacchetti o tocca la rete. Usa questa. Dalla v0.8.0, Telegram e Slack mostrano pulsanti di approvazione nativi invece di richiedere una risposta digitata.
  • smart: un modello AI valuta il rischio e chiede conferma solo per comandi realmente pericolosi. Più veloce, ma si basa sul giudizio dell'AI.
  • off: nessun controllo. Ogni comando viene eseguito immediatamente. Non usarla su un server.

Come collegare Hermes Agent a Telegram?

Il gateway di messaggistica ti permette di chattare con Hermes dal telefono. Telegram è la configurazione più comune. Il gateway fa connessioni in uscita verso l'API di Telegram, quindi non serve aprire porte in ingresso.

Passo 1: Creare un bot Telegram

Apri Telegram e scrivi a @BotFather. Invia questi comandi:

  1. /newbot
  2. Inserisci un nome per il tuo bot (es. "My Hermes Agent")
  3. Inserisci un username (deve terminare con bot, es. myhermes_agent_bot)

BotFather risponde con un token per il bot. Ha questo formato: 7123456789:AAHx.... Copialo.

Passo 2: Ottenere il tuo Telegram user ID

Scrivi a @userinfobot su Telegram. Risponde con il tuo user ID numerico. Copia questo numero.

Passo 3: Configurare il gateway

Aggiungi il token del bot e il tuo user ID al file di ambiente:

echo 'TELEGRAM_BOT_TOKEN=7123456789:AAHxYourTokenHere' >> ~/.hermes/.env
echo 'TELEGRAM_ALLOWED_USERS=your_numeric_user_id' >> ~/.hermes/.env

La variabile TELEGRAM_ALLOWED_USERS è un controllo di sicurezza. Solo gli user ID elencati qui possono interagire con il tuo bot. Senza di essa, chiunque trovi il tuo bot può inviargli comandi. Separa più ID con virgole.

Passo 4: Testare il gateway

Avvia il gateway in primo piano:

hermes gateway

Invia un messaggio al tuo bot su Telegram. Il messaggio appare nel terminale e una risposta torna indietro. Premi Ctrl+C per fermare il gateway dopo aver confermato che funziona.

Se il bot non risponde, controlla:

  • Il token del bot è corretto in ~/.hermes/.env
  • Il tuo user ID è presente in TELEGRAM_ALLOWED_USERS
  • Il VPS riesce a raggiungere api.telegram.org sulla porta 443 (HTTPS in uscita)

Hermes ora supporta 16 piattaforme. Oltre a Telegram: Discord, Slack, WhatsApp, Signal, Matrix, iMessage (via BlueBubbles), WeChat, WeCom, Email, SMS, DingTalk, Feishu/Lark, Mattermost, Home Assistant e Webhooks. Esegui hermes gateway setup per un wizard interattivo che configura qualsiasi di esse.

Come eseguire Hermes Agent come servizio systemd?

Eseguire hermes gateway in una sessione terminale significa che si ferma quando ti disconnetti. Un servizio systemd utente mantiene il gateway attivo dopo il logout e lo riavvia automaticamente se crasha o il server viene riavviato.

Installare il servizio

Hermes fornisce un comando integrato:

hermes gateway install

Questo crea un file di servizio in ~/.config/systemd/user/hermes-gateway.service e abilita il lingering automaticamente. Il lingering mantiene i servizi utente in esecuzione dopo che ti disconnetti da SSH.

Avvia il servizio e abilitalo all'avvio:

systemctl --user enable --now hermes-gateway

Controlla lo stato del servizio:

systemctl --user status hermes-gateway

Cerca Active: active (running) nell'output. Se dice failed, controlla i log.

Controllare i log

Visualizza i log del gateway in tempo reale:

journalctl --user -u hermes-gateway -f

Premi Ctrl+C per smettere di seguirli. I log del gateway mostrano ogni messaggio in arrivo, chiamata LLM ed esecuzione di tool.

Impostare la directory di lavoro

Per default, il gateway usa la home directory come workspace. Imposta una directory di progetto dedicata:

echo 'MESSAGING_CWD=/home/hermes/projects' >> ~/.hermes/.env
mkdir -p /home/hermes/projects

Riavvia il servizio per applicare:

systemctl --user restart hermes-gateway

Gestire dal browser

Dalla v0.9.0, Hermes include una dashboard web locale. Una volta che il gateway è attivo, aprila con:

hermes dashboard

Questo avvia un'interfaccia nel browser dove puoi gestire le impostazioni, sfogliare sessioni e skill, e configurare gateway senza toccare il terminale. Su un VPS, puoi creare un tunnel SSH per la porta della dashboard e accedervi dalla tua macchina locale.

Come fare il backup dei dati di Hermes Agent?

Hermes salva tutto il suo stato in ~/.hermes/: memorie, skill apprese, cronologia delle sessioni, configurazione, cron job e persona dell’agent. Perderla significa che l’agent dimentica tutto.

Dalla v0.9.0, Hermes ha comandi integrati di backup e ripristino:

hermes backup

Questo crea uno snapshot con timestamp dell’intera directory ~/.hermes/. Per ripristinare sullo stesso server o migrare su uno nuovo:

hermes import /path/to/backup.tar.gz

Per backup giornalieri automatici, programmalo con cron:

(crontab -l 2>/dev/null; echo "0 3 * * * /home/hermes/.local/bin/hermes backup") | crontab -

Per backup fuori dal server, usa rsync per copiare la directory di backup su un’altra macchina o su object storage. Tenere i backup solo sullo stesso VPS non protegge da guasti disco.

Come aggiornare Hermes Agent?

Hermes Agent include un comando di aggiornamento integrato. Prima fai il backup, poi aggiorna:

hermes backup
hermes update

Controlla la nuova versione:

hermes --version

Verifica se ci sono modifiche alla configurazione necessarie dopo l'aggiornamento:

hermes config migrate
hermes doctor

config migrate aggiunge nuove opzioni di configurazione con i loro valori di default. hermes doctor verifica che tutto funzioni ancora.

Riavvia il servizio gateway per eseguire la nuova versione:

systemctl --user restart hermes-gateway
systemctl --user status hermes-gateway

Se qualcosa si rompe dopo un aggiornamento, ripristina dal backup:

systemctl --user stop hermes-gateway
hermes import /path/to/backup.tar.gz
systemctl --user start hermes-gateway

Checklist di hardening della sicurezza

Un agent AI su VPS che esegue comandi terminale richiede attenzione alla sicurezza. Ecco un riepilogo di quello che questa guida ha già configurato e alcuni passi aggiuntivi.

Già configurato in questa guida:

  • Utente non-root (hermes) con home directory dedicata
  • Firewall UFW che nega tutto il traffico in ingresso tranne SSH
  • Chiavi API in ~/.hermes/.env con permessi 600
  • TELEGRAM_ALLOWED_USERS che restringe l'accesso al bot al tuo user ID
  • approval_mode: ask che richiede conferma per comandi pericolosi

Hardening aggiuntivo:

Controlla periodicamente le skill apprese dall'agent:

ls -la ~/.hermes/skills/

Le skill sono script che l'agent scrive e riutilizza. Verificale come faresti con qualsiasi codice in esecuzione sul tuo server.

Monitora i log del gateway per utenti inaspettati o attività insolite:

journalctl --user -u hermes-gateway --since "1 hour ago" --no-pager

Hermes ha rafforzato la sua postura di sicurezza con ogni release: blocco dell'esfiltrazione di secret dalla v0.7.0, MCP OAuth 2.1 con PKCE e protezioni SSRF nella v0.8.0, e prevenzione del path traversal, neutralizzazione dell'iniezione shell e validazione dei webhook Twilio nella v0.9.0. Mantieni l'installazione aggiornata per beneficiare di queste protezioni.

Risoluzione dei problemi

Dalla v0.9.0, puoi eseguire /debug in qualsiasi sessione di chat o hermes debug share dal terminale per generare un report diagnostico. È il modo più rapido per identificare i problemi.

Il gateway non si avvia:

journalctl --user -u hermes-gateway -n 50 --no-pager

Cause comuni: token del bot non valido, chiave API mancante o problemi di rete.

Il bot Telegram non risponde:

Controlla il token del bot e gli utenti autorizzati:

grep TELEGRAM ~/.hermes/.env

Testa la connettività in uscita:

curl -s https://api.telegram.org/bot<YOUR_TOKEN>/getMe

Una risposta valida con le informazioni del tuo bot conferma che token e rete funzionano.

Comando hermes non trovato dopo l'installazione:

source ~/.bashrc

Se ancora non funziona, controlla se ~/.local/bin è nel tuo PATH:

echo $PATH | tr ':' '\n' | grep local

Utilizzo elevato della memoria:

Controlla cosa consuma risorse:

top -bn1 | head -20

Se l'agent genera processi di lunga durata, riduci il carico di lavoro o fai l'upgrade del VPS.

Quanto costa?

Il self-hosting di Hermes Agent su un VPS costa il server più l'utilizzo dell'API LLM. Le due componenti di costo sono:

  • Hosting VPS: un VPS con 2+ vCPU e 4 GB di RAM. Consulta le offerte VPS Virtua.Cloud per i prezzi attuali.
  • Chiamate API LLM: tutti i provider supportati fatturano per token. Il costo mensile dipende dal modello scelto e dalla frequenza d'uso dell'agent. Consulta la pagina prezzi del tuo provider per le tariffe correnti.

Il vero risparmio non è solo finanziario. Possiedi i dati del tuo agent, scegli qualsiasi provider e nessun cambio di policy può bloccarti da un giorno all'altro.

Eseguire Claude Code su un VPS


Copyright 2026 Virtua.Cloud. Tutti i diritti riservati. Questo contenuto è un'opera originale del team Virtua.Cloud. La riproduzione, ripubblicazione o redistribuzione senza autorizzazione scritta è vietata.