>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Unknown

Come insegnare a n8n a riparare i servizi crashati sul tuo server al posto tuo

Scena familiare: un container con un database o un media server va in crash nel mezzo della notte. Ti svegli con un alert, apri il terminale, controlli i log, riavvii il servizio crashato, e torni a dormire di pessimo umore. Il monitoraggio normale sa solo come inviare messaggi di panico. Vede il sintomo ma non cerca nemmeno di capire le cause.

Il popolare blogger tecnologico NetworkChuck ha rilasciato un repository interessante chiamato n8n-terry-guide. Al suo interno c'è una guida passo-passo per costruire Terry. È un sysadmin virtuale dentro n8n che controlla i servizi, si connette via SSH ai server per esaminare i log, e ti chiede su Telegram il permesso di riavviare.

L'idea sembra divertente, ma dietro c'è un'architettura di agenti pratica che è facile da replicare sul tuo server.

Chi è Terry e perché non è solo un altro bot

Di solito, l'automazione per l'homelab è costruita su script rigidi. Il servizio va in crash — attiva il comando docker restart. Se la porta è occupata da un altro processo, lo script si rompe e inizia a inviare errori in modo continuo.

L'approccio dell'agente LLM funziona in modo diverso. L'autore suggerisce di addestrare il modello come un tirocinante del supporto, espandendo gradualmente le sue responsabilità. Nel repository, l'intero processo è suddiviso in cinque fasi di evoluzione:

  1. Checker base. L'agente effettua un ping a un endpoint HTTP e controlla la presenza di un tag HTML specifico.
  2. Diagnostico. Se il servizio non è disponibile, Terry si connette via SSH, esegue docker ps, recupera il codice di uscita e le ultime righe dei log.
  3. Riparatore automatico. Il modello tenta di riportare su il container crashato e ricontrolla la disponibilità del sito.
  4. Risolutore problemi. L'agente incontra un conflitto di porta, trova il processo responsabile usando le utility di sistema, e prende una decisione.
  5. Human-in-the-Loop. Il modello trova la causa del guasto, forma un piano d'azione, e aspetta la conferma dal proprietario nel messenger.

La caratteristica principale qui è la quinta fase. Nessuna persona sana darebbe a un modello linguistico accesso root senza controllo. Terry può eseguire diagnosi in modo indipendente, ma qualsiasi comando di modifica deve essere approvato.

Come sono collegati gli interni di n8n

Tutta la logica è costruita usando nodi standard di n8n senza scrivere codice TypeScript o Python personalizzato.

Al centro dello schema c'è un nodo AI Agent con un modello GPT-4o-mini collegato e un blocco Simple Memory. Per eseguire comandi sul server, l'autore ha pensato a una soluzione elegante: un subworkflow separato con un nodo SSH.

Quando l'agente ha bisogno di controllare lo stato del sistema, chiama questo sottoprocesso come Tool, passando il comando richiesto:

docker inspect website --format='{{.State.ExitCode}}'
docker logs website --tail 10

Per automatizzare i controlli, viene inserito un Schedule Trigger prima dell'agente, che lancia lo scenario ogni 5 minuti. Per evitare che il dialogo si trasformi in un caos di testo arbitrario, all'output del modello viene utilizzato un Structured Output Parser. L'agente deve restituire JSON in un formato rigorosamente definito:

{
  "website_up": false,
  "message": "Контейнер остановлен из-за нехватки памяти",
  "applied_fix": false,
  "needs_approval": true,
  "commands_requested": "docker start website"
}

Grazie alla struttura rigorosa, il nodo successivo IF o Switch capisce immediatamente se tutto è a posto. Se viene rilevato un guasto, lo scenario invia un messaggio a Telegram con pulsanti di conferma. Premi "Sì" — n8n restituisce il controllo all'agente, e questo esegue la riparazione.

Collegare hardware reale

L'autore non si è limitato a un sito di test su Nginx. La guida include prompt di sistema ed esempi di comandi per quattro sistemi popolari:

  • Hypervisor Proxmox. L'agente ottiene lo stato dei nodi, la lista delle VM tramite pvesh get /nodes, e controlla i container LXC.
  • Apparati di rete UniFi. Richieste alla UniFi Network API per monitorare access point, conteggio client e consumatori di traffico.
  • Network Attached Storage (NAS). Controllo degli attributi SMART dei dischi tramite smartctl, lettura dello stato dell'array RAID da /proc/mdstat, e controllo degli errori critici in journalctl.
  • Server multimediale Plex. Controllo dell'interfaccia web e riavvio corretto quando si blocca.

Per i dischi e il NAS, Terry è configurato per lavorare rigorosamente in modalità sola lettura. Il prompt vieta esplicitamente l'esecuzione di comandi di formattazione, rimontaggio o arresto del pool.

Possibili problemi che potresti incontrare

Se decidi di distribuire uno scenario del genere sul tuo, presta attenzione a un paio di sfumature che spesso vengono dimenticate quando si configurano agenti AI.

Prima di tutto, il limite di iterazioni. Di default, il nodo AI Agent in n8n effettua fino a 10 chiamate di tool per esecuzione. Se l'agente si confonde con l'output di netstat o docker ps, esaurirà rapidamente il limite e andrà in crash con un errore. I prompt devono essere il più specifici possibile, restringendo il campo per gli esperimenti.

Secondo, il passaggio della sessione. Quando viene eseguito su schedule, non hai una chat dal vivo, quindi l'ID della sessione chatId deve essere generato in modo hard in un nodo Edit Fields intermedio prima di inviarlo alla memoria dell'agente. Altrimenti, il contesto dei controlli precedenti andrà perso.

Terzo, la cosiddetta God-Mode. Nel repository c'è un prompt con diritti completi per la correzione automatica di qualsiasi problema. Abilitare questo su un server di produzione non vale assolutamente la pena: il modello può facilmente eliminare un container necessario per liberare una porta occupata.

Vale la pena provare?

Il repository n8n-terry-guide non contiene file di export workflow pronti all'uso — è una raccolta di configurazioni, istruzioni passo-passo e prompt raffinati. Se usi già n8n per esigenze domestiche o lavorative, la guida fornisce un'eccellente struttura per creare un assistente reperibile.

Il progetto piacerà a chi è stanco di alert stupidi e vuole ricevere su Telegram non solo un urlo di "servizio crashato", ma una diagnosi pronta con un pulsante "riparalo". Inizia in piccolo: configura il controllo di un container di test, prova l'integrazione con Telegram, e valuta quanto sia comodo delegare compiti di routine a un modello linguistico.

Progetti correlati