Progettare un Assistente AI Sicuro per Home Server con n8n, OpenRouter e Telegram

Questo articolo presenta l’architettura e l’implementazione di un assistente AI home server che permette l’interazione in linguaggio naturale con la tua infrastruttura Raspberry Pi. La soluzione utilizza n8n come layer di orchestrazione, OpenRouter (modello DeepSeek) per le capacità LLM, e Telegram come interfaccia utente, con un approccio security-first.

Definizione del Problema

Assistente AI Home Server - Architettura Workflow n8n Telegram
Architettura del Workflow n8n: Telegram AI Assistant

La gestione di un’infrastruttura home server con molteplici progetti Docker richiede frequente accesso SSH per monitoraggio, analisi log e troubleshooting. Gli approcci tradizionali comportano l’apertura di sessioni terminale, ricordare la sintassi dei comandi e navigare strutture di directory. Questo crea attrito, specialmente quando sono necessari controlli rapidi da dispositivi mobili.

L’assistente AI home server doveva soddisfare diversi requisiti:

  • Interfaccia in linguaggio naturale accessibile da qualsiasi dispositivo
  • Esecuzione sicura dei comandi con molteplici livelli di validazione
  • Integrazione con Claude CLI per analisi intelligente del codice
  • Memoria conversazionale per interazioni contestuali
  • Protezione contro operazioni pericolose

Architettura dell’Assistente AI Home Server

L’assistente AI home server implementa un modello di sicurezza defense-in-depth con sei stadi di elaborazione distinti:

┌─────────────────┐     ┌──────────────┐     ┌─────────────┐
│ Telegram Trigger│────▶│ Filtro User  │────▶│  AI Agent   │
│   (Webhook)     │     │ (Auth Gate)  │     │ (DeepSeek)  │
└─────────────────┘     └──────────────┘     └──────┬──────┘
                                                    │
                        ┌───────────────────────────┘
                        ▼
              ┌─────────────────┐
              │ Command Router  │
              │ (Regex Match)   │
              └────────┬────────┘
                       │
         ┌─────────────┴─────────────┐
         ▼                           ▼
┌─────────────────┐         ┌─────────────────┐
│  Input Guard    │         │  Text Response  │
│  (Blocklist)    │         │  (Direct Send)  │
└────────┬────────┘         └─────────────────┘
         │
         ▼
┌─────────────────┐     ┌─────────────────┐     ┌─────────────┐
│  SSH Execute    │────▶│  Output Guard   │────▶│   Telegram  │
│  (Raspberry Pi) │     │ (PII Sanitize)  │     │    Send     │
└─────────────────┘     └─────────────────┘     └─────────────┘

Dettaglio dei Componenti

StadioComponenteScopo
1. EntryTelegram TriggerRicevitore webhook per messaggi in arrivo
2. AuthFiltro OnlyMEValidazione ID utente (singolo utente autorizzato)
3. NLUAI Agent + DeepSeekComprensione linguaggio naturale e generazione comandi
4. RoutingIsCommandClassificazione regex: comando vs conversazione
5. SicurezzaInputGuardBlocklist comandi pericolosi
6. EsecuzioneNodo SSHEsecuzione sicura comandi su host target
7. SanitizzazioneOutputGuardRimozione PII dall’output comandi
8. RispostaTelegram SendConsegna risposta formattata

Stack Tecnologico

Configurazione LLM

L’AI Agent utilizza OpenRouter come gateway LLM, configurato specificamente con il modello deepseek/deepseek-chat. Questa scelta fornisce:

  • Inferenza cost-effective per l’interpretazione comandi
  • Forti capacità di seguire istruzioni
  • Supporto affidabile per tool-calling
  • Risposte a bassa latenza adatte all’uso interattivo

Gestione della Memoria

Il workflow implementa una Buffer Window Memory con una finestra di contesto di 10 messaggi. L’isolamento delle sessioni è ottenuto usando come chiave il chat ID di Telegram, garantendo che il contesto conversazionale persista tra le interazioni rimanendo specifico per utente.

Implementazione della Sicurezza

Layer 1: Autenticazione Utente

Il primo layer di sicurezza valida l’ID utente Telegram contro una whitelist autorizzata. Solo i messaggi dall’ID utente configurato procedono all’AI agent. Tutti gli altri messaggi vengono scartati silenziosamente.

Layer 2: Classificazione Comandi

Un router basato su regex determina se l’output dell’AI rappresenta un comando eseguibile o una risposta testuale:

^(docker|cd |df |free |top |uptime|cat |ls |grep |tail |head |ps |/home/user|sudo )

Layer 3: Guardrails Input

Il nodo InputGuard implementa una blocklist completa per operazioni pericolose:

CategoriaPattern Bloccati
Distruttivirm -rf, rm -r /, shred
Controllo Sistemashutdown, reboot, poweroff, halt
Operazioni Discomkfs, dd if=, >/dev/sd
Escalation Permessipasswd, chmod 777, chown -R root
Esecuzione Remotawget\|bash, curl\|sh, base64 -d\|bash
Reverse Shellnc -e, netcat -e
Fork Bomb:(){ :\|:& };

Layer 4: Sanitizzazione Output

Il nodo OutputGuard applica sanitizzazione PII a tutti gli output dei comandi prima della trasmissione. Questo previene l’esposizione accidentale di chiavi API, password, chiavi private e informazioni personali identificabili.

Integrazione Claude CLI

Una delle funzionalità più potenti è l’integrazione con Claude Code CLI. Quando gli utenti richiedono analisi del codice o spiegazioni di progetti, l’AI genera comandi che invocano Claude CLI nella directory appropriata:

cd /home/user/docker-compose-files/ai_trading && \
  /home/user/.local/bin/claude -p "check for errors in logs and code"

Questo abilita operazioni sofisticate come analisi errori, spiegazione codice, parsing log e audit delle dipendenze.

Conclusione

Questo assistente AI home server dimostra come gli strumenti moderni di orchestrazione AI possono creare interfacce potenti e sicure per la gestione dell’infrastruttura. L’approccio defense-in-depth assicura che anche con la flessibilità del linguaggio naturale, i confini di sicurezza rimangano robusti.


Approfondimenti

Questo articolo è stato scritto con Claude Code CLI di Anthropic.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna in alto