Lasciare che l'IA lo Faccia
Avevo bisogno di un server di sviluppo: VM con accesso SSH e strumenti di sviluppo installati. Ho descritto a Claude Code cosa volevo e l’ho lasciato gestire la configurazione.
Il Prompt
Ho chiesto una VM Vultr con 8 core e 32GB di RAM, accessibile solo tramite Tailscale, con sessioni persistenti che sopravvivono alle interruzioni di rete.
Cosa Ha Costruito Claude Code
1. Ha provisionato la VM tramite API Vultr
Ha creato un’istanza 8-core/32GB Ubuntu, ha atteso l’IP, poi si e connesso via SSH come root.
2. Ha rafforzato SSH
Port 49152 # Porta alta casuale
PermitRootLogin no
PasswordAuthentication no
ListenAddress 100.x.x.x # Solo interfaccia Tailscale
Solo autenticazione basata su chiavi, in ascolto solo sull’interfaccia Tailscale.
3. Ha configurato tre livelli di firewall
- UFW: Nega tutto in entrata eccetto subnet Tailscale
- fail2ban: Banna automaticamente IP dopo tentativi di login falliti
- Firewall Vultr: Blocca tutto a livello hypervisor
4. Ha installato Tailscale con SSH abilitato
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up --ssh --authkey=$TAILSCALE_KEY
Questo crea un secondo percorso SSH tramite il server SSH integrato di Tailscale, indipendente da OpenSSH.
5. Ha installato lo stack di sviluppo
Node.js (tramite nvm), Python (tramite pyenv), Docker e strumenti comuni. Ha configurato Docker per funzionare senza sudo.
6. Ha configurato sessioni persistenti con tmux
Uno script di avvio che si riconnette automaticamente a una sessione esistente, cosi le interruzioni di rete non uccidono i processi in esecuzione.
7. Ha creato script di gestione locali
Script dev-start e dev-stop sul mio laptop che accendono e spengono la VM tramite API Vultr.
Il Blocco
Dopo aver finito, Claude Code ha verificato che il login root fosse disabilitato tentando di connettersi via SSH come root. Il login e fallito. fail2ban ha notato i tentativi falliti e ci ha bannati.
Claude Code aveva configurato SSH Tailscale come percorso secondario. Ha usato tailscale ssh per rientrare e ha eseguito:
fail2ban-client set sshd unbanip 100.x.x.x
Configurazione
Avrai bisogno di:
- Claude Code (o IA simile con uso di strumenti)
- Un account provider cloud (Vultr, DigitalOcean, AWS, etc.)
- Un account Tailscale
Memorizza le chiavi API come variabili d’ambiente e referenziale per nome (es., $VULTR_API_KEY) cosi i segreti non appaiono nella conversazione.
Esempio di prompt:
Crea una VM a 8 core su Vultr, bloccala cosi che sia accessibile solo tramite Tailscale, configura Node/Python/Docker, e dammi script per avviarla e fermarla.